vulkano/opt/rustwide/target/x86_64-unknown-linux-gnu/debug/build/vulkano-a34bc2623d154b84/out/
device_extensions.rs

1// This file is auto-generated by vulkano autogen from vk.xml header version 1.3.281.
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)]
6pub 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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.1 or 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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.1 or 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 all of:\n  - Vulkan API version 1.1\n  - Vulkan API version 1.2 or device extension [`ext_descriptor_indexing`](crate::device::DeviceExtensions::ext_descriptor_indexing)\n  - Vulkan API version 1.2 or 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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.1 or device extension [`khr_device_group`](crate::device::DeviceExtensions::khr_device_group)\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_calibrated_timestamps.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
18    pub khr_calibrated_timestamps: bool,
19    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_cooperative_matrix.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
20    pub khr_cooperative_matrix: bool,
21    #[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\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
22    pub khr_copy_commands2: bool,
23    #[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 all of:\n  - Vulkan API version 1.1 or device extension [`khr_multiview`](crate::device::DeviceExtensions::khr_multiview)\n  - Vulkan API version 1.1 or device extension [`khr_maintenance2`](crate::device::DeviceExtensions::khr_maintenance2)"]
24    pub khr_create_renderpass2: bool,
25    #[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 all of:\n  - Vulkan API version 1.1 or device extension [`khr_get_memory_requirements2`](crate::device::DeviceExtensions::khr_get_memory_requirements2)"]
26    pub khr_dedicated_allocation: bool,
27    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_deferred_host_operations.html)"]
28    pub khr_deferred_host_operations: bool,
29    #[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 all of:\n  - Vulkan API version 1.2 or device extension [`khr_create_renderpass2`](crate::device::DeviceExtensions::khr_create_renderpass2)"]
30    pub khr_depth_stencil_resolve: bool,
31    #[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"]
32    pub khr_descriptor_update_template: bool,
33    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_device_group_creation`](crate::instance::InstanceExtensions::khr_device_group_creation)"]
34    pub khr_device_group: bool,
35    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_display_swapchain.html)\n- Requires all of:\n  - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n  - instance extension [`khr_display`](crate::instance::InstanceExtensions::khr_display)"]
36    pub khr_display_swapchain: bool,
37    #[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"]
38    pub khr_draw_indirect_count: bool,
39    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
40    pub khr_driver_properties: bool,
41    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.2 or device extension [`khr_depth_stencil_resolve`](crate::device::DeviceExtensions::khr_depth_stencil_resolve)"]
42    pub khr_dynamic_rendering: bool,
43    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_dynamic_rendering_local_read.html)\n- Requires all of:\n  - Vulkan API version 1.3 or device extension [`khr_dynamic_rendering`](crate::device::DeviceExtensions::khr_dynamic_rendering)"]
44    pub khr_dynamic_rendering_local_read: bool,
45    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_external_fence_capabilities`](crate::instance::InstanceExtensions::khr_external_fence_capabilities)"]
46    pub khr_external_fence: bool,
47    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_fence_fd.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_external_fence`](crate::device::DeviceExtensions::khr_external_fence)"]
48    pub khr_external_fence_fd: bool,
49    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_fence_win32.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_external_fence`](crate::device::DeviceExtensions::khr_external_fence)"]
50    pub khr_external_fence_win32: bool,
51    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_external_memory_capabilities`](crate::instance::InstanceExtensions::khr_external_memory_capabilities)"]
52    pub khr_external_memory: bool,
53    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_memory_fd.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"]
54    pub khr_external_memory_fd: bool,
55    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_memory_win32.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"]
56    pub khr_external_memory_win32: bool,
57    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_external_semaphore_capabilities`](crate::instance::InstanceExtensions::khr_external_semaphore_capabilities)"]
58    pub khr_external_semaphore: bool,
59    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_semaphore_fd.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_external_semaphore`](crate::device::DeviceExtensions::khr_external_semaphore)"]
60    pub khr_external_semaphore_fd: bool,
61    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_external_semaphore_win32.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_external_semaphore`](crate::device::DeviceExtensions::khr_external_semaphore)"]
62    pub khr_external_semaphore_win32: bool,
63    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
64    pub khr_format_feature_flags2: bool,
65    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_fragment_shader_barycentric.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
66    pub khr_fragment_shader_barycentric: bool,
67    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_fragment_shading_rate.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.2 or device extension [`khr_create_renderpass2`](crate::device::DeviceExtensions::khr_create_renderpass2)"]
68    pub khr_fragment_shading_rate: bool,
69    #[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"]
70    pub khr_get_memory_requirements2: bool,
71    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_global_priority.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
72    pub khr_global_priority: bool,
73    #[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"]
74    pub khr_image_format_list: bool,
75    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.1 or device extension [`khr_maintenance2`](crate::device::DeviceExtensions::khr_maintenance2)\n  - Vulkan API version 1.2 or device extension [`khr_image_format_list`](crate::device::DeviceExtensions::khr_image_format_list)"]
76    pub khr_imageless_framebuffer: bool,
77    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_incremental_present.html)\n- Requires all of:\n  - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)"]
78    pub khr_incremental_present: bool,
79    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_index_type_uint8.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
80    pub khr_index_type_uint8: bool,
81    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_line_rasterization.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
82    pub khr_line_rasterization: bool,
83    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_load_store_op_none.html)"]
84    pub khr_load_store_op_none: bool,
85    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_maintenance1.html)\n- Promoted to Vulkan 1.1"]
86    pub khr_maintenance1: bool,
87    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_maintenance2.html)\n- Promoted to Vulkan 1.1"]
88    pub khr_maintenance2: bool,
89    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
90    pub khr_maintenance3: bool,
91    #[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 all of:\n  - Vulkan API version 1.1"]
92    pub khr_maintenance4: bool,
93    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_maintenance5.html)\n- Requires all of:\n  - Vulkan API version 1.1\n  - Vulkan API version 1.3 or device extension [`khr_dynamic_rendering`](crate::device::DeviceExtensions::khr_dynamic_rendering)"]
94    pub khr_maintenance5: bool,
95    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_maintenance6.html)\n- Requires all of:\n  - Vulkan API version 1.1"]
96    pub khr_maintenance6: bool,
97    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_map_memory2.html)"]
98    pub khr_map_memory2: bool,
99    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
100    pub khr_multiview: bool,
101    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_performance_query.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
102    pub khr_performance_query: bool,
103    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_pipeline_executable_properties.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
104    pub khr_pipeline_executable_properties: bool,
105    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_pipeline_library.html)"]
106    pub khr_pipeline_library: bool,
107    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
108    pub khr_portability_subset: bool,
109    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_present_id.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
110    pub khr_present_id: bool,
111    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_present_wait.html)\n- Requires all of:\n  - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n  - device extension [`khr_present_id`](crate::device::DeviceExtensions::khr_present_id)"]
112    pub khr_present_wait: bool,
113    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_push_descriptor.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
114    pub khr_push_descriptor: bool,
115    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_query.html)\n- Requires all of:\n  - Vulkan API version 1.2 or 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)"]
116    pub khr_ray_query: bool,
117    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_maintenance1.html)\n- Requires all of:\n  - device extension [`khr_acceleration_structure`](crate::device::DeviceExtensions::khr_acceleration_structure)"]
118    pub khr_ray_tracing_maintenance1: bool,
119    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_pipeline.html)\n- Requires all of:\n  - Vulkan API version 1.2 or 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)"]
120    pub khr_ray_tracing_pipeline: bool,
121    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_ray_tracing_position_fetch.html)\n- Requires all of:\n  - device extension [`khr_acceleration_structure`](crate::device::DeviceExtensions::khr_acceleration_structure)"]
122    pub khr_ray_tracing_position_fetch: bool,
123    #[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"]
124    pub khr_relaxed_block_layout: bool,
125    #[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"]
126    pub khr_sampler_mirror_clamp_to_edge: bool,
127    #[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 all of:\n  - Vulkan API version 1.1 or device extension [`khr_maintenance1`](crate::device::DeviceExtensions::khr_maintenance1)\n  - Vulkan API version 1.1 or device extension [`khr_bind_memory2`](crate::device::DeviceExtensions::khr_bind_memory2)\n  - Vulkan API version 1.1 or device extension [`khr_get_memory_requirements2`](crate::device::DeviceExtensions::khr_get_memory_requirements2)\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
128    pub khr_sampler_ycbcr_conversion: bool,
129    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.2 or device extension [`khr_create_renderpass2`](crate::device::DeviceExtensions::khr_create_renderpass2)"]
130    pub khr_separate_depth_stencil_layouts: bool,
131    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
132    pub khr_shader_atomic_int64: bool,
133    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_clock.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
134    pub khr_shader_clock: bool,
135    #[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"]
136    pub khr_shader_draw_parameters: bool,
137    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_expect_assume.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
138    pub khr_shader_expect_assume: bool,
139    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
140    pub khr_shader_float16_int8: bool,
141    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
142    pub khr_shader_float_controls: bool,
143    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_float_controls2.html)\n- Requires all of:\n  - Vulkan API version 1.1\n  - Vulkan API version 1.2 or device extension [`khr_shader_float_controls`](crate::device::DeviceExtensions::khr_shader_float_controls)"]
144    pub khr_shader_float_controls2: bool,
145    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
146    pub khr_shader_integer_dot_product: bool,
147    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_maximal_reconvergence.html)\n- Requires all of:\n  - Vulkan API version 1.1"]
148    pub khr_shader_maximal_reconvergence: bool,
149    #[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"]
150    pub khr_shader_non_semantic_info: bool,
151    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_quad_control.html)\n- Requires all of:\n  - Vulkan API version 1.1\n  - Vulkan API version 1.2 or device extension [`khr_vulkan_memory_model`](crate::device::DeviceExtensions::khr_vulkan_memory_model)\n  - device extension [`khr_shader_maximal_reconvergence`](crate::device::DeviceExtensions::khr_shader_maximal_reconvergence)"]
152    pub khr_shader_quad_control: bool,
153    #[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 all of:\n  - Vulkan API version 1.1"]
154    pub khr_shader_subgroup_extended_types: bool,
155    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_subgroup_rotate.html)"]
156    pub khr_shader_subgroup_rotate: bool,
157    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shader_subgroup_uniform_control_flow.html)\n- Requires all of:\n  - Vulkan API version 1.1"]
158    pub khr_shader_subgroup_uniform_control_flow: bool,
159    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
160    pub khr_shader_terminate_invocation: bool,
161    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_shared_presentable_image.html)\n- Requires all of:\n  - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n  - instance extension [`khr_get_surface_capabilities2`](crate::instance::InstanceExtensions::khr_get_surface_capabilities2)\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
162    pub khr_shared_presentable_image: bool,
163    #[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 all of:\n  - Vulkan API version 1.1\n  - Vulkan API version 1.2 or device extension [`khr_shader_float_controls`](crate::device::DeviceExtensions::khr_shader_float_controls)"]
164    pub khr_spirv_1_4: bool,
165    #[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"]
166    pub khr_storage_buffer_storage_class: bool,
167    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html)\n- Requires all of:\n  - instance extension [`khr_surface`](crate::instance::InstanceExtensions::khr_surface)"]
168    pub khr_swapchain: bool,
169    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain_mutable_format.html)\n- Requires all of:\n  - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n  - Vulkan API version 1.1 or device extension [`khr_maintenance2`](crate::device::DeviceExtensions::khr_maintenance2)\n  - Vulkan API version 1.2 or device extension [`khr_image_format_list`](crate::device::DeviceExtensions::khr_image_format_list)"]
170    pub khr_swapchain_mutable_format: bool,
171    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
172    pub khr_synchronization2: bool,
173    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
174    pub khr_timeline_semaphore: bool,
175    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
176    pub khr_uniform_buffer_standard_layout: bool,
177    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.1 or device extension [`khr_storage_buffer_storage_class`](crate::device::DeviceExtensions::khr_storage_buffer_storage_class)"]
178    pub khr_variable_pointers: bool,
179    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_vertex_attribute_divisor.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
180    pub khr_vertex_attribute_divisor: bool,
181    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_decode_av1.html)\n- Requires all of:\n  - device extension [`khr_video_decode_queue`](crate::device::DeviceExtensions::khr_video_decode_queue)"]
182    pub khr_video_decode_av1: bool,
183    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_decode_h264.html)\n- Requires all of:\n  - device extension [`khr_video_decode_queue`](crate::device::DeviceExtensions::khr_video_decode_queue)"]
184    pub khr_video_decode_h264: bool,
185    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_decode_h265.html)\n- Requires all of:\n  - device extension [`khr_video_decode_queue`](crate::device::DeviceExtensions::khr_video_decode_queue)"]
186    pub khr_video_decode_h265: bool,
187    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_decode_queue.html)\n- Requires all of:\n  - device extension [`khr_video_queue`](crate::device::DeviceExtensions::khr_video_queue)\n  - Vulkan API version 1.3 or device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"]
188    pub khr_video_decode_queue: bool,
189    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_encode_h264.html)\n- Requires all of:\n  - device extension [`khr_video_encode_queue`](crate::device::DeviceExtensions::khr_video_encode_queue)"]
190    pub khr_video_encode_h264: bool,
191    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_encode_h265.html)\n- Requires all of:\n  - device extension [`khr_video_encode_queue`](crate::device::DeviceExtensions::khr_video_encode_queue)"]
192    pub khr_video_encode_h265: bool,
193    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_encode_queue.html)\n- Requires all of:\n  - device extension [`khr_video_queue`](crate::device::DeviceExtensions::khr_video_queue)\n  - Vulkan API version 1.3 or device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"]
194    pub khr_video_encode_queue: bool,
195    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_maintenance1.html)\n- Requires all of:\n  - device extension [`khr_video_queue`](crate::device::DeviceExtensions::khr_video_queue)"]
196    pub khr_video_maintenance1: bool,
197    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_queue.html)\n- Requires all of:\n  - Vulkan API version 1.1\n  - Vulkan API version 1.3 or device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"]
198    pub khr_video_queue: bool,
199    #[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\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
200    pub khr_vulkan_memory_model: bool,
201    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_win32_keyed_mutex.html)\n- Requires all of:\n  - device extension [`khr_external_memory_win32`](crate::device::DeviceExtensions::khr_external_memory_win32)"]
202    pub khr_win32_keyed_mutex: bool,
203    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_workgroup_memory_explicit_layout.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
204    pub khr_workgroup_memory_explicit_layout: bool,
205    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
206    pub khr_zero_initialize_workgroup_memory: bool,
207    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
208    pub ext_4444_formats: bool,
209    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_astc_decode_mode.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
210    pub ext_astc_decode_mode: bool,
211    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_attachment_feedback_loop_dynamic_state.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - device extension [`ext_attachment_feedback_loop_layout`](crate::device::DeviceExtensions::ext_attachment_feedback_loop_layout)"]
212    pub ext_attachment_feedback_loop_dynamic_state: bool,
213    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_attachment_feedback_loop_layout.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
214    pub ext_attachment_feedback_loop_layout: bool,
215    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_blend_operation_advanced.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
216    pub ext_blend_operation_advanced: bool,
217    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_border_color_swizzle.html)\n- Requires all of:\n  - device extension [`ext_custom_border_color`](crate::device::DeviceExtensions::ext_custom_border_color)"]
218    pub ext_border_color_swizzle: bool,
219    #[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 all of:\n  - Vulkan API version 1.1 or 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)"]
220    pub ext_buffer_device_address: bool,
221    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_calibrated_timestamps.html)\n- Promoted to [`khr_calibrated_timestamps`](crate::device::DeviceExtensions::khr_calibrated_timestamps)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
222    pub ext_calibrated_timestamps: bool,
223    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_color_write_enable.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
224    pub ext_color_write_enable: bool,
225    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_conditional_rendering.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
226    pub ext_conditional_rendering: bool,
227    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_conservative_rasterization.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
228    pub ext_conservative_rasterization: bool,
229    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_custom_border_color.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
230    pub ext_custom_border_color: bool,
231    #[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 all of:\n  - instance extension [`ext_debug_report`](crate::instance::InstanceExtensions::ext_debug_report)"]
232    pub ext_debug_marker: bool,
233    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_bias_control.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
234    pub ext_depth_bias_control: bool,
235    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_clamp_zero_one.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
236    pub ext_depth_clamp_zero_one: bool,
237    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_clip_control.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
238    pub ext_depth_clip_control: bool,
239    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_clip_enable.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
240    pub ext_depth_clip_enable: bool,
241    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_range_unrestricted.html)"]
242    pub ext_depth_range_unrestricted: bool,
243    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.2 or device extension [`khr_buffer_device_address`](crate::device::DeviceExtensions::khr_buffer_device_address)\n  - Vulkan API version 1.2 or device extension [`ext_descriptor_indexing`](crate::device::DeviceExtensions::ext_descriptor_indexing)\n  - Vulkan API version 1.3 or device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"]
244    pub ext_descriptor_buffer: bool,
245    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.1 or device extension [`khr_maintenance3`](crate::device::DeviceExtensions::khr_maintenance3)"]
246    pub ext_descriptor_indexing: bool,
247    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_device_address_binding_report.html)\n- Requires all of:\n  - Vulkan API version 1.1 or 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)"]
248    pub ext_device_address_binding_report: bool,
249    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_device_fault.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
250    pub ext_device_fault: bool,
251    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_device_memory_report.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
252    pub ext_device_memory_report: bool,
253    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_discard_rectangles.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
254    pub ext_discard_rectangles: bool,
255    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_display_control.html)\n- Requires all of:\n  - instance extension [`ext_display_surface_counter`](crate::instance::InstanceExtensions::ext_display_surface_counter)\n  - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)"]
256    pub ext_display_control: bool,
257    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_dynamic_rendering_unused_attachments.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.3 or device extension [`khr_dynamic_rendering`](crate::device::DeviceExtensions::khr_dynamic_rendering)"]
258    pub ext_dynamic_rendering_unused_attachments: bool,
259    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
260    pub ext_extended_dynamic_state: bool,
261    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
262    pub ext_extended_dynamic_state2: bool,
263    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_extended_dynamic_state3.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
264    pub ext_extended_dynamic_state3: bool,
265    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_external_memory_acquire_unmodified.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"]
266    pub ext_external_memory_acquire_unmodified: bool,
267    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_external_memory_dma_buf.html)\n- Requires all of:\n  - device extension [`khr_external_memory_fd`](crate::device::DeviceExtensions::khr_external_memory_fd)"]
268    pub ext_external_memory_dma_buf: bool,
269    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_external_memory_host.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"]
270    pub ext_external_memory_host: bool,
271    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_filter_cubic.html)"]
272    pub ext_filter_cubic: bool,
273    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_fragment_density_map.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
274    pub ext_fragment_density_map: bool,
275    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_fragment_density_map2.html)\n- Requires all of:\n  - device extension [`ext_fragment_density_map`](crate::device::DeviceExtensions::ext_fragment_density_map)"]
276    pub ext_fragment_density_map2: bool,
277    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_fragment_shader_interlock.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
278    pub ext_fragment_shader_interlock: bool,
279    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_frame_boundary.html)"]
280    pub ext_frame_boundary: bool,
281    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_full_screen_exclusive.html)\n- Requires all of:\n  - Vulkan API version 1.1 or 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)"]
282    pub ext_full_screen_exclusive: bool,
283    #[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)"]
284    pub ext_global_priority: bool,
285    #[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 all of:\n  - device extension [`khr_global_priority`](crate::device::DeviceExtensions::khr_global_priority) or device extension [`ext_global_priority`](crate::device::DeviceExtensions::ext_global_priority)\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
286    pub ext_global_priority_query: bool,
287    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_graphics_pipeline_library.html)\n- Requires all of:\n  - Vulkan API version 1.1 or 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)"]
288    pub ext_graphics_pipeline_library: bool,
289    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_hdr_metadata.html)\n- Requires all of:\n  - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)"]
290    pub ext_hdr_metadata: bool,
291    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_host_image_copy.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.3 or device extension [`khr_copy_commands2`](crate::device::DeviceExtensions::khr_copy_commands2)\n  - Vulkan API version 1.3 or device extension [`khr_format_feature_flags2`](crate::device::DeviceExtensions::khr_format_feature_flags2)"]
292    pub ext_host_image_copy: bool,
293    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
294    pub ext_host_query_reset: bool,
295    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_2d_view_of_3d.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_maintenance1`](crate::device::DeviceExtensions::khr_maintenance1)\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
296    pub ext_image_2d_view_of_3d: bool,
297    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_compression_control.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
298    pub ext_image_compression_control: bool,
299    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_compression_control_swapchain.html)\n- Requires all of:\n  - device extension [`ext_image_compression_control`](crate::device::DeviceExtensions::ext_image_compression_control)"]
300    pub ext_image_compression_control_swapchain: bool,
301    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_drm_format_modifier.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_bind_memory2`](crate::device::DeviceExtensions::khr_bind_memory2)\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.1 or device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)\n  - Vulkan API version 1.2 or device extension [`khr_image_format_list`](crate::device::DeviceExtensions::khr_image_format_list)"]
302    pub ext_image_drm_format_modifier: bool,
303    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
304    pub ext_image_robustness: bool,
305    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_sliced_view_of_3d.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_maintenance1`](crate::device::DeviceExtensions::khr_maintenance1)\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
306    pub ext_image_sliced_view_of_3d: bool,
307    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_view_min_lod.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
308    pub ext_image_view_min_lod: bool,
309    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_index_type_uint8.html)\n- Promoted to [`khr_index_type_uint8`](crate::device::DeviceExtensions::khr_index_type_uint8)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
310    pub ext_index_type_uint8: bool,
311    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.1 or device extension [`khr_maintenance1`](crate::device::DeviceExtensions::khr_maintenance1)"]
312    pub ext_inline_uniform_block: bool,
313    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_legacy_dithering.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
314    pub ext_legacy_dithering: bool,
315    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_line_rasterization.html)\n- Promoted to [`khr_line_rasterization`](crate::device::DeviceExtensions::khr_line_rasterization)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
316    pub ext_line_rasterization: bool,
317    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_load_store_op_none.html)\n- Promoted to [`khr_load_store_op_none`](crate::device::DeviceExtensions::khr_load_store_op_none)"]
318    pub ext_load_store_op_none: bool,
319    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_map_memory_placed.html)\n- Requires all of:\n  - device extension [`khr_map_memory2`](crate::device::DeviceExtensions::khr_map_memory2)"]
320    pub ext_map_memory_placed: bool,
321    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_memory_budget.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
322    pub ext_memory_budget: bool,
323    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_memory_priority.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
324    pub ext_memory_priority: bool,
325    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_mesh_shader.html)\n- Requires all of:\n  - Vulkan API version 1.2 or device extension [`khr_spirv_1_4`](crate::device::DeviceExtensions::khr_spirv_1_4)"]
326    pub ext_mesh_shader: bool,
327    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_metal_objects.html)"]
328    pub ext_metal_objects: bool,
329    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_multi_draw.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
330    pub ext_multi_draw: bool,
331    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_multisampled_render_to_single_sampled.html)\n- Requires all of:\n  - Vulkan API version 1.2 or device extension [`khr_create_renderpass2`](crate::device::DeviceExtensions::khr_create_renderpass2)\n  - Vulkan API version 1.2 or device extension [`khr_depth_stencil_resolve`](crate::device::DeviceExtensions::khr_depth_stencil_resolve)"]
332    pub ext_multisampled_render_to_single_sampled: bool,
333    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_mutable_descriptor_type.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_maintenance3`](crate::device::DeviceExtensions::khr_maintenance3)"]
334    pub ext_mutable_descriptor_type: bool,
335    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_nested_command_buffer.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
336    pub ext_nested_command_buffer: bool,
337    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_non_seamless_cube_map.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
338    pub ext_non_seamless_cube_map: bool,
339    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_opacity_micromap.html)\n- Requires all of:\n  - device extension [`khr_acceleration_structure`](crate::device::DeviceExtensions::khr_acceleration_structure)\n  - Vulkan API version 1.3 or device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"]
340    pub ext_opacity_micromap: bool,
341    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pageable_device_local_memory.html)\n- Requires all of:\n  - device extension [`ext_memory_priority`](crate::device::DeviceExtensions::ext_memory_priority)"]
342    pub ext_pageable_device_local_memory: bool,
343    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pci_bus_info.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
344    pub ext_pci_bus_info: bool,
345    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_physical_device_drm.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
346    pub ext_physical_device_drm: bool,
347    #[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\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
348    pub ext_pipeline_creation_cache_control: bool,
349    #[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"]
350    pub ext_pipeline_creation_feedback: bool,
351    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pipeline_library_group_handles.html)\n- Requires all of:\n  - device extension [`khr_ray_tracing_pipeline`](crate::device::DeviceExtensions::khr_ray_tracing_pipeline)\n  - device extension [`khr_pipeline_library`](crate::device::DeviceExtensions::khr_pipeline_library)"]
352    pub ext_pipeline_library_group_handles: bool,
353    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pipeline_properties.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
354    pub ext_pipeline_properties: bool,
355    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pipeline_protected_access.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
356    pub ext_pipeline_protected_access: bool,
357    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_pipeline_robustness.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
358    pub ext_pipeline_robustness: bool,
359    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_post_depth_coverage.html)"]
360    pub ext_post_depth_coverage: bool,
361    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_primitive_topology_list_restart.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
362    pub ext_primitive_topology_list_restart: bool,
363    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_primitives_generated_query.html)\n- Requires all of:\n  - device extension [`ext_transform_feedback`](crate::device::DeviceExtensions::ext_transform_feedback)"]
364    pub ext_primitives_generated_query: bool,
365    #[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\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
366    pub ext_private_data: bool,
367    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_provoking_vertex.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
368    pub ext_provoking_vertex: bool,
369    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_queue_family_foreign.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"]
370    pub ext_queue_family_foreign: bool,
371    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_rasterization_order_attachment_access.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
372    pub ext_rasterization_order_attachment_access: bool,
373    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_rgba10x6_formats.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)"]
374    pub ext_rgba10x6_formats: bool,
375    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_robustness2.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
376    pub ext_robustness2: bool,
377    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_sample_locations.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
378    pub ext_sample_locations: bool,
379    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
380    pub ext_sampler_filter_minmax: bool,
381    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
382    pub ext_scalar_block_layout: bool,
383    #[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"]
384    pub ext_separate_stencil_usage: bool,
385    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_atomic_float.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
386    pub ext_shader_atomic_float: bool,
387    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_atomic_float2.html)\n- Requires all of:\n  - device extension [`ext_shader_atomic_float`](crate::device::DeviceExtensions::ext_shader_atomic_float)"]
388    pub ext_shader_atomic_float2: bool,
389    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
390    pub ext_shader_demote_to_helper_invocation: bool,
391    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_image_atomic_int64.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
392    pub ext_shader_image_atomic_int64: bool,
393    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_module_identifier.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.3 or device extension [`ext_pipeline_creation_cache_control`](crate::device::DeviceExtensions::ext_pipeline_creation_cache_control)"]
394    pub ext_shader_module_identifier: bool,
395    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_object.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.3 or device extension [`khr_dynamic_rendering`](crate::device::DeviceExtensions::khr_dynamic_rendering)"]
396    pub ext_shader_object: bool,
397    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_stencil_export.html)"]
398    pub ext_shader_stencil_export: bool,
399    #[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"]
400    pub ext_shader_subgroup_ballot: bool,
401    #[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"]
402    pub ext_shader_subgroup_vote: bool,
403    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_tile_image.html)\n- Requires all of:\n  - Vulkan API version 1.3"]
404    pub ext_shader_tile_image: bool,
405    #[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"]
406    pub ext_shader_viewport_index_layer: bool,
407    #[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 all of:\n  - Vulkan API version 1.1"]
408    pub ext_subgroup_size_control: bool,
409    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_subpass_merge_feedback.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
410    pub ext_subpass_merge_feedback: bool,
411    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_swapchain_maintenance1.html)\n- Requires all of:\n  - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n  - instance extension [`ext_surface_maintenance1`](crate::instance::InstanceExtensions::ext_surface_maintenance1)\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
412    pub ext_swapchain_maintenance1: bool,
413    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
414    pub ext_texel_buffer_alignment: bool,
415    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
416    pub ext_texture_compression_astc_hdr: bool,
417    #[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"]
418    pub ext_tooling_info: bool,
419    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_transform_feedback.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
420    pub ext_transform_feedback: bool,
421    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_validation_cache.html)"]
422    pub ext_validation_cache: bool,
423    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_vertex_attribute_divisor.html)\n- Promoted to [`khr_vertex_attribute_divisor`](crate::device::DeviceExtensions::khr_vertex_attribute_divisor)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
424    pub ext_vertex_attribute_divisor: bool,
425    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_vertex_input_dynamic_state.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
426    pub ext_vertex_input_dynamic_state: bool,
427    #[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 all of:\n  - Vulkan API version 1.1 or device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)"]
428    pub ext_ycbcr_2plane_444_formats: bool,
429    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_ycbcr_image_arrays.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)"]
430    pub ext_ycbcr_image_arrays: bool,
431    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMDX_shader_enqueue.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.3 or device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)\n  - device extension [`khr_pipeline_library`](crate::device::DeviceExtensions::khr_pipeline_library)\n  - Vulkan API version 1.2 or device extension [`khr_spirv_1_4`](crate::device::DeviceExtensions::khr_spirv_1_4)"]
432    pub amdx_shader_enqueue: bool,
433    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_buffer_marker.html)"]
434    pub amd_buffer_marker: bool,
435    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_device_coherent_memory.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
436    pub amd_device_coherent_memory: bool,
437    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_display_native_hdr.html)\n- Requires all of:\n  - Vulkan API version 1.1 or 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)"]
438    pub amd_display_native_hdr: bool,
439    #[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)"]
440    pub amd_draw_indirect_count: bool,
441    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_gcn_shader.html)"]
442    pub amd_gcn_shader: bool,
443    #[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)"]
444    pub amd_gpu_shader_half_float: bool,
445    #[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)"]
446    pub amd_gpu_shader_int16: bool,
447    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_memory_overallocation_behavior.html)"]
448    pub amd_memory_overallocation_behavior: bool,
449    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_mixed_attachment_samples.html)"]
450    pub amd_mixed_attachment_samples: bool,
451    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_pipeline_compiler_control.html)"]
452    pub amd_pipeline_compiler_control: bool,
453    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_rasterization_order.html)"]
454    pub amd_rasterization_order: bool,
455    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_ballot.html)"]
456    pub amd_shader_ballot: bool,
457    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_core_properties.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
458    pub amd_shader_core_properties: bool,
459    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_core_properties2.html)\n- Requires all of:\n  - device extension [`amd_shader_core_properties`](crate::device::DeviceExtensions::amd_shader_core_properties)"]
460    pub amd_shader_core_properties2: bool,
461    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_early_and_late_fragment_tests.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
462    pub amd_shader_early_and_late_fragment_tests: bool,
463    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_explicit_vertex_parameter.html)"]
464    pub amd_shader_explicit_vertex_parameter: bool,
465    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_fragment_mask.html)"]
466    pub amd_shader_fragment_mask: bool,
467    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_image_load_store_lod.html)"]
468    pub amd_shader_image_load_store_lod: bool,
469    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_info.html)"]
470    pub amd_shader_info: bool,
471    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_shader_trinary_minmax.html)"]
472    pub amd_shader_trinary_minmax: bool,
473    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_AMD_texture_gather_bias_lod.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
474    pub amd_texture_gather_bias_lod: bool,
475    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_ANDROID_external_format_resolve.html)\n- Requires all of:\n  - device extension [`android_external_memory_android_hardware_buffer`](crate::device::DeviceExtensions::android_external_memory_android_hardware_buffer)"]
476    pub android_external_format_resolve: bool,
477    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_ANDROID_external_memory_android_hardware_buffer.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)\n  - Vulkan API version 1.1 or device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)\n  - Vulkan API version 1.1 or device extension [`khr_dedicated_allocation`](crate::device::DeviceExtensions::khr_dedicated_allocation)\n  - device extension [`ext_queue_family_foreign`](crate::device::DeviceExtensions::ext_queue_family_foreign)"]
478    pub android_external_memory_android_hardware_buffer: bool,
479    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
480    pub arm_rasterization_order_attachment_access: bool,
481    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_ARM_render_pass_striped.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.3 or device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"]
482    pub arm_render_pass_striped: bool,
483    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_ARM_scheduling_controls.html)\n- Requires all of:\n  - device extension [`arm_shader_core_builtins`](crate::device::DeviceExtensions::arm_shader_core_builtins)"]
484    pub arm_scheduling_controls: bool,
485    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_ARM_shader_core_builtins.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
486    pub arm_shader_core_builtins: bool,
487    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_ARM_shader_core_properties.html)\n- Requires all of:\n  - Vulkan API version 1.1"]
488    pub arm_shader_core_properties: bool,
489    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_FUCHSIA_buffer_collection.html)\n- Requires all of:\n  - device extension [`fuchsia_external_memory`](crate::device::DeviceExtensions::fuchsia_external_memory)\n  - Vulkan API version 1.1 or device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)"]
490    pub fuchsia_buffer_collection: bool,
491    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_FUCHSIA_external_memory.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_external_memory_capabilities`](crate::instance::InstanceExtensions::khr_external_memory_capabilities)\n  - Vulkan API version 1.1 or device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"]
492    pub fuchsia_external_memory: bool,
493    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_FUCHSIA_external_semaphore.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_external_semaphore_capabilities`](crate::instance::InstanceExtensions::khr_external_semaphore_capabilities)\n  - Vulkan API version 1.1 or device extension [`khr_external_semaphore`](crate::device::DeviceExtensions::khr_external_semaphore)"]
494    pub fuchsia_external_semaphore: bool,
495    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GGP_frame_token.html)\n- Requires all of:\n  - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)\n  - instance extension [`ggp_stream_descriptor_surface`](crate::instance::InstanceExtensions::ggp_stream_descriptor_surface)"]
496    pub ggp_frame_token: bool,
497    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GOOGLE_decorate_string.html)"]
498    pub google_decorate_string: bool,
499    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GOOGLE_display_timing.html)\n- Requires all of:\n  - device extension [`khr_swapchain`](crate::device::DeviceExtensions::khr_swapchain)"]
500    pub google_display_timing: bool,
501    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GOOGLE_hlsl_functionality1.html)"]
502    pub google_hlsl_functionality1: bool,
503    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_GOOGLE_user_type.html)"]
504    pub google_user_type: bool,
505    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_HUAWEI_cluster_culling_shader.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
506    pub huawei_cluster_culling_shader: bool,
507    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_HUAWEI_invocation_mask.html)\n- Requires all of:\n  - device extension [`khr_ray_tracing_pipeline`](crate::device::DeviceExtensions::khr_ray_tracing_pipeline)\n  - Vulkan API version 1.3 or device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"]
508    pub huawei_invocation_mask: bool,
509    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_HUAWEI_subpass_shading.html)\n- Requires all of:\n  - Vulkan API version 1.2 or device extension [`khr_create_renderpass2`](crate::device::DeviceExtensions::khr_create_renderpass2)\n  - Vulkan API version 1.3 or device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"]
510    pub huawei_subpass_shading: bool,
511    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_IMG_filter_cubic.html)"]
512    pub img_filter_cubic: bool,
513    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_IMG_format_pvrtc.html)\n- Deprecated without a replacement"]
514    pub img_format_pvrtc: bool,
515    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_IMG_relaxed_line_rasterization.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
516    pub img_relaxed_line_rasterization: bool,
517    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_INTEL_performance_query.html)"]
518    pub intel_performance_query: bool,
519    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_INTEL_shader_integer_functions2.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
520    pub intel_shader_integer_functions2: bool,
521    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_MSFT_layered_driver.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
522    pub msft_layered_driver: bool,
523    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NVX_binary_import.html)"]
524    pub nvx_binary_import: bool,
525    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NVX_image_view_handle.html)"]
526    pub nvx_image_view_handle: bool,
527    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NVX_multiview_per_view_attributes.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_multiview`](crate::device::DeviceExtensions::khr_multiview)"]
528    pub nvx_multiview_per_view_attributes: bool,
529    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_acquire_winrt_display.html)\n- Requires all of:\n  - instance extension [`ext_direct_mode_display`](crate::instance::InstanceExtensions::ext_direct_mode_display)"]
530    pub nv_acquire_winrt_display: bool,
531    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_clip_space_w_scaling.html)"]
532    pub nv_clip_space_w_scaling: bool,
533    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_compute_shader_derivatives.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
534    pub nv_compute_shader_derivatives: bool,
535    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_cooperative_matrix.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
536    pub nv_cooperative_matrix: bool,
537    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_copy_memory_indirect.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.2 or device extension [`khr_buffer_device_address`](crate::device::DeviceExtensions::khr_buffer_device_address)"]
538    pub nv_copy_memory_indirect: bool,
539    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_corner_sampled_image.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
540    pub nv_corner_sampled_image: bool,
541    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_coverage_reduction_mode.html)\n- Requires all of:\n  - device extension [`nv_framebuffer_mixed_samples`](crate::device::DeviceExtensions::nv_framebuffer_mixed_samples)\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
542    pub nv_coverage_reduction_mode: bool,
543    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_cuda_kernel_launch.html)"]
544    pub nv_cuda_kernel_launch: bool,
545    #[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)"]
546    pub nv_dedicated_allocation: bool,
547    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_dedicated_allocation_image_aliasing.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_dedicated_allocation`](crate::device::DeviceExtensions::khr_dedicated_allocation)\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
548    pub nv_dedicated_allocation_image_aliasing: bool,
549    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_descriptor_pool_overallocation.html)\n- Requires all of:\n  - Vulkan API version 1.1"]
550    pub nv_descriptor_pool_overallocation: bool,
551    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_device_diagnostic_checkpoints.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
552    pub nv_device_diagnostic_checkpoints: bool,
553    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_device_diagnostics_config.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
554    pub nv_device_diagnostics_config: bool,
555    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_device_generated_commands.html)\n- Requires all of:\n  - Vulkan API version 1.1\n  - Vulkan API version 1.2 or device extension [`khr_buffer_device_address`](crate::device::DeviceExtensions::khr_buffer_device_address)"]
556    pub nv_device_generated_commands: bool,
557    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_device_generated_commands_compute.html)\n- Requires all of:\n  - device extension [`nv_device_generated_commands`](crate::device::DeviceExtensions::nv_device_generated_commands)"]
558    pub nv_device_generated_commands_compute: bool,
559    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_displacement_micromap.html)\n- Requires all of:\n  - device extension [`ext_opacity_micromap`](crate::device::DeviceExtensions::ext_opacity_micromap)"]
560    pub nv_displacement_micromap: bool,
561    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_extended_sparse_address_space.html)"]
562    pub nv_extended_sparse_address_space: bool,
563    #[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 all of:\n  - instance extension [`nv_external_memory_capabilities`](crate::instance::InstanceExtensions::nv_external_memory_capabilities)"]
564    pub nv_external_memory: bool,
565    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_external_memory_rdma.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)"]
566    pub nv_external_memory_rdma: bool,
567    #[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 all of:\n  - device extension [`nv_external_memory`](crate::device::DeviceExtensions::nv_external_memory)"]
568    pub nv_external_memory_win32: bool,
569    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_fill_rectangle.html)"]
570    pub nv_fill_rectangle: bool,
571    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_fragment_coverage_to_color.html)"]
572    pub nv_fragment_coverage_to_color: bool,
573    #[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 all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
574    pub nv_fragment_shader_barycentric: bool,
575    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_fragment_shading_rate_enums.html)\n- Requires all of:\n  - device extension [`khr_fragment_shading_rate`](crate::device::DeviceExtensions::khr_fragment_shading_rate)"]
576    pub nv_fragment_shading_rate_enums: bool,
577    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_framebuffer_mixed_samples.html)"]
578    pub nv_framebuffer_mixed_samples: bool,
579    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_geometry_shader_passthrough.html)"]
580    pub nv_geometry_shader_passthrough: bool,
581    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_glsl_shader.html)\n- Deprecated without a replacement"]
582    pub nv_glsl_shader: bool,
583    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_inherited_viewport_scissor.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
584    pub nv_inherited_viewport_scissor: bool,
585    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_linear_color_attachment.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
586    pub nv_linear_color_attachment: bool,
587    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_low_latency.html)"]
588    pub nv_low_latency: bool,
589    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_low_latency2.html)\n- Requires all of:\n  - Vulkan API version 1.2 or device extension [`khr_timeline_semaphore`](crate::device::DeviceExtensions::khr_timeline_semaphore)"]
590    pub nv_low_latency2: bool,
591    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_memory_decompression.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.2 or device extension [`khr_buffer_device_address`](crate::device::DeviceExtensions::khr_buffer_device_address)"]
592    pub nv_memory_decompression: bool,
593    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_mesh_shader.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
594    pub nv_mesh_shader: bool,
595    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_optical_flow.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.3 or device extension [`khr_format_feature_flags2`](crate::device::DeviceExtensions::khr_format_feature_flags2)\n  - Vulkan API version 1.3 or device extension [`khr_synchronization2`](crate::device::DeviceExtensions::khr_synchronization2)"]
596    pub nv_optical_flow: bool,
597    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_per_stage_descriptor_set.html)\n- Requires all of:\n  - device extension [`khr_maintenance6`](crate::device::DeviceExtensions::khr_maintenance6)"]
598    pub nv_per_stage_descriptor_set: bool,
599    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_present_barrier.html)\n- Requires all of:\n  - Vulkan API version 1.1 or 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)"]
600    pub nv_present_barrier: bool,
601    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_raw_access_chains.html)"]
602    pub nv_raw_access_chains: bool,
603    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_ray_tracing.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)\n  - Vulkan API version 1.1 or device extension [`khr_get_memory_requirements2`](crate::device::DeviceExtensions::khr_get_memory_requirements2)"]
604    pub nv_ray_tracing: bool,
605    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_ray_tracing_invocation_reorder.html)\n- Requires all of:\n  - device extension [`khr_ray_tracing_pipeline`](crate::device::DeviceExtensions::khr_ray_tracing_pipeline)"]
606    pub nv_ray_tracing_invocation_reorder: bool,
607    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_ray_tracing_motion_blur.html)\n- Requires all of:\n  - device extension [`khr_ray_tracing_pipeline`](crate::device::DeviceExtensions::khr_ray_tracing_pipeline)"]
608    pub nv_ray_tracing_motion_blur: bool,
609    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_ray_tracing_validation.html)"]
610    pub nv_ray_tracing_validation: bool,
611    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_representative_fragment_test.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
612    pub nv_representative_fragment_test: bool,
613    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_sample_mask_override_coverage.html)"]
614    pub nv_sample_mask_override_coverage: bool,
615    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_scissor_exclusive.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
616    pub nv_scissor_exclusive: bool,
617    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_shader_atomic_float16_vector.html)"]
618    pub nv_shader_atomic_float16_vector: bool,
619    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_shader_image_footprint.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
620    pub nv_shader_image_footprint: bool,
621    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_shader_sm_builtins.html)\n- Requires all of:\n  - Vulkan API version 1.1"]
622    pub nv_shader_sm_builtins: bool,
623    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_shader_subgroup_partitioned.html)\n- Requires all of:\n  - Vulkan API version 1.1"]
624    pub nv_shader_subgroup_partitioned: bool,
625    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_shading_rate_image.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
626    pub nv_shading_rate_image: bool,
627    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_viewport_array2.html)"]
628    pub nv_viewport_array2: bool,
629    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_viewport_swizzle.html)"]
630    pub nv_viewport_swizzle: bool,
631    #[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 all of:\n  - device extension [`nv_external_memory_win32`](crate::device::DeviceExtensions::nv_external_memory_win32)"]
632    pub nv_win32_keyed_mutex: bool,
633    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_filter_cubic_clamp.html)\n- Requires all of:\n  - device extension [`ext_filter_cubic`](crate::device::DeviceExtensions::ext_filter_cubic)\n  - Vulkan API version 1.2 or device extension [`ext_sampler_filter_minmax`](crate::device::DeviceExtensions::ext_sampler_filter_minmax)"]
634    pub qcom_filter_cubic_clamp: bool,
635    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_filter_cubic_weights.html)\n- Requires all of:\n  - device extension [`ext_filter_cubic`](crate::device::DeviceExtensions::ext_filter_cubic)"]
636    pub qcom_filter_cubic_weights: bool,
637    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_fragment_density_map_offset.html)\n- Requires all of:\n  - Vulkan API version 1.1 or 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)"]
638    pub qcom_fragment_density_map_offset: bool,
639    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_image_processing.html)\n- Requires all of:\n  - Vulkan API version 1.3 or device extension [`khr_format_feature_flags2`](crate::device::DeviceExtensions::khr_format_feature_flags2)"]
640    pub qcom_image_processing: bool,
641    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_image_processing2.html)\n- Requires all of:\n  - device extension [`qcom_image_processing`](crate::device::DeviceExtensions::qcom_image_processing)"]
642    pub qcom_image_processing2: bool,
643    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_multiview_per_view_render_areas.html)"]
644    pub qcom_multiview_per_view_render_areas: bool,
645    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_multiview_per_view_viewports.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
646    pub qcom_multiview_per_view_viewports: bool,
647    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_render_pass_shader_resolve.html)"]
648    pub qcom_render_pass_shader_resolve: bool,
649    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_render_pass_store_ops.html)"]
650    pub qcom_render_pass_store_ops: bool,
651    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_render_pass_transform.html)"]
652    pub qcom_render_pass_transform: bool,
653    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_rotated_copy_commands.html)\n- Requires all of:\n  - Vulkan API version 1.3 or device extension [`khr_copy_commands2`](crate::device::DeviceExtensions::khr_copy_commands2)"]
654    pub qcom_rotated_copy_commands: bool,
655    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_tile_properties.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
656    pub qcom_tile_properties: bool,
657    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QCOM_ycbcr_degamma.html)"]
658    pub qcom_ycbcr_degamma: bool,
659    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_QNX_external_memory_screen_buffer.html)\n- Requires all of:\n  - Vulkan API version 1.1 or device extension [`khr_sampler_ycbcr_conversion`](crate::device::DeviceExtensions::khr_sampler_ycbcr_conversion)\n  - Vulkan API version 1.1 or device extension [`khr_external_memory`](crate::device::DeviceExtensions::khr_external_memory)\n  - Vulkan API version 1.1 or device extension [`khr_dedicated_allocation`](crate::device::DeviceExtensions::khr_dedicated_allocation)\n  - device extension [`ext_queue_family_foreign`](crate::device::DeviceExtensions::ext_queue_family_foreign)"]
660    pub qnx_external_memory_screen_buffer: bool,
661    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_SEC_amigo_profiling.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
662    pub sec_amigo_profiling: bool,
663    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_VALVE_descriptor_set_host_mapping.html)\n- Requires all of:\n  - Vulkan API version 1.1 or instance extension [`khr_get_physical_device_properties2`](crate::instance::InstanceExtensions::khr_get_physical_device_properties2)"]
664    pub valve_descriptor_set_host_mapping: bool,
665    #[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 all of:\n  - Vulkan API version 1.1 or device extension [`khr_maintenance3`](crate::device::DeviceExtensions::khr_maintenance3)"]
666    pub valve_mutable_descriptor_type: bool,
667    pub _ne: crate::NonExhaustive,
668}
669impl Default for DeviceExtensions {
670    #[inline]
671    fn default() -> Self {
672        Self::empty()
673    }
674}
675impl DeviceExtensions {
676    #[doc = r" Returns an `Extensions` object with none of the members set."]
677    #[inline]
678    pub const fn empty() -> Self {
679        Self {
680            khr_16bit_storage: false,
681            khr_8bit_storage: false,
682            khr_acceleration_structure: false,
683            khr_bind_memory2: false,
684            khr_buffer_device_address: false,
685            khr_calibrated_timestamps: false,
686            khr_cooperative_matrix: false,
687            khr_copy_commands2: false,
688            khr_create_renderpass2: false,
689            khr_dedicated_allocation: false,
690            khr_deferred_host_operations: false,
691            khr_depth_stencil_resolve: false,
692            khr_descriptor_update_template: false,
693            khr_device_group: false,
694            khr_display_swapchain: false,
695            khr_draw_indirect_count: false,
696            khr_driver_properties: false,
697            khr_dynamic_rendering: false,
698            khr_dynamic_rendering_local_read: false,
699            khr_external_fence: false,
700            khr_external_fence_fd: false,
701            khr_external_fence_win32: false,
702            khr_external_memory: false,
703            khr_external_memory_fd: false,
704            khr_external_memory_win32: false,
705            khr_external_semaphore: false,
706            khr_external_semaphore_fd: false,
707            khr_external_semaphore_win32: false,
708            khr_format_feature_flags2: false,
709            khr_fragment_shader_barycentric: false,
710            khr_fragment_shading_rate: false,
711            khr_get_memory_requirements2: false,
712            khr_global_priority: false,
713            khr_image_format_list: false,
714            khr_imageless_framebuffer: false,
715            khr_incremental_present: false,
716            khr_index_type_uint8: false,
717            khr_line_rasterization: false,
718            khr_load_store_op_none: false,
719            khr_maintenance1: false,
720            khr_maintenance2: false,
721            khr_maintenance3: false,
722            khr_maintenance4: false,
723            khr_maintenance5: false,
724            khr_maintenance6: false,
725            khr_map_memory2: false,
726            khr_multiview: false,
727            khr_performance_query: false,
728            khr_pipeline_executable_properties: false,
729            khr_pipeline_library: false,
730            khr_portability_subset: false,
731            khr_present_id: false,
732            khr_present_wait: false,
733            khr_push_descriptor: false,
734            khr_ray_query: false,
735            khr_ray_tracing_maintenance1: false,
736            khr_ray_tracing_pipeline: false,
737            khr_ray_tracing_position_fetch: false,
738            khr_relaxed_block_layout: false,
739            khr_sampler_mirror_clamp_to_edge: false,
740            khr_sampler_ycbcr_conversion: false,
741            khr_separate_depth_stencil_layouts: false,
742            khr_shader_atomic_int64: false,
743            khr_shader_clock: false,
744            khr_shader_draw_parameters: false,
745            khr_shader_expect_assume: false,
746            khr_shader_float16_int8: false,
747            khr_shader_float_controls: false,
748            khr_shader_float_controls2: false,
749            khr_shader_integer_dot_product: false,
750            khr_shader_maximal_reconvergence: false,
751            khr_shader_non_semantic_info: false,
752            khr_shader_quad_control: false,
753            khr_shader_subgroup_extended_types: false,
754            khr_shader_subgroup_rotate: false,
755            khr_shader_subgroup_uniform_control_flow: false,
756            khr_shader_terminate_invocation: false,
757            khr_shared_presentable_image: false,
758            khr_spirv_1_4: false,
759            khr_storage_buffer_storage_class: false,
760            khr_swapchain: false,
761            khr_swapchain_mutable_format: false,
762            khr_synchronization2: false,
763            khr_timeline_semaphore: false,
764            khr_uniform_buffer_standard_layout: false,
765            khr_variable_pointers: false,
766            khr_vertex_attribute_divisor: false,
767            khr_video_decode_av1: false,
768            khr_video_decode_h264: false,
769            khr_video_decode_h265: false,
770            khr_video_decode_queue: false,
771            khr_video_encode_h264: false,
772            khr_video_encode_h265: false,
773            khr_video_encode_queue: false,
774            khr_video_maintenance1: false,
775            khr_video_queue: false,
776            khr_vulkan_memory_model: false,
777            khr_win32_keyed_mutex: false,
778            khr_workgroup_memory_explicit_layout: false,
779            khr_zero_initialize_workgroup_memory: false,
780            ext_4444_formats: false,
781            ext_astc_decode_mode: false,
782            ext_attachment_feedback_loop_dynamic_state: false,
783            ext_attachment_feedback_loop_layout: false,
784            ext_blend_operation_advanced: false,
785            ext_border_color_swizzle: false,
786            ext_buffer_device_address: false,
787            ext_calibrated_timestamps: false,
788            ext_color_write_enable: false,
789            ext_conditional_rendering: false,
790            ext_conservative_rasterization: false,
791            ext_custom_border_color: false,
792            ext_debug_marker: false,
793            ext_depth_bias_control: false,
794            ext_depth_clamp_zero_one: false,
795            ext_depth_clip_control: false,
796            ext_depth_clip_enable: false,
797            ext_depth_range_unrestricted: false,
798            ext_descriptor_buffer: false,
799            ext_descriptor_indexing: false,
800            ext_device_address_binding_report: false,
801            ext_device_fault: false,
802            ext_device_memory_report: false,
803            ext_discard_rectangles: false,
804            ext_display_control: false,
805            ext_dynamic_rendering_unused_attachments: false,
806            ext_extended_dynamic_state: false,
807            ext_extended_dynamic_state2: false,
808            ext_extended_dynamic_state3: false,
809            ext_external_memory_acquire_unmodified: false,
810            ext_external_memory_dma_buf: false,
811            ext_external_memory_host: false,
812            ext_filter_cubic: false,
813            ext_fragment_density_map: false,
814            ext_fragment_density_map2: false,
815            ext_fragment_shader_interlock: false,
816            ext_frame_boundary: false,
817            ext_full_screen_exclusive: false,
818            ext_global_priority: false,
819            ext_global_priority_query: false,
820            ext_graphics_pipeline_library: false,
821            ext_hdr_metadata: false,
822            ext_host_image_copy: false,
823            ext_host_query_reset: false,
824            ext_image_2d_view_of_3d: false,
825            ext_image_compression_control: false,
826            ext_image_compression_control_swapchain: false,
827            ext_image_drm_format_modifier: false,
828            ext_image_robustness: false,
829            ext_image_sliced_view_of_3d: false,
830            ext_image_view_min_lod: false,
831            ext_index_type_uint8: false,
832            ext_inline_uniform_block: false,
833            ext_legacy_dithering: false,
834            ext_line_rasterization: false,
835            ext_load_store_op_none: false,
836            ext_map_memory_placed: false,
837            ext_memory_budget: false,
838            ext_memory_priority: false,
839            ext_mesh_shader: false,
840            ext_metal_objects: false,
841            ext_multi_draw: false,
842            ext_multisampled_render_to_single_sampled: false,
843            ext_mutable_descriptor_type: false,
844            ext_nested_command_buffer: false,
845            ext_non_seamless_cube_map: false,
846            ext_opacity_micromap: false,
847            ext_pageable_device_local_memory: false,
848            ext_pci_bus_info: false,
849            ext_physical_device_drm: false,
850            ext_pipeline_creation_cache_control: false,
851            ext_pipeline_creation_feedback: false,
852            ext_pipeline_library_group_handles: false,
853            ext_pipeline_properties: false,
854            ext_pipeline_protected_access: false,
855            ext_pipeline_robustness: false,
856            ext_post_depth_coverage: false,
857            ext_primitive_topology_list_restart: false,
858            ext_primitives_generated_query: false,
859            ext_private_data: false,
860            ext_provoking_vertex: false,
861            ext_queue_family_foreign: false,
862            ext_rasterization_order_attachment_access: false,
863            ext_rgba10x6_formats: false,
864            ext_robustness2: false,
865            ext_sample_locations: false,
866            ext_sampler_filter_minmax: false,
867            ext_scalar_block_layout: false,
868            ext_separate_stencil_usage: false,
869            ext_shader_atomic_float: false,
870            ext_shader_atomic_float2: false,
871            ext_shader_demote_to_helper_invocation: false,
872            ext_shader_image_atomic_int64: false,
873            ext_shader_module_identifier: false,
874            ext_shader_object: false,
875            ext_shader_stencil_export: false,
876            ext_shader_subgroup_ballot: false,
877            ext_shader_subgroup_vote: false,
878            ext_shader_tile_image: false,
879            ext_shader_viewport_index_layer: false,
880            ext_subgroup_size_control: false,
881            ext_subpass_merge_feedback: false,
882            ext_swapchain_maintenance1: false,
883            ext_texel_buffer_alignment: false,
884            ext_texture_compression_astc_hdr: false,
885            ext_tooling_info: false,
886            ext_transform_feedback: false,
887            ext_validation_cache: false,
888            ext_vertex_attribute_divisor: false,
889            ext_vertex_input_dynamic_state: false,
890            ext_ycbcr_2plane_444_formats: false,
891            ext_ycbcr_image_arrays: false,
892            amdx_shader_enqueue: false,
893            amd_buffer_marker: false,
894            amd_device_coherent_memory: false,
895            amd_display_native_hdr: false,
896            amd_draw_indirect_count: false,
897            amd_gcn_shader: false,
898            amd_gpu_shader_half_float: false,
899            amd_gpu_shader_int16: false,
900            amd_memory_overallocation_behavior: false,
901            amd_mixed_attachment_samples: false,
902            amd_pipeline_compiler_control: false,
903            amd_rasterization_order: false,
904            amd_shader_ballot: false,
905            amd_shader_core_properties: false,
906            amd_shader_core_properties2: false,
907            amd_shader_early_and_late_fragment_tests: false,
908            amd_shader_explicit_vertex_parameter: false,
909            amd_shader_fragment_mask: false,
910            amd_shader_image_load_store_lod: false,
911            amd_shader_info: false,
912            amd_shader_trinary_minmax: false,
913            amd_texture_gather_bias_lod: false,
914            android_external_format_resolve: false,
915            android_external_memory_android_hardware_buffer: false,
916            arm_rasterization_order_attachment_access: false,
917            arm_render_pass_striped: false,
918            arm_scheduling_controls: false,
919            arm_shader_core_builtins: false,
920            arm_shader_core_properties: false,
921            fuchsia_buffer_collection: false,
922            fuchsia_external_memory: false,
923            fuchsia_external_semaphore: false,
924            ggp_frame_token: false,
925            google_decorate_string: false,
926            google_display_timing: false,
927            google_hlsl_functionality1: false,
928            google_user_type: false,
929            huawei_cluster_culling_shader: false,
930            huawei_invocation_mask: false,
931            huawei_subpass_shading: false,
932            img_filter_cubic: false,
933            img_format_pvrtc: false,
934            img_relaxed_line_rasterization: false,
935            intel_performance_query: false,
936            intel_shader_integer_functions2: false,
937            msft_layered_driver: false,
938            nvx_binary_import: false,
939            nvx_image_view_handle: false,
940            nvx_multiview_per_view_attributes: false,
941            nv_acquire_winrt_display: false,
942            nv_clip_space_w_scaling: false,
943            nv_compute_shader_derivatives: false,
944            nv_cooperative_matrix: false,
945            nv_copy_memory_indirect: false,
946            nv_corner_sampled_image: false,
947            nv_coverage_reduction_mode: false,
948            nv_cuda_kernel_launch: false,
949            nv_dedicated_allocation: false,
950            nv_dedicated_allocation_image_aliasing: false,
951            nv_descriptor_pool_overallocation: false,
952            nv_device_diagnostic_checkpoints: false,
953            nv_device_diagnostics_config: false,
954            nv_device_generated_commands: false,
955            nv_device_generated_commands_compute: false,
956            nv_displacement_micromap: false,
957            nv_extended_sparse_address_space: false,
958            nv_external_memory: false,
959            nv_external_memory_rdma: false,
960            nv_external_memory_win32: false,
961            nv_fill_rectangle: false,
962            nv_fragment_coverage_to_color: false,
963            nv_fragment_shader_barycentric: false,
964            nv_fragment_shading_rate_enums: false,
965            nv_framebuffer_mixed_samples: false,
966            nv_geometry_shader_passthrough: false,
967            nv_glsl_shader: false,
968            nv_inherited_viewport_scissor: false,
969            nv_linear_color_attachment: false,
970            nv_low_latency: false,
971            nv_low_latency2: false,
972            nv_memory_decompression: false,
973            nv_mesh_shader: false,
974            nv_optical_flow: false,
975            nv_per_stage_descriptor_set: false,
976            nv_present_barrier: false,
977            nv_raw_access_chains: false,
978            nv_ray_tracing: false,
979            nv_ray_tracing_invocation_reorder: false,
980            nv_ray_tracing_motion_blur: false,
981            nv_ray_tracing_validation: false,
982            nv_representative_fragment_test: false,
983            nv_sample_mask_override_coverage: false,
984            nv_scissor_exclusive: false,
985            nv_shader_atomic_float16_vector: false,
986            nv_shader_image_footprint: false,
987            nv_shader_sm_builtins: false,
988            nv_shader_subgroup_partitioned: false,
989            nv_shading_rate_image: false,
990            nv_viewport_array2: false,
991            nv_viewport_swizzle: false,
992            nv_win32_keyed_mutex: false,
993            qcom_filter_cubic_clamp: false,
994            qcom_filter_cubic_weights: false,
995            qcom_fragment_density_map_offset: false,
996            qcom_image_processing: false,
997            qcom_image_processing2: false,
998            qcom_multiview_per_view_render_areas: false,
999            qcom_multiview_per_view_viewports: false,
1000            qcom_render_pass_shader_resolve: false,
1001            qcom_render_pass_store_ops: false,
1002            qcom_render_pass_transform: false,
1003            qcom_rotated_copy_commands: false,
1004            qcom_tile_properties: false,
1005            qcom_ycbcr_degamma: false,
1006            qnx_external_memory_screen_buffer: false,
1007            sec_amigo_profiling: false,
1008            valve_descriptor_set_host_mapping: false,
1009            valve_mutable_descriptor_type: false,
1010            _ne: crate::NonExhaustive(()),
1011        }
1012    }
1013    #[doc = r" Returns the number of members set in self."]
1014    #[inline]
1015    pub const fn count(self) -> u64 {
1016        self.khr_16bit_storage as u64
1017            + self.khr_8bit_storage as u64
1018            + self.khr_acceleration_structure as u64
1019            + self.khr_bind_memory2 as u64
1020            + self.khr_buffer_device_address as u64
1021            + self.khr_calibrated_timestamps as u64
1022            + self.khr_cooperative_matrix as u64
1023            + self.khr_copy_commands2 as u64
1024            + self.khr_create_renderpass2 as u64
1025            + self.khr_dedicated_allocation as u64
1026            + self.khr_deferred_host_operations as u64
1027            + self.khr_depth_stencil_resolve as u64
1028            + self.khr_descriptor_update_template as u64
1029            + self.khr_device_group as u64
1030            + self.khr_display_swapchain as u64
1031            + self.khr_draw_indirect_count as u64
1032            + self.khr_driver_properties as u64
1033            + self.khr_dynamic_rendering as u64
1034            + self.khr_dynamic_rendering_local_read as u64
1035            + self.khr_external_fence as u64
1036            + self.khr_external_fence_fd as u64
1037            + self.khr_external_fence_win32 as u64
1038            + self.khr_external_memory as u64
1039            + self.khr_external_memory_fd as u64
1040            + self.khr_external_memory_win32 as u64
1041            + self.khr_external_semaphore as u64
1042            + self.khr_external_semaphore_fd as u64
1043            + self.khr_external_semaphore_win32 as u64
1044            + self.khr_format_feature_flags2 as u64
1045            + self.khr_fragment_shader_barycentric as u64
1046            + self.khr_fragment_shading_rate as u64
1047            + self.khr_get_memory_requirements2 as u64
1048            + self.khr_global_priority as u64
1049            + self.khr_image_format_list as u64
1050            + self.khr_imageless_framebuffer as u64
1051            + self.khr_incremental_present as u64
1052            + self.khr_index_type_uint8 as u64
1053            + self.khr_line_rasterization as u64
1054            + self.khr_load_store_op_none as u64
1055            + self.khr_maintenance1 as u64
1056            + self.khr_maintenance2 as u64
1057            + self.khr_maintenance3 as u64
1058            + self.khr_maintenance4 as u64
1059            + self.khr_maintenance5 as u64
1060            + self.khr_maintenance6 as u64
1061            + self.khr_map_memory2 as u64
1062            + self.khr_multiview as u64
1063            + self.khr_performance_query as u64
1064            + self.khr_pipeline_executable_properties as u64
1065            + self.khr_pipeline_library as u64
1066            + self.khr_portability_subset as u64
1067            + self.khr_present_id as u64
1068            + self.khr_present_wait as u64
1069            + self.khr_push_descriptor as u64
1070            + self.khr_ray_query as u64
1071            + self.khr_ray_tracing_maintenance1 as u64
1072            + self.khr_ray_tracing_pipeline as u64
1073            + self.khr_ray_tracing_position_fetch as u64
1074            + self.khr_relaxed_block_layout as u64
1075            + self.khr_sampler_mirror_clamp_to_edge as u64
1076            + self.khr_sampler_ycbcr_conversion as u64
1077            + self.khr_separate_depth_stencil_layouts as u64
1078            + self.khr_shader_atomic_int64 as u64
1079            + self.khr_shader_clock as u64
1080            + self.khr_shader_draw_parameters as u64
1081            + self.khr_shader_expect_assume as u64
1082            + self.khr_shader_float16_int8 as u64
1083            + self.khr_shader_float_controls as u64
1084            + self.khr_shader_float_controls2 as u64
1085            + self.khr_shader_integer_dot_product as u64
1086            + self.khr_shader_maximal_reconvergence as u64
1087            + self.khr_shader_non_semantic_info as u64
1088            + self.khr_shader_quad_control as u64
1089            + self.khr_shader_subgroup_extended_types as u64
1090            + self.khr_shader_subgroup_rotate as u64
1091            + self.khr_shader_subgroup_uniform_control_flow as u64
1092            + self.khr_shader_terminate_invocation as u64
1093            + self.khr_shared_presentable_image as u64
1094            + self.khr_spirv_1_4 as u64
1095            + self.khr_storage_buffer_storage_class as u64
1096            + self.khr_swapchain as u64
1097            + self.khr_swapchain_mutable_format as u64
1098            + self.khr_synchronization2 as u64
1099            + self.khr_timeline_semaphore as u64
1100            + self.khr_uniform_buffer_standard_layout as u64
1101            + self.khr_variable_pointers as u64
1102            + self.khr_vertex_attribute_divisor as u64
1103            + self.khr_video_decode_av1 as u64
1104            + self.khr_video_decode_h264 as u64
1105            + self.khr_video_decode_h265 as u64
1106            + self.khr_video_decode_queue as u64
1107            + self.khr_video_encode_h264 as u64
1108            + self.khr_video_encode_h265 as u64
1109            + self.khr_video_encode_queue as u64
1110            + self.khr_video_maintenance1 as u64
1111            + self.khr_video_queue as u64
1112            + self.khr_vulkan_memory_model as u64
1113            + self.khr_win32_keyed_mutex as u64
1114            + self.khr_workgroup_memory_explicit_layout as u64
1115            + self.khr_zero_initialize_workgroup_memory as u64
1116            + self.ext_4444_formats as u64
1117            + self.ext_astc_decode_mode as u64
1118            + self.ext_attachment_feedback_loop_dynamic_state as u64
1119            + self.ext_attachment_feedback_loop_layout as u64
1120            + self.ext_blend_operation_advanced as u64
1121            + self.ext_border_color_swizzle as u64
1122            + self.ext_buffer_device_address as u64
1123            + self.ext_calibrated_timestamps as u64
1124            + self.ext_color_write_enable as u64
1125            + self.ext_conditional_rendering as u64
1126            + self.ext_conservative_rasterization as u64
1127            + self.ext_custom_border_color as u64
1128            + self.ext_debug_marker as u64
1129            + self.ext_depth_bias_control as u64
1130            + self.ext_depth_clamp_zero_one as u64
1131            + self.ext_depth_clip_control as u64
1132            + self.ext_depth_clip_enable as u64
1133            + self.ext_depth_range_unrestricted as u64
1134            + self.ext_descriptor_buffer as u64
1135            + self.ext_descriptor_indexing as u64
1136            + self.ext_device_address_binding_report as u64
1137            + self.ext_device_fault as u64
1138            + self.ext_device_memory_report as u64
1139            + self.ext_discard_rectangles as u64
1140            + self.ext_display_control as u64
1141            + self.ext_dynamic_rendering_unused_attachments as u64
1142            + self.ext_extended_dynamic_state as u64
1143            + self.ext_extended_dynamic_state2 as u64
1144            + self.ext_extended_dynamic_state3 as u64
1145            + self.ext_external_memory_acquire_unmodified as u64
1146            + self.ext_external_memory_dma_buf as u64
1147            + self.ext_external_memory_host as u64
1148            + self.ext_filter_cubic as u64
1149            + self.ext_fragment_density_map as u64
1150            + self.ext_fragment_density_map2 as u64
1151            + self.ext_fragment_shader_interlock as u64
1152            + self.ext_frame_boundary as u64
1153            + self.ext_full_screen_exclusive as u64
1154            + self.ext_global_priority as u64
1155            + self.ext_global_priority_query as u64
1156            + self.ext_graphics_pipeline_library as u64
1157            + self.ext_hdr_metadata as u64
1158            + self.ext_host_image_copy as u64
1159            + self.ext_host_query_reset as u64
1160            + self.ext_image_2d_view_of_3d as u64
1161            + self.ext_image_compression_control as u64
1162            + self.ext_image_compression_control_swapchain as u64
1163            + self.ext_image_drm_format_modifier as u64
1164            + self.ext_image_robustness as u64
1165            + self.ext_image_sliced_view_of_3d as u64
1166            + self.ext_image_view_min_lod as u64
1167            + self.ext_index_type_uint8 as u64
1168            + self.ext_inline_uniform_block as u64
1169            + self.ext_legacy_dithering as u64
1170            + self.ext_line_rasterization as u64
1171            + self.ext_load_store_op_none as u64
1172            + self.ext_map_memory_placed as u64
1173            + self.ext_memory_budget as u64
1174            + self.ext_memory_priority as u64
1175            + self.ext_mesh_shader as u64
1176            + self.ext_metal_objects as u64
1177            + self.ext_multi_draw as u64
1178            + self.ext_multisampled_render_to_single_sampled as u64
1179            + self.ext_mutable_descriptor_type as u64
1180            + self.ext_nested_command_buffer as u64
1181            + self.ext_non_seamless_cube_map as u64
1182            + self.ext_opacity_micromap as u64
1183            + self.ext_pageable_device_local_memory as u64
1184            + self.ext_pci_bus_info as u64
1185            + self.ext_physical_device_drm as u64
1186            + self.ext_pipeline_creation_cache_control as u64
1187            + self.ext_pipeline_creation_feedback as u64
1188            + self.ext_pipeline_library_group_handles as u64
1189            + self.ext_pipeline_properties as u64
1190            + self.ext_pipeline_protected_access as u64
1191            + self.ext_pipeline_robustness as u64
1192            + self.ext_post_depth_coverage as u64
1193            + self.ext_primitive_topology_list_restart as u64
1194            + self.ext_primitives_generated_query as u64
1195            + self.ext_private_data as u64
1196            + self.ext_provoking_vertex as u64
1197            + self.ext_queue_family_foreign as u64
1198            + self.ext_rasterization_order_attachment_access as u64
1199            + self.ext_rgba10x6_formats as u64
1200            + self.ext_robustness2 as u64
1201            + self.ext_sample_locations as u64
1202            + self.ext_sampler_filter_minmax as u64
1203            + self.ext_scalar_block_layout as u64
1204            + self.ext_separate_stencil_usage as u64
1205            + self.ext_shader_atomic_float as u64
1206            + self.ext_shader_atomic_float2 as u64
1207            + self.ext_shader_demote_to_helper_invocation as u64
1208            + self.ext_shader_image_atomic_int64 as u64
1209            + self.ext_shader_module_identifier as u64
1210            + self.ext_shader_object as u64
1211            + self.ext_shader_stencil_export as u64
1212            + self.ext_shader_subgroup_ballot as u64
1213            + self.ext_shader_subgroup_vote as u64
1214            + self.ext_shader_tile_image as u64
1215            + self.ext_shader_viewport_index_layer as u64
1216            + self.ext_subgroup_size_control as u64
1217            + self.ext_subpass_merge_feedback as u64
1218            + self.ext_swapchain_maintenance1 as u64
1219            + self.ext_texel_buffer_alignment as u64
1220            + self.ext_texture_compression_astc_hdr as u64
1221            + self.ext_tooling_info as u64
1222            + self.ext_transform_feedback as u64
1223            + self.ext_validation_cache as u64
1224            + self.ext_vertex_attribute_divisor as u64
1225            + self.ext_vertex_input_dynamic_state as u64
1226            + self.ext_ycbcr_2plane_444_formats as u64
1227            + self.ext_ycbcr_image_arrays as u64
1228            + self.amdx_shader_enqueue as u64
1229            + self.amd_buffer_marker as u64
1230            + self.amd_device_coherent_memory as u64
1231            + self.amd_display_native_hdr as u64
1232            + self.amd_draw_indirect_count as u64
1233            + self.amd_gcn_shader as u64
1234            + self.amd_gpu_shader_half_float as u64
1235            + self.amd_gpu_shader_int16 as u64
1236            + self.amd_memory_overallocation_behavior as u64
1237            + self.amd_mixed_attachment_samples as u64
1238            + self.amd_pipeline_compiler_control as u64
1239            + self.amd_rasterization_order as u64
1240            + self.amd_shader_ballot as u64
1241            + self.amd_shader_core_properties as u64
1242            + self.amd_shader_core_properties2 as u64
1243            + self.amd_shader_early_and_late_fragment_tests as u64
1244            + self.amd_shader_explicit_vertex_parameter as u64
1245            + self.amd_shader_fragment_mask as u64
1246            + self.amd_shader_image_load_store_lod as u64
1247            + self.amd_shader_info as u64
1248            + self.amd_shader_trinary_minmax as u64
1249            + self.amd_texture_gather_bias_lod as u64
1250            + self.android_external_format_resolve as u64
1251            + self.android_external_memory_android_hardware_buffer as u64
1252            + self.arm_rasterization_order_attachment_access as u64
1253            + self.arm_render_pass_striped as u64
1254            + self.arm_scheduling_controls as u64
1255            + self.arm_shader_core_builtins as u64
1256            + self.arm_shader_core_properties as u64
1257            + self.fuchsia_buffer_collection as u64
1258            + self.fuchsia_external_memory as u64
1259            + self.fuchsia_external_semaphore as u64
1260            + self.ggp_frame_token as u64
1261            + self.google_decorate_string as u64
1262            + self.google_display_timing as u64
1263            + self.google_hlsl_functionality1 as u64
1264            + self.google_user_type as u64
1265            + self.huawei_cluster_culling_shader as u64
1266            + self.huawei_invocation_mask as u64
1267            + self.huawei_subpass_shading as u64
1268            + self.img_filter_cubic as u64
1269            + self.img_format_pvrtc as u64
1270            + self.img_relaxed_line_rasterization as u64
1271            + self.intel_performance_query as u64
1272            + self.intel_shader_integer_functions2 as u64
1273            + self.msft_layered_driver as u64
1274            + self.nvx_binary_import as u64
1275            + self.nvx_image_view_handle as u64
1276            + self.nvx_multiview_per_view_attributes as u64
1277            + self.nv_acquire_winrt_display as u64
1278            + self.nv_clip_space_w_scaling as u64
1279            + self.nv_compute_shader_derivatives as u64
1280            + self.nv_cooperative_matrix as u64
1281            + self.nv_copy_memory_indirect as u64
1282            + self.nv_corner_sampled_image as u64
1283            + self.nv_coverage_reduction_mode as u64
1284            + self.nv_cuda_kernel_launch as u64
1285            + self.nv_dedicated_allocation as u64
1286            + self.nv_dedicated_allocation_image_aliasing as u64
1287            + self.nv_descriptor_pool_overallocation as u64
1288            + self.nv_device_diagnostic_checkpoints as u64
1289            + self.nv_device_diagnostics_config as u64
1290            + self.nv_device_generated_commands as u64
1291            + self.nv_device_generated_commands_compute as u64
1292            + self.nv_displacement_micromap as u64
1293            + self.nv_extended_sparse_address_space as u64
1294            + self.nv_external_memory as u64
1295            + self.nv_external_memory_rdma as u64
1296            + self.nv_external_memory_win32 as u64
1297            + self.nv_fill_rectangle as u64
1298            + self.nv_fragment_coverage_to_color as u64
1299            + self.nv_fragment_shader_barycentric as u64
1300            + self.nv_fragment_shading_rate_enums as u64
1301            + self.nv_framebuffer_mixed_samples as u64
1302            + self.nv_geometry_shader_passthrough as u64
1303            + self.nv_glsl_shader as u64
1304            + self.nv_inherited_viewport_scissor as u64
1305            + self.nv_linear_color_attachment as u64
1306            + self.nv_low_latency as u64
1307            + self.nv_low_latency2 as u64
1308            + self.nv_memory_decompression as u64
1309            + self.nv_mesh_shader as u64
1310            + self.nv_optical_flow as u64
1311            + self.nv_per_stage_descriptor_set as u64
1312            + self.nv_present_barrier as u64
1313            + self.nv_raw_access_chains as u64
1314            + self.nv_ray_tracing as u64
1315            + self.nv_ray_tracing_invocation_reorder as u64
1316            + self.nv_ray_tracing_motion_blur as u64
1317            + self.nv_ray_tracing_validation as u64
1318            + self.nv_representative_fragment_test as u64
1319            + self.nv_sample_mask_override_coverage as u64
1320            + self.nv_scissor_exclusive as u64
1321            + self.nv_shader_atomic_float16_vector as u64
1322            + self.nv_shader_image_footprint as u64
1323            + self.nv_shader_sm_builtins as u64
1324            + self.nv_shader_subgroup_partitioned as u64
1325            + self.nv_shading_rate_image as u64
1326            + self.nv_viewport_array2 as u64
1327            + self.nv_viewport_swizzle as u64
1328            + self.nv_win32_keyed_mutex as u64
1329            + self.qcom_filter_cubic_clamp as u64
1330            + self.qcom_filter_cubic_weights as u64
1331            + self.qcom_fragment_density_map_offset as u64
1332            + self.qcom_image_processing as u64
1333            + self.qcom_image_processing2 as u64
1334            + self.qcom_multiview_per_view_render_areas as u64
1335            + self.qcom_multiview_per_view_viewports as u64
1336            + self.qcom_render_pass_shader_resolve as u64
1337            + self.qcom_render_pass_store_ops as u64
1338            + self.qcom_render_pass_transform as u64
1339            + self.qcom_rotated_copy_commands as u64
1340            + self.qcom_tile_properties as u64
1341            + self.qcom_ycbcr_degamma as u64
1342            + self.qnx_external_memory_screen_buffer as u64
1343            + self.sec_amigo_profiling as u64
1344            + self.valve_descriptor_set_host_mapping as u64
1345            + self.valve_mutable_descriptor_type as u64
1346    }
1347    #[doc = r" Returns whether no members are set in `self`."]
1348    #[inline]
1349    pub const fn is_empty(self) -> bool {
1350        !(self.khr_16bit_storage
1351            || self.khr_8bit_storage
1352            || self.khr_acceleration_structure
1353            || self.khr_bind_memory2
1354            || self.khr_buffer_device_address
1355            || self.khr_calibrated_timestamps
1356            || self.khr_cooperative_matrix
1357            || self.khr_copy_commands2
1358            || self.khr_create_renderpass2
1359            || self.khr_dedicated_allocation
1360            || self.khr_deferred_host_operations
1361            || self.khr_depth_stencil_resolve
1362            || self.khr_descriptor_update_template
1363            || self.khr_device_group
1364            || self.khr_display_swapchain
1365            || self.khr_draw_indirect_count
1366            || self.khr_driver_properties
1367            || self.khr_dynamic_rendering
1368            || self.khr_dynamic_rendering_local_read
1369            || self.khr_external_fence
1370            || self.khr_external_fence_fd
1371            || self.khr_external_fence_win32
1372            || self.khr_external_memory
1373            || self.khr_external_memory_fd
1374            || self.khr_external_memory_win32
1375            || self.khr_external_semaphore
1376            || self.khr_external_semaphore_fd
1377            || self.khr_external_semaphore_win32
1378            || self.khr_format_feature_flags2
1379            || self.khr_fragment_shader_barycentric
1380            || self.khr_fragment_shading_rate
1381            || self.khr_get_memory_requirements2
1382            || self.khr_global_priority
1383            || self.khr_image_format_list
1384            || self.khr_imageless_framebuffer
1385            || self.khr_incremental_present
1386            || self.khr_index_type_uint8
1387            || self.khr_line_rasterization
1388            || self.khr_load_store_op_none
1389            || self.khr_maintenance1
1390            || self.khr_maintenance2
1391            || self.khr_maintenance3
1392            || self.khr_maintenance4
1393            || self.khr_maintenance5
1394            || self.khr_maintenance6
1395            || self.khr_map_memory2
1396            || self.khr_multiview
1397            || self.khr_performance_query
1398            || self.khr_pipeline_executable_properties
1399            || self.khr_pipeline_library
1400            || self.khr_portability_subset
1401            || self.khr_present_id
1402            || self.khr_present_wait
1403            || self.khr_push_descriptor
1404            || self.khr_ray_query
1405            || self.khr_ray_tracing_maintenance1
1406            || self.khr_ray_tracing_pipeline
1407            || self.khr_ray_tracing_position_fetch
1408            || self.khr_relaxed_block_layout
1409            || self.khr_sampler_mirror_clamp_to_edge
1410            || self.khr_sampler_ycbcr_conversion
1411            || self.khr_separate_depth_stencil_layouts
1412            || self.khr_shader_atomic_int64
1413            || self.khr_shader_clock
1414            || self.khr_shader_draw_parameters
1415            || self.khr_shader_expect_assume
1416            || self.khr_shader_float16_int8
1417            || self.khr_shader_float_controls
1418            || self.khr_shader_float_controls2
1419            || self.khr_shader_integer_dot_product
1420            || self.khr_shader_maximal_reconvergence
1421            || self.khr_shader_non_semantic_info
1422            || self.khr_shader_quad_control
1423            || self.khr_shader_subgroup_extended_types
1424            || self.khr_shader_subgroup_rotate
1425            || self.khr_shader_subgroup_uniform_control_flow
1426            || self.khr_shader_terminate_invocation
1427            || self.khr_shared_presentable_image
1428            || self.khr_spirv_1_4
1429            || self.khr_storage_buffer_storage_class
1430            || self.khr_swapchain
1431            || self.khr_swapchain_mutable_format
1432            || self.khr_synchronization2
1433            || self.khr_timeline_semaphore
1434            || self.khr_uniform_buffer_standard_layout
1435            || self.khr_variable_pointers
1436            || self.khr_vertex_attribute_divisor
1437            || self.khr_video_decode_av1
1438            || self.khr_video_decode_h264
1439            || self.khr_video_decode_h265
1440            || self.khr_video_decode_queue
1441            || self.khr_video_encode_h264
1442            || self.khr_video_encode_h265
1443            || self.khr_video_encode_queue
1444            || self.khr_video_maintenance1
1445            || self.khr_video_queue
1446            || self.khr_vulkan_memory_model
1447            || self.khr_win32_keyed_mutex
1448            || self.khr_workgroup_memory_explicit_layout
1449            || self.khr_zero_initialize_workgroup_memory
1450            || self.ext_4444_formats
1451            || self.ext_astc_decode_mode
1452            || self.ext_attachment_feedback_loop_dynamic_state
1453            || self.ext_attachment_feedback_loop_layout
1454            || self.ext_blend_operation_advanced
1455            || self.ext_border_color_swizzle
1456            || self.ext_buffer_device_address
1457            || self.ext_calibrated_timestamps
1458            || self.ext_color_write_enable
1459            || self.ext_conditional_rendering
1460            || self.ext_conservative_rasterization
1461            || self.ext_custom_border_color
1462            || self.ext_debug_marker
1463            || self.ext_depth_bias_control
1464            || self.ext_depth_clamp_zero_one
1465            || self.ext_depth_clip_control
1466            || self.ext_depth_clip_enable
1467            || self.ext_depth_range_unrestricted
1468            || self.ext_descriptor_buffer
1469            || self.ext_descriptor_indexing
1470            || self.ext_device_address_binding_report
1471            || self.ext_device_fault
1472            || self.ext_device_memory_report
1473            || self.ext_discard_rectangles
1474            || self.ext_display_control
1475            || self.ext_dynamic_rendering_unused_attachments
1476            || self.ext_extended_dynamic_state
1477            || self.ext_extended_dynamic_state2
1478            || self.ext_extended_dynamic_state3
1479            || self.ext_external_memory_acquire_unmodified
1480            || self.ext_external_memory_dma_buf
1481            || self.ext_external_memory_host
1482            || self.ext_filter_cubic
1483            || self.ext_fragment_density_map
1484            || self.ext_fragment_density_map2
1485            || self.ext_fragment_shader_interlock
1486            || self.ext_frame_boundary
1487            || self.ext_full_screen_exclusive
1488            || self.ext_global_priority
1489            || self.ext_global_priority_query
1490            || self.ext_graphics_pipeline_library
1491            || self.ext_hdr_metadata
1492            || self.ext_host_image_copy
1493            || self.ext_host_query_reset
1494            || self.ext_image_2d_view_of_3d
1495            || self.ext_image_compression_control
1496            || self.ext_image_compression_control_swapchain
1497            || self.ext_image_drm_format_modifier
1498            || self.ext_image_robustness
1499            || self.ext_image_sliced_view_of_3d
1500            || self.ext_image_view_min_lod
1501            || self.ext_index_type_uint8
1502            || self.ext_inline_uniform_block
1503            || self.ext_legacy_dithering
1504            || self.ext_line_rasterization
1505            || self.ext_load_store_op_none
1506            || self.ext_map_memory_placed
1507            || self.ext_memory_budget
1508            || self.ext_memory_priority
1509            || self.ext_mesh_shader
1510            || self.ext_metal_objects
1511            || self.ext_multi_draw
1512            || self.ext_multisampled_render_to_single_sampled
1513            || self.ext_mutable_descriptor_type
1514            || self.ext_nested_command_buffer
1515            || self.ext_non_seamless_cube_map
1516            || self.ext_opacity_micromap
1517            || self.ext_pageable_device_local_memory
1518            || self.ext_pci_bus_info
1519            || self.ext_physical_device_drm
1520            || self.ext_pipeline_creation_cache_control
1521            || self.ext_pipeline_creation_feedback
1522            || self.ext_pipeline_library_group_handles
1523            || self.ext_pipeline_properties
1524            || self.ext_pipeline_protected_access
1525            || self.ext_pipeline_robustness
1526            || self.ext_post_depth_coverage
1527            || self.ext_primitive_topology_list_restart
1528            || self.ext_primitives_generated_query
1529            || self.ext_private_data
1530            || self.ext_provoking_vertex
1531            || self.ext_queue_family_foreign
1532            || self.ext_rasterization_order_attachment_access
1533            || self.ext_rgba10x6_formats
1534            || self.ext_robustness2
1535            || self.ext_sample_locations
1536            || self.ext_sampler_filter_minmax
1537            || self.ext_scalar_block_layout
1538            || self.ext_separate_stencil_usage
1539            || self.ext_shader_atomic_float
1540            || self.ext_shader_atomic_float2
1541            || self.ext_shader_demote_to_helper_invocation
1542            || self.ext_shader_image_atomic_int64
1543            || self.ext_shader_module_identifier
1544            || self.ext_shader_object
1545            || self.ext_shader_stencil_export
1546            || self.ext_shader_subgroup_ballot
1547            || self.ext_shader_subgroup_vote
1548            || self.ext_shader_tile_image
1549            || self.ext_shader_viewport_index_layer
1550            || self.ext_subgroup_size_control
1551            || self.ext_subpass_merge_feedback
1552            || self.ext_swapchain_maintenance1
1553            || self.ext_texel_buffer_alignment
1554            || self.ext_texture_compression_astc_hdr
1555            || self.ext_tooling_info
1556            || self.ext_transform_feedback
1557            || self.ext_validation_cache
1558            || self.ext_vertex_attribute_divisor
1559            || self.ext_vertex_input_dynamic_state
1560            || self.ext_ycbcr_2plane_444_formats
1561            || self.ext_ycbcr_image_arrays
1562            || self.amdx_shader_enqueue
1563            || self.amd_buffer_marker
1564            || self.amd_device_coherent_memory
1565            || self.amd_display_native_hdr
1566            || self.amd_draw_indirect_count
1567            || self.amd_gcn_shader
1568            || self.amd_gpu_shader_half_float
1569            || self.amd_gpu_shader_int16
1570            || self.amd_memory_overallocation_behavior
1571            || self.amd_mixed_attachment_samples
1572            || self.amd_pipeline_compiler_control
1573            || self.amd_rasterization_order
1574            || self.amd_shader_ballot
1575            || self.amd_shader_core_properties
1576            || self.amd_shader_core_properties2
1577            || self.amd_shader_early_and_late_fragment_tests
1578            || self.amd_shader_explicit_vertex_parameter
1579            || self.amd_shader_fragment_mask
1580            || self.amd_shader_image_load_store_lod
1581            || self.amd_shader_info
1582            || self.amd_shader_trinary_minmax
1583            || self.amd_texture_gather_bias_lod
1584            || self.android_external_format_resolve
1585            || self.android_external_memory_android_hardware_buffer
1586            || self.arm_rasterization_order_attachment_access
1587            || self.arm_render_pass_striped
1588            || self.arm_scheduling_controls
1589            || self.arm_shader_core_builtins
1590            || self.arm_shader_core_properties
1591            || self.fuchsia_buffer_collection
1592            || self.fuchsia_external_memory
1593            || self.fuchsia_external_semaphore
1594            || self.ggp_frame_token
1595            || self.google_decorate_string
1596            || self.google_display_timing
1597            || self.google_hlsl_functionality1
1598            || self.google_user_type
1599            || self.huawei_cluster_culling_shader
1600            || self.huawei_invocation_mask
1601            || self.huawei_subpass_shading
1602            || self.img_filter_cubic
1603            || self.img_format_pvrtc
1604            || self.img_relaxed_line_rasterization
1605            || self.intel_performance_query
1606            || self.intel_shader_integer_functions2
1607            || self.msft_layered_driver
1608            || self.nvx_binary_import
1609            || self.nvx_image_view_handle
1610            || self.nvx_multiview_per_view_attributes
1611            || self.nv_acquire_winrt_display
1612            || self.nv_clip_space_w_scaling
1613            || self.nv_compute_shader_derivatives
1614            || self.nv_cooperative_matrix
1615            || self.nv_copy_memory_indirect
1616            || self.nv_corner_sampled_image
1617            || self.nv_coverage_reduction_mode
1618            || self.nv_cuda_kernel_launch
1619            || self.nv_dedicated_allocation
1620            || self.nv_dedicated_allocation_image_aliasing
1621            || self.nv_descriptor_pool_overallocation
1622            || self.nv_device_diagnostic_checkpoints
1623            || self.nv_device_diagnostics_config
1624            || self.nv_device_generated_commands
1625            || self.nv_device_generated_commands_compute
1626            || self.nv_displacement_micromap
1627            || self.nv_extended_sparse_address_space
1628            || self.nv_external_memory
1629            || self.nv_external_memory_rdma
1630            || self.nv_external_memory_win32
1631            || self.nv_fill_rectangle
1632            || self.nv_fragment_coverage_to_color
1633            || self.nv_fragment_shader_barycentric
1634            || self.nv_fragment_shading_rate_enums
1635            || self.nv_framebuffer_mixed_samples
1636            || self.nv_geometry_shader_passthrough
1637            || self.nv_glsl_shader
1638            || self.nv_inherited_viewport_scissor
1639            || self.nv_linear_color_attachment
1640            || self.nv_low_latency
1641            || self.nv_low_latency2
1642            || self.nv_memory_decompression
1643            || self.nv_mesh_shader
1644            || self.nv_optical_flow
1645            || self.nv_per_stage_descriptor_set
1646            || self.nv_present_barrier
1647            || self.nv_raw_access_chains
1648            || self.nv_ray_tracing
1649            || self.nv_ray_tracing_invocation_reorder
1650            || self.nv_ray_tracing_motion_blur
1651            || self.nv_ray_tracing_validation
1652            || self.nv_representative_fragment_test
1653            || self.nv_sample_mask_override_coverage
1654            || self.nv_scissor_exclusive
1655            || self.nv_shader_atomic_float16_vector
1656            || self.nv_shader_image_footprint
1657            || self.nv_shader_sm_builtins
1658            || self.nv_shader_subgroup_partitioned
1659            || self.nv_shading_rate_image
1660            || self.nv_viewport_array2
1661            || self.nv_viewport_swizzle
1662            || self.nv_win32_keyed_mutex
1663            || self.qcom_filter_cubic_clamp
1664            || self.qcom_filter_cubic_weights
1665            || self.qcom_fragment_density_map_offset
1666            || self.qcom_image_processing
1667            || self.qcom_image_processing2
1668            || self.qcom_multiview_per_view_render_areas
1669            || self.qcom_multiview_per_view_viewports
1670            || self.qcom_render_pass_shader_resolve
1671            || self.qcom_render_pass_store_ops
1672            || self.qcom_render_pass_transform
1673            || self.qcom_rotated_copy_commands
1674            || self.qcom_tile_properties
1675            || self.qcom_ycbcr_degamma
1676            || self.qnx_external_memory_screen_buffer
1677            || self.sec_amigo_profiling
1678            || self.valve_descriptor_set_host_mapping
1679            || self.valve_mutable_descriptor_type)
1680    }
1681    #[doc = r" Returns whether any members are set in both `self` and `other`."]
1682    #[inline]
1683    pub const fn intersects(&self, other: &Self) -> bool {
1684        (self.khr_16bit_storage && other.khr_16bit_storage)
1685            || (self.khr_8bit_storage && other.khr_8bit_storage)
1686            || (self.khr_acceleration_structure && other.khr_acceleration_structure)
1687            || (self.khr_bind_memory2 && other.khr_bind_memory2)
1688            || (self.khr_buffer_device_address && other.khr_buffer_device_address)
1689            || (self.khr_calibrated_timestamps && other.khr_calibrated_timestamps)
1690            || (self.khr_cooperative_matrix && other.khr_cooperative_matrix)
1691            || (self.khr_copy_commands2 && other.khr_copy_commands2)
1692            || (self.khr_create_renderpass2 && other.khr_create_renderpass2)
1693            || (self.khr_dedicated_allocation && other.khr_dedicated_allocation)
1694            || (self.khr_deferred_host_operations && other.khr_deferred_host_operations)
1695            || (self.khr_depth_stencil_resolve && other.khr_depth_stencil_resolve)
1696            || (self.khr_descriptor_update_template && other.khr_descriptor_update_template)
1697            || (self.khr_device_group && other.khr_device_group)
1698            || (self.khr_display_swapchain && other.khr_display_swapchain)
1699            || (self.khr_draw_indirect_count && other.khr_draw_indirect_count)
1700            || (self.khr_driver_properties && other.khr_driver_properties)
1701            || (self.khr_dynamic_rendering && other.khr_dynamic_rendering)
1702            || (self.khr_dynamic_rendering_local_read && other.khr_dynamic_rendering_local_read)
1703            || (self.khr_external_fence && other.khr_external_fence)
1704            || (self.khr_external_fence_fd && other.khr_external_fence_fd)
1705            || (self.khr_external_fence_win32 && other.khr_external_fence_win32)
1706            || (self.khr_external_memory && other.khr_external_memory)
1707            || (self.khr_external_memory_fd && other.khr_external_memory_fd)
1708            || (self.khr_external_memory_win32 && other.khr_external_memory_win32)
1709            || (self.khr_external_semaphore && other.khr_external_semaphore)
1710            || (self.khr_external_semaphore_fd && other.khr_external_semaphore_fd)
1711            || (self.khr_external_semaphore_win32 && other.khr_external_semaphore_win32)
1712            || (self.khr_format_feature_flags2 && other.khr_format_feature_flags2)
1713            || (self.khr_fragment_shader_barycentric && other.khr_fragment_shader_barycentric)
1714            || (self.khr_fragment_shading_rate && other.khr_fragment_shading_rate)
1715            || (self.khr_get_memory_requirements2 && other.khr_get_memory_requirements2)
1716            || (self.khr_global_priority && other.khr_global_priority)
1717            || (self.khr_image_format_list && other.khr_image_format_list)
1718            || (self.khr_imageless_framebuffer && other.khr_imageless_framebuffer)
1719            || (self.khr_incremental_present && other.khr_incremental_present)
1720            || (self.khr_index_type_uint8 && other.khr_index_type_uint8)
1721            || (self.khr_line_rasterization && other.khr_line_rasterization)
1722            || (self.khr_load_store_op_none && other.khr_load_store_op_none)
1723            || (self.khr_maintenance1 && other.khr_maintenance1)
1724            || (self.khr_maintenance2 && other.khr_maintenance2)
1725            || (self.khr_maintenance3 && other.khr_maintenance3)
1726            || (self.khr_maintenance4 && other.khr_maintenance4)
1727            || (self.khr_maintenance5 && other.khr_maintenance5)
1728            || (self.khr_maintenance6 && other.khr_maintenance6)
1729            || (self.khr_map_memory2 && other.khr_map_memory2)
1730            || (self.khr_multiview && other.khr_multiview)
1731            || (self.khr_performance_query && other.khr_performance_query)
1732            || (self.khr_pipeline_executable_properties && other.khr_pipeline_executable_properties)
1733            || (self.khr_pipeline_library && other.khr_pipeline_library)
1734            || (self.khr_portability_subset && other.khr_portability_subset)
1735            || (self.khr_present_id && other.khr_present_id)
1736            || (self.khr_present_wait && other.khr_present_wait)
1737            || (self.khr_push_descriptor && other.khr_push_descriptor)
1738            || (self.khr_ray_query && other.khr_ray_query)
1739            || (self.khr_ray_tracing_maintenance1 && other.khr_ray_tracing_maintenance1)
1740            || (self.khr_ray_tracing_pipeline && other.khr_ray_tracing_pipeline)
1741            || (self.khr_ray_tracing_position_fetch && other.khr_ray_tracing_position_fetch)
1742            || (self.khr_relaxed_block_layout && other.khr_relaxed_block_layout)
1743            || (self.khr_sampler_mirror_clamp_to_edge && other.khr_sampler_mirror_clamp_to_edge)
1744            || (self.khr_sampler_ycbcr_conversion && other.khr_sampler_ycbcr_conversion)
1745            || (self.khr_separate_depth_stencil_layouts && other.khr_separate_depth_stencil_layouts)
1746            || (self.khr_shader_atomic_int64 && other.khr_shader_atomic_int64)
1747            || (self.khr_shader_clock && other.khr_shader_clock)
1748            || (self.khr_shader_draw_parameters && other.khr_shader_draw_parameters)
1749            || (self.khr_shader_expect_assume && other.khr_shader_expect_assume)
1750            || (self.khr_shader_float16_int8 && other.khr_shader_float16_int8)
1751            || (self.khr_shader_float_controls && other.khr_shader_float_controls)
1752            || (self.khr_shader_float_controls2 && other.khr_shader_float_controls2)
1753            || (self.khr_shader_integer_dot_product && other.khr_shader_integer_dot_product)
1754            || (self.khr_shader_maximal_reconvergence && other.khr_shader_maximal_reconvergence)
1755            || (self.khr_shader_non_semantic_info && other.khr_shader_non_semantic_info)
1756            || (self.khr_shader_quad_control && other.khr_shader_quad_control)
1757            || (self.khr_shader_subgroup_extended_types && other.khr_shader_subgroup_extended_types)
1758            || (self.khr_shader_subgroup_rotate && other.khr_shader_subgroup_rotate)
1759            || (self.khr_shader_subgroup_uniform_control_flow
1760                && other.khr_shader_subgroup_uniform_control_flow)
1761            || (self.khr_shader_terminate_invocation && other.khr_shader_terminate_invocation)
1762            || (self.khr_shared_presentable_image && other.khr_shared_presentable_image)
1763            || (self.khr_spirv_1_4 && other.khr_spirv_1_4)
1764            || (self.khr_storage_buffer_storage_class && other.khr_storage_buffer_storage_class)
1765            || (self.khr_swapchain && other.khr_swapchain)
1766            || (self.khr_swapchain_mutable_format && other.khr_swapchain_mutable_format)
1767            || (self.khr_synchronization2 && other.khr_synchronization2)
1768            || (self.khr_timeline_semaphore && other.khr_timeline_semaphore)
1769            || (self.khr_uniform_buffer_standard_layout && other.khr_uniform_buffer_standard_layout)
1770            || (self.khr_variable_pointers && other.khr_variable_pointers)
1771            || (self.khr_vertex_attribute_divisor && other.khr_vertex_attribute_divisor)
1772            || (self.khr_video_decode_av1 && other.khr_video_decode_av1)
1773            || (self.khr_video_decode_h264 && other.khr_video_decode_h264)
1774            || (self.khr_video_decode_h265 && other.khr_video_decode_h265)
1775            || (self.khr_video_decode_queue && other.khr_video_decode_queue)
1776            || (self.khr_video_encode_h264 && other.khr_video_encode_h264)
1777            || (self.khr_video_encode_h265 && other.khr_video_encode_h265)
1778            || (self.khr_video_encode_queue && other.khr_video_encode_queue)
1779            || (self.khr_video_maintenance1 && other.khr_video_maintenance1)
1780            || (self.khr_video_queue && other.khr_video_queue)
1781            || (self.khr_vulkan_memory_model && other.khr_vulkan_memory_model)
1782            || (self.khr_win32_keyed_mutex && other.khr_win32_keyed_mutex)
1783            || (self.khr_workgroup_memory_explicit_layout
1784                && other.khr_workgroup_memory_explicit_layout)
1785            || (self.khr_zero_initialize_workgroup_memory
1786                && other.khr_zero_initialize_workgroup_memory)
1787            || (self.ext_4444_formats && other.ext_4444_formats)
1788            || (self.ext_astc_decode_mode && other.ext_astc_decode_mode)
1789            || (self.ext_attachment_feedback_loop_dynamic_state
1790                && other.ext_attachment_feedback_loop_dynamic_state)
1791            || (self.ext_attachment_feedback_loop_layout
1792                && other.ext_attachment_feedback_loop_layout)
1793            || (self.ext_blend_operation_advanced && other.ext_blend_operation_advanced)
1794            || (self.ext_border_color_swizzle && other.ext_border_color_swizzle)
1795            || (self.ext_buffer_device_address && other.ext_buffer_device_address)
1796            || (self.ext_calibrated_timestamps && other.ext_calibrated_timestamps)
1797            || (self.ext_color_write_enable && other.ext_color_write_enable)
1798            || (self.ext_conditional_rendering && other.ext_conditional_rendering)
1799            || (self.ext_conservative_rasterization && other.ext_conservative_rasterization)
1800            || (self.ext_custom_border_color && other.ext_custom_border_color)
1801            || (self.ext_debug_marker && other.ext_debug_marker)
1802            || (self.ext_depth_bias_control && other.ext_depth_bias_control)
1803            || (self.ext_depth_clamp_zero_one && other.ext_depth_clamp_zero_one)
1804            || (self.ext_depth_clip_control && other.ext_depth_clip_control)
1805            || (self.ext_depth_clip_enable && other.ext_depth_clip_enable)
1806            || (self.ext_depth_range_unrestricted && other.ext_depth_range_unrestricted)
1807            || (self.ext_descriptor_buffer && other.ext_descriptor_buffer)
1808            || (self.ext_descriptor_indexing && other.ext_descriptor_indexing)
1809            || (self.ext_device_address_binding_report && other.ext_device_address_binding_report)
1810            || (self.ext_device_fault && other.ext_device_fault)
1811            || (self.ext_device_memory_report && other.ext_device_memory_report)
1812            || (self.ext_discard_rectangles && other.ext_discard_rectangles)
1813            || (self.ext_display_control && other.ext_display_control)
1814            || (self.ext_dynamic_rendering_unused_attachments
1815                && other.ext_dynamic_rendering_unused_attachments)
1816            || (self.ext_extended_dynamic_state && other.ext_extended_dynamic_state)
1817            || (self.ext_extended_dynamic_state2 && other.ext_extended_dynamic_state2)
1818            || (self.ext_extended_dynamic_state3 && other.ext_extended_dynamic_state3)
1819            || (self.ext_external_memory_acquire_unmodified
1820                && other.ext_external_memory_acquire_unmodified)
1821            || (self.ext_external_memory_dma_buf && other.ext_external_memory_dma_buf)
1822            || (self.ext_external_memory_host && other.ext_external_memory_host)
1823            || (self.ext_filter_cubic && other.ext_filter_cubic)
1824            || (self.ext_fragment_density_map && other.ext_fragment_density_map)
1825            || (self.ext_fragment_density_map2 && other.ext_fragment_density_map2)
1826            || (self.ext_fragment_shader_interlock && other.ext_fragment_shader_interlock)
1827            || (self.ext_frame_boundary && other.ext_frame_boundary)
1828            || (self.ext_full_screen_exclusive && other.ext_full_screen_exclusive)
1829            || (self.ext_global_priority && other.ext_global_priority)
1830            || (self.ext_global_priority_query && other.ext_global_priority_query)
1831            || (self.ext_graphics_pipeline_library && other.ext_graphics_pipeline_library)
1832            || (self.ext_hdr_metadata && other.ext_hdr_metadata)
1833            || (self.ext_host_image_copy && other.ext_host_image_copy)
1834            || (self.ext_host_query_reset && other.ext_host_query_reset)
1835            || (self.ext_image_2d_view_of_3d && other.ext_image_2d_view_of_3d)
1836            || (self.ext_image_compression_control && other.ext_image_compression_control)
1837            || (self.ext_image_compression_control_swapchain
1838                && other.ext_image_compression_control_swapchain)
1839            || (self.ext_image_drm_format_modifier && other.ext_image_drm_format_modifier)
1840            || (self.ext_image_robustness && other.ext_image_robustness)
1841            || (self.ext_image_sliced_view_of_3d && other.ext_image_sliced_view_of_3d)
1842            || (self.ext_image_view_min_lod && other.ext_image_view_min_lod)
1843            || (self.ext_index_type_uint8 && other.ext_index_type_uint8)
1844            || (self.ext_inline_uniform_block && other.ext_inline_uniform_block)
1845            || (self.ext_legacy_dithering && other.ext_legacy_dithering)
1846            || (self.ext_line_rasterization && other.ext_line_rasterization)
1847            || (self.ext_load_store_op_none && other.ext_load_store_op_none)
1848            || (self.ext_map_memory_placed && other.ext_map_memory_placed)
1849            || (self.ext_memory_budget && other.ext_memory_budget)
1850            || (self.ext_memory_priority && other.ext_memory_priority)
1851            || (self.ext_mesh_shader && other.ext_mesh_shader)
1852            || (self.ext_metal_objects && other.ext_metal_objects)
1853            || (self.ext_multi_draw && other.ext_multi_draw)
1854            || (self.ext_multisampled_render_to_single_sampled
1855                && other.ext_multisampled_render_to_single_sampled)
1856            || (self.ext_mutable_descriptor_type && other.ext_mutable_descriptor_type)
1857            || (self.ext_nested_command_buffer && other.ext_nested_command_buffer)
1858            || (self.ext_non_seamless_cube_map && other.ext_non_seamless_cube_map)
1859            || (self.ext_opacity_micromap && other.ext_opacity_micromap)
1860            || (self.ext_pageable_device_local_memory && other.ext_pageable_device_local_memory)
1861            || (self.ext_pci_bus_info && other.ext_pci_bus_info)
1862            || (self.ext_physical_device_drm && other.ext_physical_device_drm)
1863            || (self.ext_pipeline_creation_cache_control
1864                && other.ext_pipeline_creation_cache_control)
1865            || (self.ext_pipeline_creation_feedback && other.ext_pipeline_creation_feedback)
1866            || (self.ext_pipeline_library_group_handles && other.ext_pipeline_library_group_handles)
1867            || (self.ext_pipeline_properties && other.ext_pipeline_properties)
1868            || (self.ext_pipeline_protected_access && other.ext_pipeline_protected_access)
1869            || (self.ext_pipeline_robustness && other.ext_pipeline_robustness)
1870            || (self.ext_post_depth_coverage && other.ext_post_depth_coverage)
1871            || (self.ext_primitive_topology_list_restart
1872                && other.ext_primitive_topology_list_restart)
1873            || (self.ext_primitives_generated_query && other.ext_primitives_generated_query)
1874            || (self.ext_private_data && other.ext_private_data)
1875            || (self.ext_provoking_vertex && other.ext_provoking_vertex)
1876            || (self.ext_queue_family_foreign && other.ext_queue_family_foreign)
1877            || (self.ext_rasterization_order_attachment_access
1878                && other.ext_rasterization_order_attachment_access)
1879            || (self.ext_rgba10x6_formats && other.ext_rgba10x6_formats)
1880            || (self.ext_robustness2 && other.ext_robustness2)
1881            || (self.ext_sample_locations && other.ext_sample_locations)
1882            || (self.ext_sampler_filter_minmax && other.ext_sampler_filter_minmax)
1883            || (self.ext_scalar_block_layout && other.ext_scalar_block_layout)
1884            || (self.ext_separate_stencil_usage && other.ext_separate_stencil_usage)
1885            || (self.ext_shader_atomic_float && other.ext_shader_atomic_float)
1886            || (self.ext_shader_atomic_float2 && other.ext_shader_atomic_float2)
1887            || (self.ext_shader_demote_to_helper_invocation
1888                && other.ext_shader_demote_to_helper_invocation)
1889            || (self.ext_shader_image_atomic_int64 && other.ext_shader_image_atomic_int64)
1890            || (self.ext_shader_module_identifier && other.ext_shader_module_identifier)
1891            || (self.ext_shader_object && other.ext_shader_object)
1892            || (self.ext_shader_stencil_export && other.ext_shader_stencil_export)
1893            || (self.ext_shader_subgroup_ballot && other.ext_shader_subgroup_ballot)
1894            || (self.ext_shader_subgroup_vote && other.ext_shader_subgroup_vote)
1895            || (self.ext_shader_tile_image && other.ext_shader_tile_image)
1896            || (self.ext_shader_viewport_index_layer && other.ext_shader_viewport_index_layer)
1897            || (self.ext_subgroup_size_control && other.ext_subgroup_size_control)
1898            || (self.ext_subpass_merge_feedback && other.ext_subpass_merge_feedback)
1899            || (self.ext_swapchain_maintenance1 && other.ext_swapchain_maintenance1)
1900            || (self.ext_texel_buffer_alignment && other.ext_texel_buffer_alignment)
1901            || (self.ext_texture_compression_astc_hdr && other.ext_texture_compression_astc_hdr)
1902            || (self.ext_tooling_info && other.ext_tooling_info)
1903            || (self.ext_transform_feedback && other.ext_transform_feedback)
1904            || (self.ext_validation_cache && other.ext_validation_cache)
1905            || (self.ext_vertex_attribute_divisor && other.ext_vertex_attribute_divisor)
1906            || (self.ext_vertex_input_dynamic_state && other.ext_vertex_input_dynamic_state)
1907            || (self.ext_ycbcr_2plane_444_formats && other.ext_ycbcr_2plane_444_formats)
1908            || (self.ext_ycbcr_image_arrays && other.ext_ycbcr_image_arrays)
1909            || (self.amdx_shader_enqueue && other.amdx_shader_enqueue)
1910            || (self.amd_buffer_marker && other.amd_buffer_marker)
1911            || (self.amd_device_coherent_memory && other.amd_device_coherent_memory)
1912            || (self.amd_display_native_hdr && other.amd_display_native_hdr)
1913            || (self.amd_draw_indirect_count && other.amd_draw_indirect_count)
1914            || (self.amd_gcn_shader && other.amd_gcn_shader)
1915            || (self.amd_gpu_shader_half_float && other.amd_gpu_shader_half_float)
1916            || (self.amd_gpu_shader_int16 && other.amd_gpu_shader_int16)
1917            || (self.amd_memory_overallocation_behavior && other.amd_memory_overallocation_behavior)
1918            || (self.amd_mixed_attachment_samples && other.amd_mixed_attachment_samples)
1919            || (self.amd_pipeline_compiler_control && other.amd_pipeline_compiler_control)
1920            || (self.amd_rasterization_order && other.amd_rasterization_order)
1921            || (self.amd_shader_ballot && other.amd_shader_ballot)
1922            || (self.amd_shader_core_properties && other.amd_shader_core_properties)
1923            || (self.amd_shader_core_properties2 && other.amd_shader_core_properties2)
1924            || (self.amd_shader_early_and_late_fragment_tests
1925                && other.amd_shader_early_and_late_fragment_tests)
1926            || (self.amd_shader_explicit_vertex_parameter
1927                && other.amd_shader_explicit_vertex_parameter)
1928            || (self.amd_shader_fragment_mask && other.amd_shader_fragment_mask)
1929            || (self.amd_shader_image_load_store_lod && other.amd_shader_image_load_store_lod)
1930            || (self.amd_shader_info && other.amd_shader_info)
1931            || (self.amd_shader_trinary_minmax && other.amd_shader_trinary_minmax)
1932            || (self.amd_texture_gather_bias_lod && other.amd_texture_gather_bias_lod)
1933            || (self.android_external_format_resolve && other.android_external_format_resolve)
1934            || (self.android_external_memory_android_hardware_buffer
1935                && other.android_external_memory_android_hardware_buffer)
1936            || (self.arm_rasterization_order_attachment_access
1937                && other.arm_rasterization_order_attachment_access)
1938            || (self.arm_render_pass_striped && other.arm_render_pass_striped)
1939            || (self.arm_scheduling_controls && other.arm_scheduling_controls)
1940            || (self.arm_shader_core_builtins && other.arm_shader_core_builtins)
1941            || (self.arm_shader_core_properties && other.arm_shader_core_properties)
1942            || (self.fuchsia_buffer_collection && other.fuchsia_buffer_collection)
1943            || (self.fuchsia_external_memory && other.fuchsia_external_memory)
1944            || (self.fuchsia_external_semaphore && other.fuchsia_external_semaphore)
1945            || (self.ggp_frame_token && other.ggp_frame_token)
1946            || (self.google_decorate_string && other.google_decorate_string)
1947            || (self.google_display_timing && other.google_display_timing)
1948            || (self.google_hlsl_functionality1 && other.google_hlsl_functionality1)
1949            || (self.google_user_type && other.google_user_type)
1950            || (self.huawei_cluster_culling_shader && other.huawei_cluster_culling_shader)
1951            || (self.huawei_invocation_mask && other.huawei_invocation_mask)
1952            || (self.huawei_subpass_shading && other.huawei_subpass_shading)
1953            || (self.img_filter_cubic && other.img_filter_cubic)
1954            || (self.img_format_pvrtc && other.img_format_pvrtc)
1955            || (self.img_relaxed_line_rasterization && other.img_relaxed_line_rasterization)
1956            || (self.intel_performance_query && other.intel_performance_query)
1957            || (self.intel_shader_integer_functions2 && other.intel_shader_integer_functions2)
1958            || (self.msft_layered_driver && other.msft_layered_driver)
1959            || (self.nvx_binary_import && other.nvx_binary_import)
1960            || (self.nvx_image_view_handle && other.nvx_image_view_handle)
1961            || (self.nvx_multiview_per_view_attributes && other.nvx_multiview_per_view_attributes)
1962            || (self.nv_acquire_winrt_display && other.nv_acquire_winrt_display)
1963            || (self.nv_clip_space_w_scaling && other.nv_clip_space_w_scaling)
1964            || (self.nv_compute_shader_derivatives && other.nv_compute_shader_derivatives)
1965            || (self.nv_cooperative_matrix && other.nv_cooperative_matrix)
1966            || (self.nv_copy_memory_indirect && other.nv_copy_memory_indirect)
1967            || (self.nv_corner_sampled_image && other.nv_corner_sampled_image)
1968            || (self.nv_coverage_reduction_mode && other.nv_coverage_reduction_mode)
1969            || (self.nv_cuda_kernel_launch && other.nv_cuda_kernel_launch)
1970            || (self.nv_dedicated_allocation && other.nv_dedicated_allocation)
1971            || (self.nv_dedicated_allocation_image_aliasing
1972                && other.nv_dedicated_allocation_image_aliasing)
1973            || (self.nv_descriptor_pool_overallocation && other.nv_descriptor_pool_overallocation)
1974            || (self.nv_device_diagnostic_checkpoints && other.nv_device_diagnostic_checkpoints)
1975            || (self.nv_device_diagnostics_config && other.nv_device_diagnostics_config)
1976            || (self.nv_device_generated_commands && other.nv_device_generated_commands)
1977            || (self.nv_device_generated_commands_compute
1978                && other.nv_device_generated_commands_compute)
1979            || (self.nv_displacement_micromap && other.nv_displacement_micromap)
1980            || (self.nv_extended_sparse_address_space && other.nv_extended_sparse_address_space)
1981            || (self.nv_external_memory && other.nv_external_memory)
1982            || (self.nv_external_memory_rdma && other.nv_external_memory_rdma)
1983            || (self.nv_external_memory_win32 && other.nv_external_memory_win32)
1984            || (self.nv_fill_rectangle && other.nv_fill_rectangle)
1985            || (self.nv_fragment_coverage_to_color && other.nv_fragment_coverage_to_color)
1986            || (self.nv_fragment_shader_barycentric && other.nv_fragment_shader_barycentric)
1987            || (self.nv_fragment_shading_rate_enums && other.nv_fragment_shading_rate_enums)
1988            || (self.nv_framebuffer_mixed_samples && other.nv_framebuffer_mixed_samples)
1989            || (self.nv_geometry_shader_passthrough && other.nv_geometry_shader_passthrough)
1990            || (self.nv_glsl_shader && other.nv_glsl_shader)
1991            || (self.nv_inherited_viewport_scissor && other.nv_inherited_viewport_scissor)
1992            || (self.nv_linear_color_attachment && other.nv_linear_color_attachment)
1993            || (self.nv_low_latency && other.nv_low_latency)
1994            || (self.nv_low_latency2 && other.nv_low_latency2)
1995            || (self.nv_memory_decompression && other.nv_memory_decompression)
1996            || (self.nv_mesh_shader && other.nv_mesh_shader)
1997            || (self.nv_optical_flow && other.nv_optical_flow)
1998            || (self.nv_per_stage_descriptor_set && other.nv_per_stage_descriptor_set)
1999            || (self.nv_present_barrier && other.nv_present_barrier)
2000            || (self.nv_raw_access_chains && other.nv_raw_access_chains)
2001            || (self.nv_ray_tracing && other.nv_ray_tracing)
2002            || (self.nv_ray_tracing_invocation_reorder && other.nv_ray_tracing_invocation_reorder)
2003            || (self.nv_ray_tracing_motion_blur && other.nv_ray_tracing_motion_blur)
2004            || (self.nv_ray_tracing_validation && other.nv_ray_tracing_validation)
2005            || (self.nv_representative_fragment_test && other.nv_representative_fragment_test)
2006            || (self.nv_sample_mask_override_coverage && other.nv_sample_mask_override_coverage)
2007            || (self.nv_scissor_exclusive && other.nv_scissor_exclusive)
2008            || (self.nv_shader_atomic_float16_vector && other.nv_shader_atomic_float16_vector)
2009            || (self.nv_shader_image_footprint && other.nv_shader_image_footprint)
2010            || (self.nv_shader_sm_builtins && other.nv_shader_sm_builtins)
2011            || (self.nv_shader_subgroup_partitioned && other.nv_shader_subgroup_partitioned)
2012            || (self.nv_shading_rate_image && other.nv_shading_rate_image)
2013            || (self.nv_viewport_array2 && other.nv_viewport_array2)
2014            || (self.nv_viewport_swizzle && other.nv_viewport_swizzle)
2015            || (self.nv_win32_keyed_mutex && other.nv_win32_keyed_mutex)
2016            || (self.qcom_filter_cubic_clamp && other.qcom_filter_cubic_clamp)
2017            || (self.qcom_filter_cubic_weights && other.qcom_filter_cubic_weights)
2018            || (self.qcom_fragment_density_map_offset && other.qcom_fragment_density_map_offset)
2019            || (self.qcom_image_processing && other.qcom_image_processing)
2020            || (self.qcom_image_processing2 && other.qcom_image_processing2)
2021            || (self.qcom_multiview_per_view_render_areas
2022                && other.qcom_multiview_per_view_render_areas)
2023            || (self.qcom_multiview_per_view_viewports && other.qcom_multiview_per_view_viewports)
2024            || (self.qcom_render_pass_shader_resolve && other.qcom_render_pass_shader_resolve)
2025            || (self.qcom_render_pass_store_ops && other.qcom_render_pass_store_ops)
2026            || (self.qcom_render_pass_transform && other.qcom_render_pass_transform)
2027            || (self.qcom_rotated_copy_commands && other.qcom_rotated_copy_commands)
2028            || (self.qcom_tile_properties && other.qcom_tile_properties)
2029            || (self.qcom_ycbcr_degamma && other.qcom_ycbcr_degamma)
2030            || (self.qnx_external_memory_screen_buffer && other.qnx_external_memory_screen_buffer)
2031            || (self.sec_amigo_profiling && other.sec_amigo_profiling)
2032            || (self.valve_descriptor_set_host_mapping && other.valve_descriptor_set_host_mapping)
2033            || (self.valve_mutable_descriptor_type && other.valve_mutable_descriptor_type)
2034    }
2035    #[doc = r" Returns whether all members in `other` are set in `self`."]
2036    #[inline]
2037    pub const fn contains(&self, other: &Self) -> bool {
2038        (self.khr_16bit_storage || !other.khr_16bit_storage)
2039            && (self.khr_8bit_storage || !other.khr_8bit_storage)
2040            && (self.khr_acceleration_structure || !other.khr_acceleration_structure)
2041            && (self.khr_bind_memory2 || !other.khr_bind_memory2)
2042            && (self.khr_buffer_device_address || !other.khr_buffer_device_address)
2043            && (self.khr_calibrated_timestamps || !other.khr_calibrated_timestamps)
2044            && (self.khr_cooperative_matrix || !other.khr_cooperative_matrix)
2045            && (self.khr_copy_commands2 || !other.khr_copy_commands2)
2046            && (self.khr_create_renderpass2 || !other.khr_create_renderpass2)
2047            && (self.khr_dedicated_allocation || !other.khr_dedicated_allocation)
2048            && (self.khr_deferred_host_operations || !other.khr_deferred_host_operations)
2049            && (self.khr_depth_stencil_resolve || !other.khr_depth_stencil_resolve)
2050            && (self.khr_descriptor_update_template || !other.khr_descriptor_update_template)
2051            && (self.khr_device_group || !other.khr_device_group)
2052            && (self.khr_display_swapchain || !other.khr_display_swapchain)
2053            && (self.khr_draw_indirect_count || !other.khr_draw_indirect_count)
2054            && (self.khr_driver_properties || !other.khr_driver_properties)
2055            && (self.khr_dynamic_rendering || !other.khr_dynamic_rendering)
2056            && (self.khr_dynamic_rendering_local_read || !other.khr_dynamic_rendering_local_read)
2057            && (self.khr_external_fence || !other.khr_external_fence)
2058            && (self.khr_external_fence_fd || !other.khr_external_fence_fd)
2059            && (self.khr_external_fence_win32 || !other.khr_external_fence_win32)
2060            && (self.khr_external_memory || !other.khr_external_memory)
2061            && (self.khr_external_memory_fd || !other.khr_external_memory_fd)
2062            && (self.khr_external_memory_win32 || !other.khr_external_memory_win32)
2063            && (self.khr_external_semaphore || !other.khr_external_semaphore)
2064            && (self.khr_external_semaphore_fd || !other.khr_external_semaphore_fd)
2065            && (self.khr_external_semaphore_win32 || !other.khr_external_semaphore_win32)
2066            && (self.khr_format_feature_flags2 || !other.khr_format_feature_flags2)
2067            && (self.khr_fragment_shader_barycentric || !other.khr_fragment_shader_barycentric)
2068            && (self.khr_fragment_shading_rate || !other.khr_fragment_shading_rate)
2069            && (self.khr_get_memory_requirements2 || !other.khr_get_memory_requirements2)
2070            && (self.khr_global_priority || !other.khr_global_priority)
2071            && (self.khr_image_format_list || !other.khr_image_format_list)
2072            && (self.khr_imageless_framebuffer || !other.khr_imageless_framebuffer)
2073            && (self.khr_incremental_present || !other.khr_incremental_present)
2074            && (self.khr_index_type_uint8 || !other.khr_index_type_uint8)
2075            && (self.khr_line_rasterization || !other.khr_line_rasterization)
2076            && (self.khr_load_store_op_none || !other.khr_load_store_op_none)
2077            && (self.khr_maintenance1 || !other.khr_maintenance1)
2078            && (self.khr_maintenance2 || !other.khr_maintenance2)
2079            && (self.khr_maintenance3 || !other.khr_maintenance3)
2080            && (self.khr_maintenance4 || !other.khr_maintenance4)
2081            && (self.khr_maintenance5 || !other.khr_maintenance5)
2082            && (self.khr_maintenance6 || !other.khr_maintenance6)
2083            && (self.khr_map_memory2 || !other.khr_map_memory2)
2084            && (self.khr_multiview || !other.khr_multiview)
2085            && (self.khr_performance_query || !other.khr_performance_query)
2086            && (self.khr_pipeline_executable_properties
2087                || !other.khr_pipeline_executable_properties)
2088            && (self.khr_pipeline_library || !other.khr_pipeline_library)
2089            && (self.khr_portability_subset || !other.khr_portability_subset)
2090            && (self.khr_present_id || !other.khr_present_id)
2091            && (self.khr_present_wait || !other.khr_present_wait)
2092            && (self.khr_push_descriptor || !other.khr_push_descriptor)
2093            && (self.khr_ray_query || !other.khr_ray_query)
2094            && (self.khr_ray_tracing_maintenance1 || !other.khr_ray_tracing_maintenance1)
2095            && (self.khr_ray_tracing_pipeline || !other.khr_ray_tracing_pipeline)
2096            && (self.khr_ray_tracing_position_fetch || !other.khr_ray_tracing_position_fetch)
2097            && (self.khr_relaxed_block_layout || !other.khr_relaxed_block_layout)
2098            && (self.khr_sampler_mirror_clamp_to_edge || !other.khr_sampler_mirror_clamp_to_edge)
2099            && (self.khr_sampler_ycbcr_conversion || !other.khr_sampler_ycbcr_conversion)
2100            && (self.khr_separate_depth_stencil_layouts
2101                || !other.khr_separate_depth_stencil_layouts)
2102            && (self.khr_shader_atomic_int64 || !other.khr_shader_atomic_int64)
2103            && (self.khr_shader_clock || !other.khr_shader_clock)
2104            && (self.khr_shader_draw_parameters || !other.khr_shader_draw_parameters)
2105            && (self.khr_shader_expect_assume || !other.khr_shader_expect_assume)
2106            && (self.khr_shader_float16_int8 || !other.khr_shader_float16_int8)
2107            && (self.khr_shader_float_controls || !other.khr_shader_float_controls)
2108            && (self.khr_shader_float_controls2 || !other.khr_shader_float_controls2)
2109            && (self.khr_shader_integer_dot_product || !other.khr_shader_integer_dot_product)
2110            && (self.khr_shader_maximal_reconvergence || !other.khr_shader_maximal_reconvergence)
2111            && (self.khr_shader_non_semantic_info || !other.khr_shader_non_semantic_info)
2112            && (self.khr_shader_quad_control || !other.khr_shader_quad_control)
2113            && (self.khr_shader_subgroup_extended_types
2114                || !other.khr_shader_subgroup_extended_types)
2115            && (self.khr_shader_subgroup_rotate || !other.khr_shader_subgroup_rotate)
2116            && (self.khr_shader_subgroup_uniform_control_flow
2117                || !other.khr_shader_subgroup_uniform_control_flow)
2118            && (self.khr_shader_terminate_invocation || !other.khr_shader_terminate_invocation)
2119            && (self.khr_shared_presentable_image || !other.khr_shared_presentable_image)
2120            && (self.khr_spirv_1_4 || !other.khr_spirv_1_4)
2121            && (self.khr_storage_buffer_storage_class || !other.khr_storage_buffer_storage_class)
2122            && (self.khr_swapchain || !other.khr_swapchain)
2123            && (self.khr_swapchain_mutable_format || !other.khr_swapchain_mutable_format)
2124            && (self.khr_synchronization2 || !other.khr_synchronization2)
2125            && (self.khr_timeline_semaphore || !other.khr_timeline_semaphore)
2126            && (self.khr_uniform_buffer_standard_layout
2127                || !other.khr_uniform_buffer_standard_layout)
2128            && (self.khr_variable_pointers || !other.khr_variable_pointers)
2129            && (self.khr_vertex_attribute_divisor || !other.khr_vertex_attribute_divisor)
2130            && (self.khr_video_decode_av1 || !other.khr_video_decode_av1)
2131            && (self.khr_video_decode_h264 || !other.khr_video_decode_h264)
2132            && (self.khr_video_decode_h265 || !other.khr_video_decode_h265)
2133            && (self.khr_video_decode_queue || !other.khr_video_decode_queue)
2134            && (self.khr_video_encode_h264 || !other.khr_video_encode_h264)
2135            && (self.khr_video_encode_h265 || !other.khr_video_encode_h265)
2136            && (self.khr_video_encode_queue || !other.khr_video_encode_queue)
2137            && (self.khr_video_maintenance1 || !other.khr_video_maintenance1)
2138            && (self.khr_video_queue || !other.khr_video_queue)
2139            && (self.khr_vulkan_memory_model || !other.khr_vulkan_memory_model)
2140            && (self.khr_win32_keyed_mutex || !other.khr_win32_keyed_mutex)
2141            && (self.khr_workgroup_memory_explicit_layout
2142                || !other.khr_workgroup_memory_explicit_layout)
2143            && (self.khr_zero_initialize_workgroup_memory
2144                || !other.khr_zero_initialize_workgroup_memory)
2145            && (self.ext_4444_formats || !other.ext_4444_formats)
2146            && (self.ext_astc_decode_mode || !other.ext_astc_decode_mode)
2147            && (self.ext_attachment_feedback_loop_dynamic_state
2148                || !other.ext_attachment_feedback_loop_dynamic_state)
2149            && (self.ext_attachment_feedback_loop_layout
2150                || !other.ext_attachment_feedback_loop_layout)
2151            && (self.ext_blend_operation_advanced || !other.ext_blend_operation_advanced)
2152            && (self.ext_border_color_swizzle || !other.ext_border_color_swizzle)
2153            && (self.ext_buffer_device_address || !other.ext_buffer_device_address)
2154            && (self.ext_calibrated_timestamps || !other.ext_calibrated_timestamps)
2155            && (self.ext_color_write_enable || !other.ext_color_write_enable)
2156            && (self.ext_conditional_rendering || !other.ext_conditional_rendering)
2157            && (self.ext_conservative_rasterization || !other.ext_conservative_rasterization)
2158            && (self.ext_custom_border_color || !other.ext_custom_border_color)
2159            && (self.ext_debug_marker || !other.ext_debug_marker)
2160            && (self.ext_depth_bias_control || !other.ext_depth_bias_control)
2161            && (self.ext_depth_clamp_zero_one || !other.ext_depth_clamp_zero_one)
2162            && (self.ext_depth_clip_control || !other.ext_depth_clip_control)
2163            && (self.ext_depth_clip_enable || !other.ext_depth_clip_enable)
2164            && (self.ext_depth_range_unrestricted || !other.ext_depth_range_unrestricted)
2165            && (self.ext_descriptor_buffer || !other.ext_descriptor_buffer)
2166            && (self.ext_descriptor_indexing || !other.ext_descriptor_indexing)
2167            && (self.ext_device_address_binding_report || !other.ext_device_address_binding_report)
2168            && (self.ext_device_fault || !other.ext_device_fault)
2169            && (self.ext_device_memory_report || !other.ext_device_memory_report)
2170            && (self.ext_discard_rectangles || !other.ext_discard_rectangles)
2171            && (self.ext_display_control || !other.ext_display_control)
2172            && (self.ext_dynamic_rendering_unused_attachments
2173                || !other.ext_dynamic_rendering_unused_attachments)
2174            && (self.ext_extended_dynamic_state || !other.ext_extended_dynamic_state)
2175            && (self.ext_extended_dynamic_state2 || !other.ext_extended_dynamic_state2)
2176            && (self.ext_extended_dynamic_state3 || !other.ext_extended_dynamic_state3)
2177            && (self.ext_external_memory_acquire_unmodified
2178                || !other.ext_external_memory_acquire_unmodified)
2179            && (self.ext_external_memory_dma_buf || !other.ext_external_memory_dma_buf)
2180            && (self.ext_external_memory_host || !other.ext_external_memory_host)
2181            && (self.ext_filter_cubic || !other.ext_filter_cubic)
2182            && (self.ext_fragment_density_map || !other.ext_fragment_density_map)
2183            && (self.ext_fragment_density_map2 || !other.ext_fragment_density_map2)
2184            && (self.ext_fragment_shader_interlock || !other.ext_fragment_shader_interlock)
2185            && (self.ext_frame_boundary || !other.ext_frame_boundary)
2186            && (self.ext_full_screen_exclusive || !other.ext_full_screen_exclusive)
2187            && (self.ext_global_priority || !other.ext_global_priority)
2188            && (self.ext_global_priority_query || !other.ext_global_priority_query)
2189            && (self.ext_graphics_pipeline_library || !other.ext_graphics_pipeline_library)
2190            && (self.ext_hdr_metadata || !other.ext_hdr_metadata)
2191            && (self.ext_host_image_copy || !other.ext_host_image_copy)
2192            && (self.ext_host_query_reset || !other.ext_host_query_reset)
2193            && (self.ext_image_2d_view_of_3d || !other.ext_image_2d_view_of_3d)
2194            && (self.ext_image_compression_control || !other.ext_image_compression_control)
2195            && (self.ext_image_compression_control_swapchain
2196                || !other.ext_image_compression_control_swapchain)
2197            && (self.ext_image_drm_format_modifier || !other.ext_image_drm_format_modifier)
2198            && (self.ext_image_robustness || !other.ext_image_robustness)
2199            && (self.ext_image_sliced_view_of_3d || !other.ext_image_sliced_view_of_3d)
2200            && (self.ext_image_view_min_lod || !other.ext_image_view_min_lod)
2201            && (self.ext_index_type_uint8 || !other.ext_index_type_uint8)
2202            && (self.ext_inline_uniform_block || !other.ext_inline_uniform_block)
2203            && (self.ext_legacy_dithering || !other.ext_legacy_dithering)
2204            && (self.ext_line_rasterization || !other.ext_line_rasterization)
2205            && (self.ext_load_store_op_none || !other.ext_load_store_op_none)
2206            && (self.ext_map_memory_placed || !other.ext_map_memory_placed)
2207            && (self.ext_memory_budget || !other.ext_memory_budget)
2208            && (self.ext_memory_priority || !other.ext_memory_priority)
2209            && (self.ext_mesh_shader || !other.ext_mesh_shader)
2210            && (self.ext_metal_objects || !other.ext_metal_objects)
2211            && (self.ext_multi_draw || !other.ext_multi_draw)
2212            && (self.ext_multisampled_render_to_single_sampled
2213                || !other.ext_multisampled_render_to_single_sampled)
2214            && (self.ext_mutable_descriptor_type || !other.ext_mutable_descriptor_type)
2215            && (self.ext_nested_command_buffer || !other.ext_nested_command_buffer)
2216            && (self.ext_non_seamless_cube_map || !other.ext_non_seamless_cube_map)
2217            && (self.ext_opacity_micromap || !other.ext_opacity_micromap)
2218            && (self.ext_pageable_device_local_memory || !other.ext_pageable_device_local_memory)
2219            && (self.ext_pci_bus_info || !other.ext_pci_bus_info)
2220            && (self.ext_physical_device_drm || !other.ext_physical_device_drm)
2221            && (self.ext_pipeline_creation_cache_control
2222                || !other.ext_pipeline_creation_cache_control)
2223            && (self.ext_pipeline_creation_feedback || !other.ext_pipeline_creation_feedback)
2224            && (self.ext_pipeline_library_group_handles
2225                || !other.ext_pipeline_library_group_handles)
2226            && (self.ext_pipeline_properties || !other.ext_pipeline_properties)
2227            && (self.ext_pipeline_protected_access || !other.ext_pipeline_protected_access)
2228            && (self.ext_pipeline_robustness || !other.ext_pipeline_robustness)
2229            && (self.ext_post_depth_coverage || !other.ext_post_depth_coverage)
2230            && (self.ext_primitive_topology_list_restart
2231                || !other.ext_primitive_topology_list_restart)
2232            && (self.ext_primitives_generated_query || !other.ext_primitives_generated_query)
2233            && (self.ext_private_data || !other.ext_private_data)
2234            && (self.ext_provoking_vertex || !other.ext_provoking_vertex)
2235            && (self.ext_queue_family_foreign || !other.ext_queue_family_foreign)
2236            && (self.ext_rasterization_order_attachment_access
2237                || !other.ext_rasterization_order_attachment_access)
2238            && (self.ext_rgba10x6_formats || !other.ext_rgba10x6_formats)
2239            && (self.ext_robustness2 || !other.ext_robustness2)
2240            && (self.ext_sample_locations || !other.ext_sample_locations)
2241            && (self.ext_sampler_filter_minmax || !other.ext_sampler_filter_minmax)
2242            && (self.ext_scalar_block_layout || !other.ext_scalar_block_layout)
2243            && (self.ext_separate_stencil_usage || !other.ext_separate_stencil_usage)
2244            && (self.ext_shader_atomic_float || !other.ext_shader_atomic_float)
2245            && (self.ext_shader_atomic_float2 || !other.ext_shader_atomic_float2)
2246            && (self.ext_shader_demote_to_helper_invocation
2247                || !other.ext_shader_demote_to_helper_invocation)
2248            && (self.ext_shader_image_atomic_int64 || !other.ext_shader_image_atomic_int64)
2249            && (self.ext_shader_module_identifier || !other.ext_shader_module_identifier)
2250            && (self.ext_shader_object || !other.ext_shader_object)
2251            && (self.ext_shader_stencil_export || !other.ext_shader_stencil_export)
2252            && (self.ext_shader_subgroup_ballot || !other.ext_shader_subgroup_ballot)
2253            && (self.ext_shader_subgroup_vote || !other.ext_shader_subgroup_vote)
2254            && (self.ext_shader_tile_image || !other.ext_shader_tile_image)
2255            && (self.ext_shader_viewport_index_layer || !other.ext_shader_viewport_index_layer)
2256            && (self.ext_subgroup_size_control || !other.ext_subgroup_size_control)
2257            && (self.ext_subpass_merge_feedback || !other.ext_subpass_merge_feedback)
2258            && (self.ext_swapchain_maintenance1 || !other.ext_swapchain_maintenance1)
2259            && (self.ext_texel_buffer_alignment || !other.ext_texel_buffer_alignment)
2260            && (self.ext_texture_compression_astc_hdr || !other.ext_texture_compression_astc_hdr)
2261            && (self.ext_tooling_info || !other.ext_tooling_info)
2262            && (self.ext_transform_feedback || !other.ext_transform_feedback)
2263            && (self.ext_validation_cache || !other.ext_validation_cache)
2264            && (self.ext_vertex_attribute_divisor || !other.ext_vertex_attribute_divisor)
2265            && (self.ext_vertex_input_dynamic_state || !other.ext_vertex_input_dynamic_state)
2266            && (self.ext_ycbcr_2plane_444_formats || !other.ext_ycbcr_2plane_444_formats)
2267            && (self.ext_ycbcr_image_arrays || !other.ext_ycbcr_image_arrays)
2268            && (self.amdx_shader_enqueue || !other.amdx_shader_enqueue)
2269            && (self.amd_buffer_marker || !other.amd_buffer_marker)
2270            && (self.amd_device_coherent_memory || !other.amd_device_coherent_memory)
2271            && (self.amd_display_native_hdr || !other.amd_display_native_hdr)
2272            && (self.amd_draw_indirect_count || !other.amd_draw_indirect_count)
2273            && (self.amd_gcn_shader || !other.amd_gcn_shader)
2274            && (self.amd_gpu_shader_half_float || !other.amd_gpu_shader_half_float)
2275            && (self.amd_gpu_shader_int16 || !other.amd_gpu_shader_int16)
2276            && (self.amd_memory_overallocation_behavior
2277                || !other.amd_memory_overallocation_behavior)
2278            && (self.amd_mixed_attachment_samples || !other.amd_mixed_attachment_samples)
2279            && (self.amd_pipeline_compiler_control || !other.amd_pipeline_compiler_control)
2280            && (self.amd_rasterization_order || !other.amd_rasterization_order)
2281            && (self.amd_shader_ballot || !other.amd_shader_ballot)
2282            && (self.amd_shader_core_properties || !other.amd_shader_core_properties)
2283            && (self.amd_shader_core_properties2 || !other.amd_shader_core_properties2)
2284            && (self.amd_shader_early_and_late_fragment_tests
2285                || !other.amd_shader_early_and_late_fragment_tests)
2286            && (self.amd_shader_explicit_vertex_parameter
2287                || !other.amd_shader_explicit_vertex_parameter)
2288            && (self.amd_shader_fragment_mask || !other.amd_shader_fragment_mask)
2289            && (self.amd_shader_image_load_store_lod || !other.amd_shader_image_load_store_lod)
2290            && (self.amd_shader_info || !other.amd_shader_info)
2291            && (self.amd_shader_trinary_minmax || !other.amd_shader_trinary_minmax)
2292            && (self.amd_texture_gather_bias_lod || !other.amd_texture_gather_bias_lod)
2293            && (self.android_external_format_resolve || !other.android_external_format_resolve)
2294            && (self.android_external_memory_android_hardware_buffer
2295                || !other.android_external_memory_android_hardware_buffer)
2296            && (self.arm_rasterization_order_attachment_access
2297                || !other.arm_rasterization_order_attachment_access)
2298            && (self.arm_render_pass_striped || !other.arm_render_pass_striped)
2299            && (self.arm_scheduling_controls || !other.arm_scheduling_controls)
2300            && (self.arm_shader_core_builtins || !other.arm_shader_core_builtins)
2301            && (self.arm_shader_core_properties || !other.arm_shader_core_properties)
2302            && (self.fuchsia_buffer_collection || !other.fuchsia_buffer_collection)
2303            && (self.fuchsia_external_memory || !other.fuchsia_external_memory)
2304            && (self.fuchsia_external_semaphore || !other.fuchsia_external_semaphore)
2305            && (self.ggp_frame_token || !other.ggp_frame_token)
2306            && (self.google_decorate_string || !other.google_decorate_string)
2307            && (self.google_display_timing || !other.google_display_timing)
2308            && (self.google_hlsl_functionality1 || !other.google_hlsl_functionality1)
2309            && (self.google_user_type || !other.google_user_type)
2310            && (self.huawei_cluster_culling_shader || !other.huawei_cluster_culling_shader)
2311            && (self.huawei_invocation_mask || !other.huawei_invocation_mask)
2312            && (self.huawei_subpass_shading || !other.huawei_subpass_shading)
2313            && (self.img_filter_cubic || !other.img_filter_cubic)
2314            && (self.img_format_pvrtc || !other.img_format_pvrtc)
2315            && (self.img_relaxed_line_rasterization || !other.img_relaxed_line_rasterization)
2316            && (self.intel_performance_query || !other.intel_performance_query)
2317            && (self.intel_shader_integer_functions2 || !other.intel_shader_integer_functions2)
2318            && (self.msft_layered_driver || !other.msft_layered_driver)
2319            && (self.nvx_binary_import || !other.nvx_binary_import)
2320            && (self.nvx_image_view_handle || !other.nvx_image_view_handle)
2321            && (self.nvx_multiview_per_view_attributes || !other.nvx_multiview_per_view_attributes)
2322            && (self.nv_acquire_winrt_display || !other.nv_acquire_winrt_display)
2323            && (self.nv_clip_space_w_scaling || !other.nv_clip_space_w_scaling)
2324            && (self.nv_compute_shader_derivatives || !other.nv_compute_shader_derivatives)
2325            && (self.nv_cooperative_matrix || !other.nv_cooperative_matrix)
2326            && (self.nv_copy_memory_indirect || !other.nv_copy_memory_indirect)
2327            && (self.nv_corner_sampled_image || !other.nv_corner_sampled_image)
2328            && (self.nv_coverage_reduction_mode || !other.nv_coverage_reduction_mode)
2329            && (self.nv_cuda_kernel_launch || !other.nv_cuda_kernel_launch)
2330            && (self.nv_dedicated_allocation || !other.nv_dedicated_allocation)
2331            && (self.nv_dedicated_allocation_image_aliasing
2332                || !other.nv_dedicated_allocation_image_aliasing)
2333            && (self.nv_descriptor_pool_overallocation || !other.nv_descriptor_pool_overallocation)
2334            && (self.nv_device_diagnostic_checkpoints || !other.nv_device_diagnostic_checkpoints)
2335            && (self.nv_device_diagnostics_config || !other.nv_device_diagnostics_config)
2336            && (self.nv_device_generated_commands || !other.nv_device_generated_commands)
2337            && (self.nv_device_generated_commands_compute
2338                || !other.nv_device_generated_commands_compute)
2339            && (self.nv_displacement_micromap || !other.nv_displacement_micromap)
2340            && (self.nv_extended_sparse_address_space || !other.nv_extended_sparse_address_space)
2341            && (self.nv_external_memory || !other.nv_external_memory)
2342            && (self.nv_external_memory_rdma || !other.nv_external_memory_rdma)
2343            && (self.nv_external_memory_win32 || !other.nv_external_memory_win32)
2344            && (self.nv_fill_rectangle || !other.nv_fill_rectangle)
2345            && (self.nv_fragment_coverage_to_color || !other.nv_fragment_coverage_to_color)
2346            && (self.nv_fragment_shader_barycentric || !other.nv_fragment_shader_barycentric)
2347            && (self.nv_fragment_shading_rate_enums || !other.nv_fragment_shading_rate_enums)
2348            && (self.nv_framebuffer_mixed_samples || !other.nv_framebuffer_mixed_samples)
2349            && (self.nv_geometry_shader_passthrough || !other.nv_geometry_shader_passthrough)
2350            && (self.nv_glsl_shader || !other.nv_glsl_shader)
2351            && (self.nv_inherited_viewport_scissor || !other.nv_inherited_viewport_scissor)
2352            && (self.nv_linear_color_attachment || !other.nv_linear_color_attachment)
2353            && (self.nv_low_latency || !other.nv_low_latency)
2354            && (self.nv_low_latency2 || !other.nv_low_latency2)
2355            && (self.nv_memory_decompression || !other.nv_memory_decompression)
2356            && (self.nv_mesh_shader || !other.nv_mesh_shader)
2357            && (self.nv_optical_flow || !other.nv_optical_flow)
2358            && (self.nv_per_stage_descriptor_set || !other.nv_per_stage_descriptor_set)
2359            && (self.nv_present_barrier || !other.nv_present_barrier)
2360            && (self.nv_raw_access_chains || !other.nv_raw_access_chains)
2361            && (self.nv_ray_tracing || !other.nv_ray_tracing)
2362            && (self.nv_ray_tracing_invocation_reorder || !other.nv_ray_tracing_invocation_reorder)
2363            && (self.nv_ray_tracing_motion_blur || !other.nv_ray_tracing_motion_blur)
2364            && (self.nv_ray_tracing_validation || !other.nv_ray_tracing_validation)
2365            && (self.nv_representative_fragment_test || !other.nv_representative_fragment_test)
2366            && (self.nv_sample_mask_override_coverage || !other.nv_sample_mask_override_coverage)
2367            && (self.nv_scissor_exclusive || !other.nv_scissor_exclusive)
2368            && (self.nv_shader_atomic_float16_vector || !other.nv_shader_atomic_float16_vector)
2369            && (self.nv_shader_image_footprint || !other.nv_shader_image_footprint)
2370            && (self.nv_shader_sm_builtins || !other.nv_shader_sm_builtins)
2371            && (self.nv_shader_subgroup_partitioned || !other.nv_shader_subgroup_partitioned)
2372            && (self.nv_shading_rate_image || !other.nv_shading_rate_image)
2373            && (self.nv_viewport_array2 || !other.nv_viewport_array2)
2374            && (self.nv_viewport_swizzle || !other.nv_viewport_swizzle)
2375            && (self.nv_win32_keyed_mutex || !other.nv_win32_keyed_mutex)
2376            && (self.qcom_filter_cubic_clamp || !other.qcom_filter_cubic_clamp)
2377            && (self.qcom_filter_cubic_weights || !other.qcom_filter_cubic_weights)
2378            && (self.qcom_fragment_density_map_offset || !other.qcom_fragment_density_map_offset)
2379            && (self.qcom_image_processing || !other.qcom_image_processing)
2380            && (self.qcom_image_processing2 || !other.qcom_image_processing2)
2381            && (self.qcom_multiview_per_view_render_areas
2382                || !other.qcom_multiview_per_view_render_areas)
2383            && (self.qcom_multiview_per_view_viewports || !other.qcom_multiview_per_view_viewports)
2384            && (self.qcom_render_pass_shader_resolve || !other.qcom_render_pass_shader_resolve)
2385            && (self.qcom_render_pass_store_ops || !other.qcom_render_pass_store_ops)
2386            && (self.qcom_render_pass_transform || !other.qcom_render_pass_transform)
2387            && (self.qcom_rotated_copy_commands || !other.qcom_rotated_copy_commands)
2388            && (self.qcom_tile_properties || !other.qcom_tile_properties)
2389            && (self.qcom_ycbcr_degamma || !other.qcom_ycbcr_degamma)
2390            && (self.qnx_external_memory_screen_buffer || !other.qnx_external_memory_screen_buffer)
2391            && (self.sec_amigo_profiling || !other.sec_amigo_profiling)
2392            && (self.valve_descriptor_set_host_mapping || !other.valve_descriptor_set_host_mapping)
2393            && (self.valve_mutable_descriptor_type || !other.valve_mutable_descriptor_type)
2394    }
2395    #[doc = r" Returns the union of `self` and `other`."]
2396    #[inline]
2397    pub const fn union(&self, other: &Self) -> Self {
2398        Self {
2399            khr_16bit_storage: self.khr_16bit_storage || other.khr_16bit_storage,
2400            khr_8bit_storage: self.khr_8bit_storage || other.khr_8bit_storage,
2401            khr_acceleration_structure: self.khr_acceleration_structure
2402                || other.khr_acceleration_structure,
2403            khr_bind_memory2: self.khr_bind_memory2 || other.khr_bind_memory2,
2404            khr_buffer_device_address: self.khr_buffer_device_address
2405                || other.khr_buffer_device_address,
2406            khr_calibrated_timestamps: self.khr_calibrated_timestamps
2407                || other.khr_calibrated_timestamps,
2408            khr_cooperative_matrix: self.khr_cooperative_matrix || other.khr_cooperative_matrix,
2409            khr_copy_commands2: self.khr_copy_commands2 || other.khr_copy_commands2,
2410            khr_create_renderpass2: self.khr_create_renderpass2 || other.khr_create_renderpass2,
2411            khr_dedicated_allocation: self.khr_dedicated_allocation
2412                || other.khr_dedicated_allocation,
2413            khr_deferred_host_operations: self.khr_deferred_host_operations
2414                || other.khr_deferred_host_operations,
2415            khr_depth_stencil_resolve: self.khr_depth_stencil_resolve
2416                || other.khr_depth_stencil_resolve,
2417            khr_descriptor_update_template: self.khr_descriptor_update_template
2418                || other.khr_descriptor_update_template,
2419            khr_device_group: self.khr_device_group || other.khr_device_group,
2420            khr_display_swapchain: self.khr_display_swapchain || other.khr_display_swapchain,
2421            khr_draw_indirect_count: self.khr_draw_indirect_count || other.khr_draw_indirect_count,
2422            khr_driver_properties: self.khr_driver_properties || other.khr_driver_properties,
2423            khr_dynamic_rendering: self.khr_dynamic_rendering || other.khr_dynamic_rendering,
2424            khr_dynamic_rendering_local_read: self.khr_dynamic_rendering_local_read
2425                || other.khr_dynamic_rendering_local_read,
2426            khr_external_fence: self.khr_external_fence || other.khr_external_fence,
2427            khr_external_fence_fd: self.khr_external_fence_fd || other.khr_external_fence_fd,
2428            khr_external_fence_win32: self.khr_external_fence_win32
2429                || other.khr_external_fence_win32,
2430            khr_external_memory: self.khr_external_memory || other.khr_external_memory,
2431            khr_external_memory_fd: self.khr_external_memory_fd || other.khr_external_memory_fd,
2432            khr_external_memory_win32: self.khr_external_memory_win32
2433                || other.khr_external_memory_win32,
2434            khr_external_semaphore: self.khr_external_semaphore || other.khr_external_semaphore,
2435            khr_external_semaphore_fd: self.khr_external_semaphore_fd
2436                || other.khr_external_semaphore_fd,
2437            khr_external_semaphore_win32: self.khr_external_semaphore_win32
2438                || other.khr_external_semaphore_win32,
2439            khr_format_feature_flags2: self.khr_format_feature_flags2
2440                || other.khr_format_feature_flags2,
2441            khr_fragment_shader_barycentric: self.khr_fragment_shader_barycentric
2442                || other.khr_fragment_shader_barycentric,
2443            khr_fragment_shading_rate: self.khr_fragment_shading_rate
2444                || other.khr_fragment_shading_rate,
2445            khr_get_memory_requirements2: self.khr_get_memory_requirements2
2446                || other.khr_get_memory_requirements2,
2447            khr_global_priority: self.khr_global_priority || other.khr_global_priority,
2448            khr_image_format_list: self.khr_image_format_list || other.khr_image_format_list,
2449            khr_imageless_framebuffer: self.khr_imageless_framebuffer
2450                || other.khr_imageless_framebuffer,
2451            khr_incremental_present: self.khr_incremental_present || other.khr_incremental_present,
2452            khr_index_type_uint8: self.khr_index_type_uint8 || other.khr_index_type_uint8,
2453            khr_line_rasterization: self.khr_line_rasterization || other.khr_line_rasterization,
2454            khr_load_store_op_none: self.khr_load_store_op_none || other.khr_load_store_op_none,
2455            khr_maintenance1: self.khr_maintenance1 || other.khr_maintenance1,
2456            khr_maintenance2: self.khr_maintenance2 || other.khr_maintenance2,
2457            khr_maintenance3: self.khr_maintenance3 || other.khr_maintenance3,
2458            khr_maintenance4: self.khr_maintenance4 || other.khr_maintenance4,
2459            khr_maintenance5: self.khr_maintenance5 || other.khr_maintenance5,
2460            khr_maintenance6: self.khr_maintenance6 || other.khr_maintenance6,
2461            khr_map_memory2: self.khr_map_memory2 || other.khr_map_memory2,
2462            khr_multiview: self.khr_multiview || other.khr_multiview,
2463            khr_performance_query: self.khr_performance_query || other.khr_performance_query,
2464            khr_pipeline_executable_properties: self.khr_pipeline_executable_properties
2465                || other.khr_pipeline_executable_properties,
2466            khr_pipeline_library: self.khr_pipeline_library || other.khr_pipeline_library,
2467            khr_portability_subset: self.khr_portability_subset || other.khr_portability_subset,
2468            khr_present_id: self.khr_present_id || other.khr_present_id,
2469            khr_present_wait: self.khr_present_wait || other.khr_present_wait,
2470            khr_push_descriptor: self.khr_push_descriptor || other.khr_push_descriptor,
2471            khr_ray_query: self.khr_ray_query || other.khr_ray_query,
2472            khr_ray_tracing_maintenance1: self.khr_ray_tracing_maintenance1
2473                || other.khr_ray_tracing_maintenance1,
2474            khr_ray_tracing_pipeline: self.khr_ray_tracing_pipeline
2475                || other.khr_ray_tracing_pipeline,
2476            khr_ray_tracing_position_fetch: self.khr_ray_tracing_position_fetch
2477                || other.khr_ray_tracing_position_fetch,
2478            khr_relaxed_block_layout: self.khr_relaxed_block_layout
2479                || other.khr_relaxed_block_layout,
2480            khr_sampler_mirror_clamp_to_edge: self.khr_sampler_mirror_clamp_to_edge
2481                || other.khr_sampler_mirror_clamp_to_edge,
2482            khr_sampler_ycbcr_conversion: self.khr_sampler_ycbcr_conversion
2483                || other.khr_sampler_ycbcr_conversion,
2484            khr_separate_depth_stencil_layouts: self.khr_separate_depth_stencil_layouts
2485                || other.khr_separate_depth_stencil_layouts,
2486            khr_shader_atomic_int64: self.khr_shader_atomic_int64 || other.khr_shader_atomic_int64,
2487            khr_shader_clock: self.khr_shader_clock || other.khr_shader_clock,
2488            khr_shader_draw_parameters: self.khr_shader_draw_parameters
2489                || other.khr_shader_draw_parameters,
2490            khr_shader_expect_assume: self.khr_shader_expect_assume
2491                || other.khr_shader_expect_assume,
2492            khr_shader_float16_int8: self.khr_shader_float16_int8 || other.khr_shader_float16_int8,
2493            khr_shader_float_controls: self.khr_shader_float_controls
2494                || other.khr_shader_float_controls,
2495            khr_shader_float_controls2: self.khr_shader_float_controls2
2496                || other.khr_shader_float_controls2,
2497            khr_shader_integer_dot_product: self.khr_shader_integer_dot_product
2498                || other.khr_shader_integer_dot_product,
2499            khr_shader_maximal_reconvergence: self.khr_shader_maximal_reconvergence
2500                || other.khr_shader_maximal_reconvergence,
2501            khr_shader_non_semantic_info: self.khr_shader_non_semantic_info
2502                || other.khr_shader_non_semantic_info,
2503            khr_shader_quad_control: self.khr_shader_quad_control || other.khr_shader_quad_control,
2504            khr_shader_subgroup_extended_types: self.khr_shader_subgroup_extended_types
2505                || other.khr_shader_subgroup_extended_types,
2506            khr_shader_subgroup_rotate: self.khr_shader_subgroup_rotate
2507                || other.khr_shader_subgroup_rotate,
2508            khr_shader_subgroup_uniform_control_flow: self.khr_shader_subgroup_uniform_control_flow
2509                || other.khr_shader_subgroup_uniform_control_flow,
2510            khr_shader_terminate_invocation: self.khr_shader_terminate_invocation
2511                || other.khr_shader_terminate_invocation,
2512            khr_shared_presentable_image: self.khr_shared_presentable_image
2513                || other.khr_shared_presentable_image,
2514            khr_spirv_1_4: self.khr_spirv_1_4 || other.khr_spirv_1_4,
2515            khr_storage_buffer_storage_class: self.khr_storage_buffer_storage_class
2516                || other.khr_storage_buffer_storage_class,
2517            khr_swapchain: self.khr_swapchain || other.khr_swapchain,
2518            khr_swapchain_mutable_format: self.khr_swapchain_mutable_format
2519                || other.khr_swapchain_mutable_format,
2520            khr_synchronization2: self.khr_synchronization2 || other.khr_synchronization2,
2521            khr_timeline_semaphore: self.khr_timeline_semaphore || other.khr_timeline_semaphore,
2522            khr_uniform_buffer_standard_layout: self.khr_uniform_buffer_standard_layout
2523                || other.khr_uniform_buffer_standard_layout,
2524            khr_variable_pointers: self.khr_variable_pointers || other.khr_variable_pointers,
2525            khr_vertex_attribute_divisor: self.khr_vertex_attribute_divisor
2526                || other.khr_vertex_attribute_divisor,
2527            khr_video_decode_av1: self.khr_video_decode_av1 || other.khr_video_decode_av1,
2528            khr_video_decode_h264: self.khr_video_decode_h264 || other.khr_video_decode_h264,
2529            khr_video_decode_h265: self.khr_video_decode_h265 || other.khr_video_decode_h265,
2530            khr_video_decode_queue: self.khr_video_decode_queue || other.khr_video_decode_queue,
2531            khr_video_encode_h264: self.khr_video_encode_h264 || other.khr_video_encode_h264,
2532            khr_video_encode_h265: self.khr_video_encode_h265 || other.khr_video_encode_h265,
2533            khr_video_encode_queue: self.khr_video_encode_queue || other.khr_video_encode_queue,
2534            khr_video_maintenance1: self.khr_video_maintenance1 || other.khr_video_maintenance1,
2535            khr_video_queue: self.khr_video_queue || other.khr_video_queue,
2536            khr_vulkan_memory_model: self.khr_vulkan_memory_model || other.khr_vulkan_memory_model,
2537            khr_win32_keyed_mutex: self.khr_win32_keyed_mutex || other.khr_win32_keyed_mutex,
2538            khr_workgroup_memory_explicit_layout: self.khr_workgroup_memory_explicit_layout
2539                || other.khr_workgroup_memory_explicit_layout,
2540            khr_zero_initialize_workgroup_memory: self.khr_zero_initialize_workgroup_memory
2541                || other.khr_zero_initialize_workgroup_memory,
2542            ext_4444_formats: self.ext_4444_formats || other.ext_4444_formats,
2543            ext_astc_decode_mode: self.ext_astc_decode_mode || other.ext_astc_decode_mode,
2544            ext_attachment_feedback_loop_dynamic_state: self
2545                .ext_attachment_feedback_loop_dynamic_state
2546                || other.ext_attachment_feedback_loop_dynamic_state,
2547            ext_attachment_feedback_loop_layout: self.ext_attachment_feedback_loop_layout
2548                || other.ext_attachment_feedback_loop_layout,
2549            ext_blend_operation_advanced: self.ext_blend_operation_advanced
2550                || other.ext_blend_operation_advanced,
2551            ext_border_color_swizzle: self.ext_border_color_swizzle
2552                || other.ext_border_color_swizzle,
2553            ext_buffer_device_address: self.ext_buffer_device_address
2554                || other.ext_buffer_device_address,
2555            ext_calibrated_timestamps: self.ext_calibrated_timestamps
2556                || other.ext_calibrated_timestamps,
2557            ext_color_write_enable: self.ext_color_write_enable || other.ext_color_write_enable,
2558            ext_conditional_rendering: self.ext_conditional_rendering
2559                || other.ext_conditional_rendering,
2560            ext_conservative_rasterization: self.ext_conservative_rasterization
2561                || other.ext_conservative_rasterization,
2562            ext_custom_border_color: self.ext_custom_border_color || other.ext_custom_border_color,
2563            ext_debug_marker: self.ext_debug_marker || other.ext_debug_marker,
2564            ext_depth_bias_control: self.ext_depth_bias_control || other.ext_depth_bias_control,
2565            ext_depth_clamp_zero_one: self.ext_depth_clamp_zero_one
2566                || other.ext_depth_clamp_zero_one,
2567            ext_depth_clip_control: self.ext_depth_clip_control || other.ext_depth_clip_control,
2568            ext_depth_clip_enable: self.ext_depth_clip_enable || other.ext_depth_clip_enable,
2569            ext_depth_range_unrestricted: self.ext_depth_range_unrestricted
2570                || other.ext_depth_range_unrestricted,
2571            ext_descriptor_buffer: self.ext_descriptor_buffer || other.ext_descriptor_buffer,
2572            ext_descriptor_indexing: self.ext_descriptor_indexing || other.ext_descriptor_indexing,
2573            ext_device_address_binding_report: self.ext_device_address_binding_report
2574                || other.ext_device_address_binding_report,
2575            ext_device_fault: self.ext_device_fault || other.ext_device_fault,
2576            ext_device_memory_report: self.ext_device_memory_report
2577                || other.ext_device_memory_report,
2578            ext_discard_rectangles: self.ext_discard_rectangles || other.ext_discard_rectangles,
2579            ext_display_control: self.ext_display_control || other.ext_display_control,
2580            ext_dynamic_rendering_unused_attachments: self.ext_dynamic_rendering_unused_attachments
2581                || other.ext_dynamic_rendering_unused_attachments,
2582            ext_extended_dynamic_state: self.ext_extended_dynamic_state
2583                || other.ext_extended_dynamic_state,
2584            ext_extended_dynamic_state2: self.ext_extended_dynamic_state2
2585                || other.ext_extended_dynamic_state2,
2586            ext_extended_dynamic_state3: self.ext_extended_dynamic_state3
2587                || other.ext_extended_dynamic_state3,
2588            ext_external_memory_acquire_unmodified: self.ext_external_memory_acquire_unmodified
2589                || other.ext_external_memory_acquire_unmodified,
2590            ext_external_memory_dma_buf: self.ext_external_memory_dma_buf
2591                || other.ext_external_memory_dma_buf,
2592            ext_external_memory_host: self.ext_external_memory_host
2593                || other.ext_external_memory_host,
2594            ext_filter_cubic: self.ext_filter_cubic || other.ext_filter_cubic,
2595            ext_fragment_density_map: self.ext_fragment_density_map
2596                || other.ext_fragment_density_map,
2597            ext_fragment_density_map2: self.ext_fragment_density_map2
2598                || other.ext_fragment_density_map2,
2599            ext_fragment_shader_interlock: self.ext_fragment_shader_interlock
2600                || other.ext_fragment_shader_interlock,
2601            ext_frame_boundary: self.ext_frame_boundary || other.ext_frame_boundary,
2602            ext_full_screen_exclusive: self.ext_full_screen_exclusive
2603                || other.ext_full_screen_exclusive,
2604            ext_global_priority: self.ext_global_priority || other.ext_global_priority,
2605            ext_global_priority_query: self.ext_global_priority_query
2606                || other.ext_global_priority_query,
2607            ext_graphics_pipeline_library: self.ext_graphics_pipeline_library
2608                || other.ext_graphics_pipeline_library,
2609            ext_hdr_metadata: self.ext_hdr_metadata || other.ext_hdr_metadata,
2610            ext_host_image_copy: self.ext_host_image_copy || other.ext_host_image_copy,
2611            ext_host_query_reset: self.ext_host_query_reset || other.ext_host_query_reset,
2612            ext_image_2d_view_of_3d: self.ext_image_2d_view_of_3d || other.ext_image_2d_view_of_3d,
2613            ext_image_compression_control: self.ext_image_compression_control
2614                || other.ext_image_compression_control,
2615            ext_image_compression_control_swapchain: self.ext_image_compression_control_swapchain
2616                || other.ext_image_compression_control_swapchain,
2617            ext_image_drm_format_modifier: self.ext_image_drm_format_modifier
2618                || other.ext_image_drm_format_modifier,
2619            ext_image_robustness: self.ext_image_robustness || other.ext_image_robustness,
2620            ext_image_sliced_view_of_3d: self.ext_image_sliced_view_of_3d
2621                || other.ext_image_sliced_view_of_3d,
2622            ext_image_view_min_lod: self.ext_image_view_min_lod || other.ext_image_view_min_lod,
2623            ext_index_type_uint8: self.ext_index_type_uint8 || other.ext_index_type_uint8,
2624            ext_inline_uniform_block: self.ext_inline_uniform_block
2625                || other.ext_inline_uniform_block,
2626            ext_legacy_dithering: self.ext_legacy_dithering || other.ext_legacy_dithering,
2627            ext_line_rasterization: self.ext_line_rasterization || other.ext_line_rasterization,
2628            ext_load_store_op_none: self.ext_load_store_op_none || other.ext_load_store_op_none,
2629            ext_map_memory_placed: self.ext_map_memory_placed || other.ext_map_memory_placed,
2630            ext_memory_budget: self.ext_memory_budget || other.ext_memory_budget,
2631            ext_memory_priority: self.ext_memory_priority || other.ext_memory_priority,
2632            ext_mesh_shader: self.ext_mesh_shader || other.ext_mesh_shader,
2633            ext_metal_objects: self.ext_metal_objects || other.ext_metal_objects,
2634            ext_multi_draw: self.ext_multi_draw || other.ext_multi_draw,
2635            ext_multisampled_render_to_single_sampled: self
2636                .ext_multisampled_render_to_single_sampled
2637                || other.ext_multisampled_render_to_single_sampled,
2638            ext_mutable_descriptor_type: self.ext_mutable_descriptor_type
2639                || other.ext_mutable_descriptor_type,
2640            ext_nested_command_buffer: self.ext_nested_command_buffer
2641                || other.ext_nested_command_buffer,
2642            ext_non_seamless_cube_map: self.ext_non_seamless_cube_map
2643                || other.ext_non_seamless_cube_map,
2644            ext_opacity_micromap: self.ext_opacity_micromap || other.ext_opacity_micromap,
2645            ext_pageable_device_local_memory: self.ext_pageable_device_local_memory
2646                || other.ext_pageable_device_local_memory,
2647            ext_pci_bus_info: self.ext_pci_bus_info || other.ext_pci_bus_info,
2648            ext_physical_device_drm: self.ext_physical_device_drm || other.ext_physical_device_drm,
2649            ext_pipeline_creation_cache_control: self.ext_pipeline_creation_cache_control
2650                || other.ext_pipeline_creation_cache_control,
2651            ext_pipeline_creation_feedback: self.ext_pipeline_creation_feedback
2652                || other.ext_pipeline_creation_feedback,
2653            ext_pipeline_library_group_handles: self.ext_pipeline_library_group_handles
2654                || other.ext_pipeline_library_group_handles,
2655            ext_pipeline_properties: self.ext_pipeline_properties || other.ext_pipeline_properties,
2656            ext_pipeline_protected_access: self.ext_pipeline_protected_access
2657                || other.ext_pipeline_protected_access,
2658            ext_pipeline_robustness: self.ext_pipeline_robustness || other.ext_pipeline_robustness,
2659            ext_post_depth_coverage: self.ext_post_depth_coverage || other.ext_post_depth_coverage,
2660            ext_primitive_topology_list_restart: self.ext_primitive_topology_list_restart
2661                || other.ext_primitive_topology_list_restart,
2662            ext_primitives_generated_query: self.ext_primitives_generated_query
2663                || other.ext_primitives_generated_query,
2664            ext_private_data: self.ext_private_data || other.ext_private_data,
2665            ext_provoking_vertex: self.ext_provoking_vertex || other.ext_provoking_vertex,
2666            ext_queue_family_foreign: self.ext_queue_family_foreign
2667                || other.ext_queue_family_foreign,
2668            ext_rasterization_order_attachment_access: self
2669                .ext_rasterization_order_attachment_access
2670                || other.ext_rasterization_order_attachment_access,
2671            ext_rgba10x6_formats: self.ext_rgba10x6_formats || other.ext_rgba10x6_formats,
2672            ext_robustness2: self.ext_robustness2 || other.ext_robustness2,
2673            ext_sample_locations: self.ext_sample_locations || other.ext_sample_locations,
2674            ext_sampler_filter_minmax: self.ext_sampler_filter_minmax
2675                || other.ext_sampler_filter_minmax,
2676            ext_scalar_block_layout: self.ext_scalar_block_layout || other.ext_scalar_block_layout,
2677            ext_separate_stencil_usage: self.ext_separate_stencil_usage
2678                || other.ext_separate_stencil_usage,
2679            ext_shader_atomic_float: self.ext_shader_atomic_float || other.ext_shader_atomic_float,
2680            ext_shader_atomic_float2: self.ext_shader_atomic_float2
2681                || other.ext_shader_atomic_float2,
2682            ext_shader_demote_to_helper_invocation: self.ext_shader_demote_to_helper_invocation
2683                || other.ext_shader_demote_to_helper_invocation,
2684            ext_shader_image_atomic_int64: self.ext_shader_image_atomic_int64
2685                || other.ext_shader_image_atomic_int64,
2686            ext_shader_module_identifier: self.ext_shader_module_identifier
2687                || other.ext_shader_module_identifier,
2688            ext_shader_object: self.ext_shader_object || other.ext_shader_object,
2689            ext_shader_stencil_export: self.ext_shader_stencil_export
2690                || other.ext_shader_stencil_export,
2691            ext_shader_subgroup_ballot: self.ext_shader_subgroup_ballot
2692                || other.ext_shader_subgroup_ballot,
2693            ext_shader_subgroup_vote: self.ext_shader_subgroup_vote
2694                || other.ext_shader_subgroup_vote,
2695            ext_shader_tile_image: self.ext_shader_tile_image || other.ext_shader_tile_image,
2696            ext_shader_viewport_index_layer: self.ext_shader_viewport_index_layer
2697                || other.ext_shader_viewport_index_layer,
2698            ext_subgroup_size_control: self.ext_subgroup_size_control
2699                || other.ext_subgroup_size_control,
2700            ext_subpass_merge_feedback: self.ext_subpass_merge_feedback
2701                || other.ext_subpass_merge_feedback,
2702            ext_swapchain_maintenance1: self.ext_swapchain_maintenance1
2703                || other.ext_swapchain_maintenance1,
2704            ext_texel_buffer_alignment: self.ext_texel_buffer_alignment
2705                || other.ext_texel_buffer_alignment,
2706            ext_texture_compression_astc_hdr: self.ext_texture_compression_astc_hdr
2707                || other.ext_texture_compression_astc_hdr,
2708            ext_tooling_info: self.ext_tooling_info || other.ext_tooling_info,
2709            ext_transform_feedback: self.ext_transform_feedback || other.ext_transform_feedback,
2710            ext_validation_cache: self.ext_validation_cache || other.ext_validation_cache,
2711            ext_vertex_attribute_divisor: self.ext_vertex_attribute_divisor
2712                || other.ext_vertex_attribute_divisor,
2713            ext_vertex_input_dynamic_state: self.ext_vertex_input_dynamic_state
2714                || other.ext_vertex_input_dynamic_state,
2715            ext_ycbcr_2plane_444_formats: self.ext_ycbcr_2plane_444_formats
2716                || other.ext_ycbcr_2plane_444_formats,
2717            ext_ycbcr_image_arrays: self.ext_ycbcr_image_arrays || other.ext_ycbcr_image_arrays,
2718            amdx_shader_enqueue: self.amdx_shader_enqueue || other.amdx_shader_enqueue,
2719            amd_buffer_marker: self.amd_buffer_marker || other.amd_buffer_marker,
2720            amd_device_coherent_memory: self.amd_device_coherent_memory
2721                || other.amd_device_coherent_memory,
2722            amd_display_native_hdr: self.amd_display_native_hdr || other.amd_display_native_hdr,
2723            amd_draw_indirect_count: self.amd_draw_indirect_count || other.amd_draw_indirect_count,
2724            amd_gcn_shader: self.amd_gcn_shader || other.amd_gcn_shader,
2725            amd_gpu_shader_half_float: self.amd_gpu_shader_half_float
2726                || other.amd_gpu_shader_half_float,
2727            amd_gpu_shader_int16: self.amd_gpu_shader_int16 || other.amd_gpu_shader_int16,
2728            amd_memory_overallocation_behavior: self.amd_memory_overallocation_behavior
2729                || other.amd_memory_overallocation_behavior,
2730            amd_mixed_attachment_samples: self.amd_mixed_attachment_samples
2731                || other.amd_mixed_attachment_samples,
2732            amd_pipeline_compiler_control: self.amd_pipeline_compiler_control
2733                || other.amd_pipeline_compiler_control,
2734            amd_rasterization_order: self.amd_rasterization_order || other.amd_rasterization_order,
2735            amd_shader_ballot: self.amd_shader_ballot || other.amd_shader_ballot,
2736            amd_shader_core_properties: self.amd_shader_core_properties
2737                || other.amd_shader_core_properties,
2738            amd_shader_core_properties2: self.amd_shader_core_properties2
2739                || other.amd_shader_core_properties2,
2740            amd_shader_early_and_late_fragment_tests: self.amd_shader_early_and_late_fragment_tests
2741                || other.amd_shader_early_and_late_fragment_tests,
2742            amd_shader_explicit_vertex_parameter: self.amd_shader_explicit_vertex_parameter
2743                || other.amd_shader_explicit_vertex_parameter,
2744            amd_shader_fragment_mask: self.amd_shader_fragment_mask
2745                || other.amd_shader_fragment_mask,
2746            amd_shader_image_load_store_lod: self.amd_shader_image_load_store_lod
2747                || other.amd_shader_image_load_store_lod,
2748            amd_shader_info: self.amd_shader_info || other.amd_shader_info,
2749            amd_shader_trinary_minmax: self.amd_shader_trinary_minmax
2750                || other.amd_shader_trinary_minmax,
2751            amd_texture_gather_bias_lod: self.amd_texture_gather_bias_lod
2752                || other.amd_texture_gather_bias_lod,
2753            android_external_format_resolve: self.android_external_format_resolve
2754                || other.android_external_format_resolve,
2755            android_external_memory_android_hardware_buffer: self
2756                .android_external_memory_android_hardware_buffer
2757                || other.android_external_memory_android_hardware_buffer,
2758            arm_rasterization_order_attachment_access: self
2759                .arm_rasterization_order_attachment_access
2760                || other.arm_rasterization_order_attachment_access,
2761            arm_render_pass_striped: self.arm_render_pass_striped || other.arm_render_pass_striped,
2762            arm_scheduling_controls: self.arm_scheduling_controls || other.arm_scheduling_controls,
2763            arm_shader_core_builtins: self.arm_shader_core_builtins
2764                || other.arm_shader_core_builtins,
2765            arm_shader_core_properties: self.arm_shader_core_properties
2766                || other.arm_shader_core_properties,
2767            fuchsia_buffer_collection: self.fuchsia_buffer_collection
2768                || other.fuchsia_buffer_collection,
2769            fuchsia_external_memory: self.fuchsia_external_memory || other.fuchsia_external_memory,
2770            fuchsia_external_semaphore: self.fuchsia_external_semaphore
2771                || other.fuchsia_external_semaphore,
2772            ggp_frame_token: self.ggp_frame_token || other.ggp_frame_token,
2773            google_decorate_string: self.google_decorate_string || other.google_decorate_string,
2774            google_display_timing: self.google_display_timing || other.google_display_timing,
2775            google_hlsl_functionality1: self.google_hlsl_functionality1
2776                || other.google_hlsl_functionality1,
2777            google_user_type: self.google_user_type || other.google_user_type,
2778            huawei_cluster_culling_shader: self.huawei_cluster_culling_shader
2779                || other.huawei_cluster_culling_shader,
2780            huawei_invocation_mask: self.huawei_invocation_mask || other.huawei_invocation_mask,
2781            huawei_subpass_shading: self.huawei_subpass_shading || other.huawei_subpass_shading,
2782            img_filter_cubic: self.img_filter_cubic || other.img_filter_cubic,
2783            img_format_pvrtc: self.img_format_pvrtc || other.img_format_pvrtc,
2784            img_relaxed_line_rasterization: self.img_relaxed_line_rasterization
2785                || other.img_relaxed_line_rasterization,
2786            intel_performance_query: self.intel_performance_query || other.intel_performance_query,
2787            intel_shader_integer_functions2: self.intel_shader_integer_functions2
2788                || other.intel_shader_integer_functions2,
2789            msft_layered_driver: self.msft_layered_driver || other.msft_layered_driver,
2790            nvx_binary_import: self.nvx_binary_import || other.nvx_binary_import,
2791            nvx_image_view_handle: self.nvx_image_view_handle || other.nvx_image_view_handle,
2792            nvx_multiview_per_view_attributes: self.nvx_multiview_per_view_attributes
2793                || other.nvx_multiview_per_view_attributes,
2794            nv_acquire_winrt_display: self.nv_acquire_winrt_display
2795                || other.nv_acquire_winrt_display,
2796            nv_clip_space_w_scaling: self.nv_clip_space_w_scaling || other.nv_clip_space_w_scaling,
2797            nv_compute_shader_derivatives: self.nv_compute_shader_derivatives
2798                || other.nv_compute_shader_derivatives,
2799            nv_cooperative_matrix: self.nv_cooperative_matrix || other.nv_cooperative_matrix,
2800            nv_copy_memory_indirect: self.nv_copy_memory_indirect || other.nv_copy_memory_indirect,
2801            nv_corner_sampled_image: self.nv_corner_sampled_image || other.nv_corner_sampled_image,
2802            nv_coverage_reduction_mode: self.nv_coverage_reduction_mode
2803                || other.nv_coverage_reduction_mode,
2804            nv_cuda_kernel_launch: self.nv_cuda_kernel_launch || other.nv_cuda_kernel_launch,
2805            nv_dedicated_allocation: self.nv_dedicated_allocation || other.nv_dedicated_allocation,
2806            nv_dedicated_allocation_image_aliasing: self.nv_dedicated_allocation_image_aliasing
2807                || other.nv_dedicated_allocation_image_aliasing,
2808            nv_descriptor_pool_overallocation: self.nv_descriptor_pool_overallocation
2809                || other.nv_descriptor_pool_overallocation,
2810            nv_device_diagnostic_checkpoints: self.nv_device_diagnostic_checkpoints
2811                || other.nv_device_diagnostic_checkpoints,
2812            nv_device_diagnostics_config: self.nv_device_diagnostics_config
2813                || other.nv_device_diagnostics_config,
2814            nv_device_generated_commands: self.nv_device_generated_commands
2815                || other.nv_device_generated_commands,
2816            nv_device_generated_commands_compute: self.nv_device_generated_commands_compute
2817                || other.nv_device_generated_commands_compute,
2818            nv_displacement_micromap: self.nv_displacement_micromap
2819                || other.nv_displacement_micromap,
2820            nv_extended_sparse_address_space: self.nv_extended_sparse_address_space
2821                || other.nv_extended_sparse_address_space,
2822            nv_external_memory: self.nv_external_memory || other.nv_external_memory,
2823            nv_external_memory_rdma: self.nv_external_memory_rdma || other.nv_external_memory_rdma,
2824            nv_external_memory_win32: self.nv_external_memory_win32
2825                || other.nv_external_memory_win32,
2826            nv_fill_rectangle: self.nv_fill_rectangle || other.nv_fill_rectangle,
2827            nv_fragment_coverage_to_color: self.nv_fragment_coverage_to_color
2828                || other.nv_fragment_coverage_to_color,
2829            nv_fragment_shader_barycentric: self.nv_fragment_shader_barycentric
2830                || other.nv_fragment_shader_barycentric,
2831            nv_fragment_shading_rate_enums: self.nv_fragment_shading_rate_enums
2832                || other.nv_fragment_shading_rate_enums,
2833            nv_framebuffer_mixed_samples: self.nv_framebuffer_mixed_samples
2834                || other.nv_framebuffer_mixed_samples,
2835            nv_geometry_shader_passthrough: self.nv_geometry_shader_passthrough
2836                || other.nv_geometry_shader_passthrough,
2837            nv_glsl_shader: self.nv_glsl_shader || other.nv_glsl_shader,
2838            nv_inherited_viewport_scissor: self.nv_inherited_viewport_scissor
2839                || other.nv_inherited_viewport_scissor,
2840            nv_linear_color_attachment: self.nv_linear_color_attachment
2841                || other.nv_linear_color_attachment,
2842            nv_low_latency: self.nv_low_latency || other.nv_low_latency,
2843            nv_low_latency2: self.nv_low_latency2 || other.nv_low_latency2,
2844            nv_memory_decompression: self.nv_memory_decompression || other.nv_memory_decompression,
2845            nv_mesh_shader: self.nv_mesh_shader || other.nv_mesh_shader,
2846            nv_optical_flow: self.nv_optical_flow || other.nv_optical_flow,
2847            nv_per_stage_descriptor_set: self.nv_per_stage_descriptor_set
2848                || other.nv_per_stage_descriptor_set,
2849            nv_present_barrier: self.nv_present_barrier || other.nv_present_barrier,
2850            nv_raw_access_chains: self.nv_raw_access_chains || other.nv_raw_access_chains,
2851            nv_ray_tracing: self.nv_ray_tracing || other.nv_ray_tracing,
2852            nv_ray_tracing_invocation_reorder: self.nv_ray_tracing_invocation_reorder
2853                || other.nv_ray_tracing_invocation_reorder,
2854            nv_ray_tracing_motion_blur: self.nv_ray_tracing_motion_blur
2855                || other.nv_ray_tracing_motion_blur,
2856            nv_ray_tracing_validation: self.nv_ray_tracing_validation
2857                || other.nv_ray_tracing_validation,
2858            nv_representative_fragment_test: self.nv_representative_fragment_test
2859                || other.nv_representative_fragment_test,
2860            nv_sample_mask_override_coverage: self.nv_sample_mask_override_coverage
2861                || other.nv_sample_mask_override_coverage,
2862            nv_scissor_exclusive: self.nv_scissor_exclusive || other.nv_scissor_exclusive,
2863            nv_shader_atomic_float16_vector: self.nv_shader_atomic_float16_vector
2864                || other.nv_shader_atomic_float16_vector,
2865            nv_shader_image_footprint: self.nv_shader_image_footprint
2866                || other.nv_shader_image_footprint,
2867            nv_shader_sm_builtins: self.nv_shader_sm_builtins || other.nv_shader_sm_builtins,
2868            nv_shader_subgroup_partitioned: self.nv_shader_subgroup_partitioned
2869                || other.nv_shader_subgroup_partitioned,
2870            nv_shading_rate_image: self.nv_shading_rate_image || other.nv_shading_rate_image,
2871            nv_viewport_array2: self.nv_viewport_array2 || other.nv_viewport_array2,
2872            nv_viewport_swizzle: self.nv_viewport_swizzle || other.nv_viewport_swizzle,
2873            nv_win32_keyed_mutex: self.nv_win32_keyed_mutex || other.nv_win32_keyed_mutex,
2874            qcom_filter_cubic_clamp: self.qcom_filter_cubic_clamp || other.qcom_filter_cubic_clamp,
2875            qcom_filter_cubic_weights: self.qcom_filter_cubic_weights
2876                || other.qcom_filter_cubic_weights,
2877            qcom_fragment_density_map_offset: self.qcom_fragment_density_map_offset
2878                || other.qcom_fragment_density_map_offset,
2879            qcom_image_processing: self.qcom_image_processing || other.qcom_image_processing,
2880            qcom_image_processing2: self.qcom_image_processing2 || other.qcom_image_processing2,
2881            qcom_multiview_per_view_render_areas: self.qcom_multiview_per_view_render_areas
2882                || other.qcom_multiview_per_view_render_areas,
2883            qcom_multiview_per_view_viewports: self.qcom_multiview_per_view_viewports
2884                || other.qcom_multiview_per_view_viewports,
2885            qcom_render_pass_shader_resolve: self.qcom_render_pass_shader_resolve
2886                || other.qcom_render_pass_shader_resolve,
2887            qcom_render_pass_store_ops: self.qcom_render_pass_store_ops
2888                || other.qcom_render_pass_store_ops,
2889            qcom_render_pass_transform: self.qcom_render_pass_transform
2890                || other.qcom_render_pass_transform,
2891            qcom_rotated_copy_commands: self.qcom_rotated_copy_commands
2892                || other.qcom_rotated_copy_commands,
2893            qcom_tile_properties: self.qcom_tile_properties || other.qcom_tile_properties,
2894            qcom_ycbcr_degamma: self.qcom_ycbcr_degamma || other.qcom_ycbcr_degamma,
2895            qnx_external_memory_screen_buffer: self.qnx_external_memory_screen_buffer
2896                || other.qnx_external_memory_screen_buffer,
2897            sec_amigo_profiling: self.sec_amigo_profiling || other.sec_amigo_profiling,
2898            valve_descriptor_set_host_mapping: self.valve_descriptor_set_host_mapping
2899                || other.valve_descriptor_set_host_mapping,
2900            valve_mutable_descriptor_type: self.valve_mutable_descriptor_type
2901                || other.valve_mutable_descriptor_type,
2902            _ne: crate::NonExhaustive(()),
2903        }
2904    }
2905    #[doc = r" Returns the intersection of `self` and `other`."]
2906    #[inline]
2907    pub const fn intersection(&self, other: &Self) -> Self {
2908        Self {
2909            khr_16bit_storage: self.khr_16bit_storage && other.khr_16bit_storage,
2910            khr_8bit_storage: self.khr_8bit_storage && other.khr_8bit_storage,
2911            khr_acceleration_structure: self.khr_acceleration_structure
2912                && other.khr_acceleration_structure,
2913            khr_bind_memory2: self.khr_bind_memory2 && other.khr_bind_memory2,
2914            khr_buffer_device_address: self.khr_buffer_device_address
2915                && other.khr_buffer_device_address,
2916            khr_calibrated_timestamps: self.khr_calibrated_timestamps
2917                && other.khr_calibrated_timestamps,
2918            khr_cooperative_matrix: self.khr_cooperative_matrix && other.khr_cooperative_matrix,
2919            khr_copy_commands2: self.khr_copy_commands2 && other.khr_copy_commands2,
2920            khr_create_renderpass2: self.khr_create_renderpass2 && other.khr_create_renderpass2,
2921            khr_dedicated_allocation: self.khr_dedicated_allocation
2922                && other.khr_dedicated_allocation,
2923            khr_deferred_host_operations: self.khr_deferred_host_operations
2924                && other.khr_deferred_host_operations,
2925            khr_depth_stencil_resolve: self.khr_depth_stencil_resolve
2926                && other.khr_depth_stencil_resolve,
2927            khr_descriptor_update_template: self.khr_descriptor_update_template
2928                && other.khr_descriptor_update_template,
2929            khr_device_group: self.khr_device_group && other.khr_device_group,
2930            khr_display_swapchain: self.khr_display_swapchain && other.khr_display_swapchain,
2931            khr_draw_indirect_count: self.khr_draw_indirect_count && other.khr_draw_indirect_count,
2932            khr_driver_properties: self.khr_driver_properties && other.khr_driver_properties,
2933            khr_dynamic_rendering: self.khr_dynamic_rendering && other.khr_dynamic_rendering,
2934            khr_dynamic_rendering_local_read: self.khr_dynamic_rendering_local_read
2935                && other.khr_dynamic_rendering_local_read,
2936            khr_external_fence: self.khr_external_fence && other.khr_external_fence,
2937            khr_external_fence_fd: self.khr_external_fence_fd && other.khr_external_fence_fd,
2938            khr_external_fence_win32: self.khr_external_fence_win32
2939                && other.khr_external_fence_win32,
2940            khr_external_memory: self.khr_external_memory && other.khr_external_memory,
2941            khr_external_memory_fd: self.khr_external_memory_fd && other.khr_external_memory_fd,
2942            khr_external_memory_win32: self.khr_external_memory_win32
2943                && other.khr_external_memory_win32,
2944            khr_external_semaphore: self.khr_external_semaphore && other.khr_external_semaphore,
2945            khr_external_semaphore_fd: self.khr_external_semaphore_fd
2946                && other.khr_external_semaphore_fd,
2947            khr_external_semaphore_win32: self.khr_external_semaphore_win32
2948                && other.khr_external_semaphore_win32,
2949            khr_format_feature_flags2: self.khr_format_feature_flags2
2950                && other.khr_format_feature_flags2,
2951            khr_fragment_shader_barycentric: self.khr_fragment_shader_barycentric
2952                && other.khr_fragment_shader_barycentric,
2953            khr_fragment_shading_rate: self.khr_fragment_shading_rate
2954                && other.khr_fragment_shading_rate,
2955            khr_get_memory_requirements2: self.khr_get_memory_requirements2
2956                && other.khr_get_memory_requirements2,
2957            khr_global_priority: self.khr_global_priority && other.khr_global_priority,
2958            khr_image_format_list: self.khr_image_format_list && other.khr_image_format_list,
2959            khr_imageless_framebuffer: self.khr_imageless_framebuffer
2960                && other.khr_imageless_framebuffer,
2961            khr_incremental_present: self.khr_incremental_present && other.khr_incremental_present,
2962            khr_index_type_uint8: self.khr_index_type_uint8 && other.khr_index_type_uint8,
2963            khr_line_rasterization: self.khr_line_rasterization && other.khr_line_rasterization,
2964            khr_load_store_op_none: self.khr_load_store_op_none && other.khr_load_store_op_none,
2965            khr_maintenance1: self.khr_maintenance1 && other.khr_maintenance1,
2966            khr_maintenance2: self.khr_maintenance2 && other.khr_maintenance2,
2967            khr_maintenance3: self.khr_maintenance3 && other.khr_maintenance3,
2968            khr_maintenance4: self.khr_maintenance4 && other.khr_maintenance4,
2969            khr_maintenance5: self.khr_maintenance5 && other.khr_maintenance5,
2970            khr_maintenance6: self.khr_maintenance6 && other.khr_maintenance6,
2971            khr_map_memory2: self.khr_map_memory2 && other.khr_map_memory2,
2972            khr_multiview: self.khr_multiview && other.khr_multiview,
2973            khr_performance_query: self.khr_performance_query && other.khr_performance_query,
2974            khr_pipeline_executable_properties: self.khr_pipeline_executable_properties
2975                && other.khr_pipeline_executable_properties,
2976            khr_pipeline_library: self.khr_pipeline_library && other.khr_pipeline_library,
2977            khr_portability_subset: self.khr_portability_subset && other.khr_portability_subset,
2978            khr_present_id: self.khr_present_id && other.khr_present_id,
2979            khr_present_wait: self.khr_present_wait && other.khr_present_wait,
2980            khr_push_descriptor: self.khr_push_descriptor && other.khr_push_descriptor,
2981            khr_ray_query: self.khr_ray_query && other.khr_ray_query,
2982            khr_ray_tracing_maintenance1: self.khr_ray_tracing_maintenance1
2983                && other.khr_ray_tracing_maintenance1,
2984            khr_ray_tracing_pipeline: self.khr_ray_tracing_pipeline
2985                && other.khr_ray_tracing_pipeline,
2986            khr_ray_tracing_position_fetch: self.khr_ray_tracing_position_fetch
2987                && other.khr_ray_tracing_position_fetch,
2988            khr_relaxed_block_layout: self.khr_relaxed_block_layout
2989                && other.khr_relaxed_block_layout,
2990            khr_sampler_mirror_clamp_to_edge: self.khr_sampler_mirror_clamp_to_edge
2991                && other.khr_sampler_mirror_clamp_to_edge,
2992            khr_sampler_ycbcr_conversion: self.khr_sampler_ycbcr_conversion
2993                && other.khr_sampler_ycbcr_conversion,
2994            khr_separate_depth_stencil_layouts: self.khr_separate_depth_stencil_layouts
2995                && other.khr_separate_depth_stencil_layouts,
2996            khr_shader_atomic_int64: self.khr_shader_atomic_int64 && other.khr_shader_atomic_int64,
2997            khr_shader_clock: self.khr_shader_clock && other.khr_shader_clock,
2998            khr_shader_draw_parameters: self.khr_shader_draw_parameters
2999                && other.khr_shader_draw_parameters,
3000            khr_shader_expect_assume: self.khr_shader_expect_assume
3001                && other.khr_shader_expect_assume,
3002            khr_shader_float16_int8: self.khr_shader_float16_int8 && other.khr_shader_float16_int8,
3003            khr_shader_float_controls: self.khr_shader_float_controls
3004                && other.khr_shader_float_controls,
3005            khr_shader_float_controls2: self.khr_shader_float_controls2
3006                && other.khr_shader_float_controls2,
3007            khr_shader_integer_dot_product: self.khr_shader_integer_dot_product
3008                && other.khr_shader_integer_dot_product,
3009            khr_shader_maximal_reconvergence: self.khr_shader_maximal_reconvergence
3010                && other.khr_shader_maximal_reconvergence,
3011            khr_shader_non_semantic_info: self.khr_shader_non_semantic_info
3012                && other.khr_shader_non_semantic_info,
3013            khr_shader_quad_control: self.khr_shader_quad_control && other.khr_shader_quad_control,
3014            khr_shader_subgroup_extended_types: self.khr_shader_subgroup_extended_types
3015                && other.khr_shader_subgroup_extended_types,
3016            khr_shader_subgroup_rotate: self.khr_shader_subgroup_rotate
3017                && other.khr_shader_subgroup_rotate,
3018            khr_shader_subgroup_uniform_control_flow: self.khr_shader_subgroup_uniform_control_flow
3019                && other.khr_shader_subgroup_uniform_control_flow,
3020            khr_shader_terminate_invocation: self.khr_shader_terminate_invocation
3021                && other.khr_shader_terminate_invocation,
3022            khr_shared_presentable_image: self.khr_shared_presentable_image
3023                && other.khr_shared_presentable_image,
3024            khr_spirv_1_4: self.khr_spirv_1_4 && other.khr_spirv_1_4,
3025            khr_storage_buffer_storage_class: self.khr_storage_buffer_storage_class
3026                && other.khr_storage_buffer_storage_class,
3027            khr_swapchain: self.khr_swapchain && other.khr_swapchain,
3028            khr_swapchain_mutable_format: self.khr_swapchain_mutable_format
3029                && other.khr_swapchain_mutable_format,
3030            khr_synchronization2: self.khr_synchronization2 && other.khr_synchronization2,
3031            khr_timeline_semaphore: self.khr_timeline_semaphore && other.khr_timeline_semaphore,
3032            khr_uniform_buffer_standard_layout: self.khr_uniform_buffer_standard_layout
3033                && other.khr_uniform_buffer_standard_layout,
3034            khr_variable_pointers: self.khr_variable_pointers && other.khr_variable_pointers,
3035            khr_vertex_attribute_divisor: self.khr_vertex_attribute_divisor
3036                && other.khr_vertex_attribute_divisor,
3037            khr_video_decode_av1: self.khr_video_decode_av1 && other.khr_video_decode_av1,
3038            khr_video_decode_h264: self.khr_video_decode_h264 && other.khr_video_decode_h264,
3039            khr_video_decode_h265: self.khr_video_decode_h265 && other.khr_video_decode_h265,
3040            khr_video_decode_queue: self.khr_video_decode_queue && other.khr_video_decode_queue,
3041            khr_video_encode_h264: self.khr_video_encode_h264 && other.khr_video_encode_h264,
3042            khr_video_encode_h265: self.khr_video_encode_h265 && other.khr_video_encode_h265,
3043            khr_video_encode_queue: self.khr_video_encode_queue && other.khr_video_encode_queue,
3044            khr_video_maintenance1: self.khr_video_maintenance1 && other.khr_video_maintenance1,
3045            khr_video_queue: self.khr_video_queue && other.khr_video_queue,
3046            khr_vulkan_memory_model: self.khr_vulkan_memory_model && other.khr_vulkan_memory_model,
3047            khr_win32_keyed_mutex: self.khr_win32_keyed_mutex && other.khr_win32_keyed_mutex,
3048            khr_workgroup_memory_explicit_layout: self.khr_workgroup_memory_explicit_layout
3049                && other.khr_workgroup_memory_explicit_layout,
3050            khr_zero_initialize_workgroup_memory: self.khr_zero_initialize_workgroup_memory
3051                && other.khr_zero_initialize_workgroup_memory,
3052            ext_4444_formats: self.ext_4444_formats && other.ext_4444_formats,
3053            ext_astc_decode_mode: self.ext_astc_decode_mode && other.ext_astc_decode_mode,
3054            ext_attachment_feedback_loop_dynamic_state: self
3055                .ext_attachment_feedback_loop_dynamic_state
3056                && other.ext_attachment_feedback_loop_dynamic_state,
3057            ext_attachment_feedback_loop_layout: self.ext_attachment_feedback_loop_layout
3058                && other.ext_attachment_feedback_loop_layout,
3059            ext_blend_operation_advanced: self.ext_blend_operation_advanced
3060                && other.ext_blend_operation_advanced,
3061            ext_border_color_swizzle: self.ext_border_color_swizzle
3062                && other.ext_border_color_swizzle,
3063            ext_buffer_device_address: self.ext_buffer_device_address
3064                && other.ext_buffer_device_address,
3065            ext_calibrated_timestamps: self.ext_calibrated_timestamps
3066                && other.ext_calibrated_timestamps,
3067            ext_color_write_enable: self.ext_color_write_enable && other.ext_color_write_enable,
3068            ext_conditional_rendering: self.ext_conditional_rendering
3069                && other.ext_conditional_rendering,
3070            ext_conservative_rasterization: self.ext_conservative_rasterization
3071                && other.ext_conservative_rasterization,
3072            ext_custom_border_color: self.ext_custom_border_color && other.ext_custom_border_color,
3073            ext_debug_marker: self.ext_debug_marker && other.ext_debug_marker,
3074            ext_depth_bias_control: self.ext_depth_bias_control && other.ext_depth_bias_control,
3075            ext_depth_clamp_zero_one: self.ext_depth_clamp_zero_one
3076                && other.ext_depth_clamp_zero_one,
3077            ext_depth_clip_control: self.ext_depth_clip_control && other.ext_depth_clip_control,
3078            ext_depth_clip_enable: self.ext_depth_clip_enable && other.ext_depth_clip_enable,
3079            ext_depth_range_unrestricted: self.ext_depth_range_unrestricted
3080                && other.ext_depth_range_unrestricted,
3081            ext_descriptor_buffer: self.ext_descriptor_buffer && other.ext_descriptor_buffer,
3082            ext_descriptor_indexing: self.ext_descriptor_indexing && other.ext_descriptor_indexing,
3083            ext_device_address_binding_report: self.ext_device_address_binding_report
3084                && other.ext_device_address_binding_report,
3085            ext_device_fault: self.ext_device_fault && other.ext_device_fault,
3086            ext_device_memory_report: self.ext_device_memory_report
3087                && other.ext_device_memory_report,
3088            ext_discard_rectangles: self.ext_discard_rectangles && other.ext_discard_rectangles,
3089            ext_display_control: self.ext_display_control && other.ext_display_control,
3090            ext_dynamic_rendering_unused_attachments: self.ext_dynamic_rendering_unused_attachments
3091                && other.ext_dynamic_rendering_unused_attachments,
3092            ext_extended_dynamic_state: self.ext_extended_dynamic_state
3093                && other.ext_extended_dynamic_state,
3094            ext_extended_dynamic_state2: self.ext_extended_dynamic_state2
3095                && other.ext_extended_dynamic_state2,
3096            ext_extended_dynamic_state3: self.ext_extended_dynamic_state3
3097                && other.ext_extended_dynamic_state3,
3098            ext_external_memory_acquire_unmodified: self.ext_external_memory_acquire_unmodified
3099                && other.ext_external_memory_acquire_unmodified,
3100            ext_external_memory_dma_buf: self.ext_external_memory_dma_buf
3101                && other.ext_external_memory_dma_buf,
3102            ext_external_memory_host: self.ext_external_memory_host
3103                && other.ext_external_memory_host,
3104            ext_filter_cubic: self.ext_filter_cubic && other.ext_filter_cubic,
3105            ext_fragment_density_map: self.ext_fragment_density_map
3106                && other.ext_fragment_density_map,
3107            ext_fragment_density_map2: self.ext_fragment_density_map2
3108                && other.ext_fragment_density_map2,
3109            ext_fragment_shader_interlock: self.ext_fragment_shader_interlock
3110                && other.ext_fragment_shader_interlock,
3111            ext_frame_boundary: self.ext_frame_boundary && other.ext_frame_boundary,
3112            ext_full_screen_exclusive: self.ext_full_screen_exclusive
3113                && other.ext_full_screen_exclusive,
3114            ext_global_priority: self.ext_global_priority && other.ext_global_priority,
3115            ext_global_priority_query: self.ext_global_priority_query
3116                && other.ext_global_priority_query,
3117            ext_graphics_pipeline_library: self.ext_graphics_pipeline_library
3118                && other.ext_graphics_pipeline_library,
3119            ext_hdr_metadata: self.ext_hdr_metadata && other.ext_hdr_metadata,
3120            ext_host_image_copy: self.ext_host_image_copy && other.ext_host_image_copy,
3121            ext_host_query_reset: self.ext_host_query_reset && other.ext_host_query_reset,
3122            ext_image_2d_view_of_3d: self.ext_image_2d_view_of_3d && other.ext_image_2d_view_of_3d,
3123            ext_image_compression_control: self.ext_image_compression_control
3124                && other.ext_image_compression_control,
3125            ext_image_compression_control_swapchain: self.ext_image_compression_control_swapchain
3126                && other.ext_image_compression_control_swapchain,
3127            ext_image_drm_format_modifier: self.ext_image_drm_format_modifier
3128                && other.ext_image_drm_format_modifier,
3129            ext_image_robustness: self.ext_image_robustness && other.ext_image_robustness,
3130            ext_image_sliced_view_of_3d: self.ext_image_sliced_view_of_3d
3131                && other.ext_image_sliced_view_of_3d,
3132            ext_image_view_min_lod: self.ext_image_view_min_lod && other.ext_image_view_min_lod,
3133            ext_index_type_uint8: self.ext_index_type_uint8 && other.ext_index_type_uint8,
3134            ext_inline_uniform_block: self.ext_inline_uniform_block
3135                && other.ext_inline_uniform_block,
3136            ext_legacy_dithering: self.ext_legacy_dithering && other.ext_legacy_dithering,
3137            ext_line_rasterization: self.ext_line_rasterization && other.ext_line_rasterization,
3138            ext_load_store_op_none: self.ext_load_store_op_none && other.ext_load_store_op_none,
3139            ext_map_memory_placed: self.ext_map_memory_placed && other.ext_map_memory_placed,
3140            ext_memory_budget: self.ext_memory_budget && other.ext_memory_budget,
3141            ext_memory_priority: self.ext_memory_priority && other.ext_memory_priority,
3142            ext_mesh_shader: self.ext_mesh_shader && other.ext_mesh_shader,
3143            ext_metal_objects: self.ext_metal_objects && other.ext_metal_objects,
3144            ext_multi_draw: self.ext_multi_draw && other.ext_multi_draw,
3145            ext_multisampled_render_to_single_sampled: self
3146                .ext_multisampled_render_to_single_sampled
3147                && other.ext_multisampled_render_to_single_sampled,
3148            ext_mutable_descriptor_type: self.ext_mutable_descriptor_type
3149                && other.ext_mutable_descriptor_type,
3150            ext_nested_command_buffer: self.ext_nested_command_buffer
3151                && other.ext_nested_command_buffer,
3152            ext_non_seamless_cube_map: self.ext_non_seamless_cube_map
3153                && other.ext_non_seamless_cube_map,
3154            ext_opacity_micromap: self.ext_opacity_micromap && other.ext_opacity_micromap,
3155            ext_pageable_device_local_memory: self.ext_pageable_device_local_memory
3156                && other.ext_pageable_device_local_memory,
3157            ext_pci_bus_info: self.ext_pci_bus_info && other.ext_pci_bus_info,
3158            ext_physical_device_drm: self.ext_physical_device_drm && other.ext_physical_device_drm,
3159            ext_pipeline_creation_cache_control: self.ext_pipeline_creation_cache_control
3160                && other.ext_pipeline_creation_cache_control,
3161            ext_pipeline_creation_feedback: self.ext_pipeline_creation_feedback
3162                && other.ext_pipeline_creation_feedback,
3163            ext_pipeline_library_group_handles: self.ext_pipeline_library_group_handles
3164                && other.ext_pipeline_library_group_handles,
3165            ext_pipeline_properties: self.ext_pipeline_properties && other.ext_pipeline_properties,
3166            ext_pipeline_protected_access: self.ext_pipeline_protected_access
3167                && other.ext_pipeline_protected_access,
3168            ext_pipeline_robustness: self.ext_pipeline_robustness && other.ext_pipeline_robustness,
3169            ext_post_depth_coverage: self.ext_post_depth_coverage && other.ext_post_depth_coverage,
3170            ext_primitive_topology_list_restart: self.ext_primitive_topology_list_restart
3171                && other.ext_primitive_topology_list_restart,
3172            ext_primitives_generated_query: self.ext_primitives_generated_query
3173                && other.ext_primitives_generated_query,
3174            ext_private_data: self.ext_private_data && other.ext_private_data,
3175            ext_provoking_vertex: self.ext_provoking_vertex && other.ext_provoking_vertex,
3176            ext_queue_family_foreign: self.ext_queue_family_foreign
3177                && other.ext_queue_family_foreign,
3178            ext_rasterization_order_attachment_access: self
3179                .ext_rasterization_order_attachment_access
3180                && other.ext_rasterization_order_attachment_access,
3181            ext_rgba10x6_formats: self.ext_rgba10x6_formats && other.ext_rgba10x6_formats,
3182            ext_robustness2: self.ext_robustness2 && other.ext_robustness2,
3183            ext_sample_locations: self.ext_sample_locations && other.ext_sample_locations,
3184            ext_sampler_filter_minmax: self.ext_sampler_filter_minmax
3185                && other.ext_sampler_filter_minmax,
3186            ext_scalar_block_layout: self.ext_scalar_block_layout && other.ext_scalar_block_layout,
3187            ext_separate_stencil_usage: self.ext_separate_stencil_usage
3188                && other.ext_separate_stencil_usage,
3189            ext_shader_atomic_float: self.ext_shader_atomic_float && other.ext_shader_atomic_float,
3190            ext_shader_atomic_float2: self.ext_shader_atomic_float2
3191                && other.ext_shader_atomic_float2,
3192            ext_shader_demote_to_helper_invocation: self.ext_shader_demote_to_helper_invocation
3193                && other.ext_shader_demote_to_helper_invocation,
3194            ext_shader_image_atomic_int64: self.ext_shader_image_atomic_int64
3195                && other.ext_shader_image_atomic_int64,
3196            ext_shader_module_identifier: self.ext_shader_module_identifier
3197                && other.ext_shader_module_identifier,
3198            ext_shader_object: self.ext_shader_object && other.ext_shader_object,
3199            ext_shader_stencil_export: self.ext_shader_stencil_export
3200                && other.ext_shader_stencil_export,
3201            ext_shader_subgroup_ballot: self.ext_shader_subgroup_ballot
3202                && other.ext_shader_subgroup_ballot,
3203            ext_shader_subgroup_vote: self.ext_shader_subgroup_vote
3204                && other.ext_shader_subgroup_vote,
3205            ext_shader_tile_image: self.ext_shader_tile_image && other.ext_shader_tile_image,
3206            ext_shader_viewport_index_layer: self.ext_shader_viewport_index_layer
3207                && other.ext_shader_viewport_index_layer,
3208            ext_subgroup_size_control: self.ext_subgroup_size_control
3209                && other.ext_subgroup_size_control,
3210            ext_subpass_merge_feedback: self.ext_subpass_merge_feedback
3211                && other.ext_subpass_merge_feedback,
3212            ext_swapchain_maintenance1: self.ext_swapchain_maintenance1
3213                && other.ext_swapchain_maintenance1,
3214            ext_texel_buffer_alignment: self.ext_texel_buffer_alignment
3215                && other.ext_texel_buffer_alignment,
3216            ext_texture_compression_astc_hdr: self.ext_texture_compression_astc_hdr
3217                && other.ext_texture_compression_astc_hdr,
3218            ext_tooling_info: self.ext_tooling_info && other.ext_tooling_info,
3219            ext_transform_feedback: self.ext_transform_feedback && other.ext_transform_feedback,
3220            ext_validation_cache: self.ext_validation_cache && other.ext_validation_cache,
3221            ext_vertex_attribute_divisor: self.ext_vertex_attribute_divisor
3222                && other.ext_vertex_attribute_divisor,
3223            ext_vertex_input_dynamic_state: self.ext_vertex_input_dynamic_state
3224                && other.ext_vertex_input_dynamic_state,
3225            ext_ycbcr_2plane_444_formats: self.ext_ycbcr_2plane_444_formats
3226                && other.ext_ycbcr_2plane_444_formats,
3227            ext_ycbcr_image_arrays: self.ext_ycbcr_image_arrays && other.ext_ycbcr_image_arrays,
3228            amdx_shader_enqueue: self.amdx_shader_enqueue && other.amdx_shader_enqueue,
3229            amd_buffer_marker: self.amd_buffer_marker && other.amd_buffer_marker,
3230            amd_device_coherent_memory: self.amd_device_coherent_memory
3231                && other.amd_device_coherent_memory,
3232            amd_display_native_hdr: self.amd_display_native_hdr && other.amd_display_native_hdr,
3233            amd_draw_indirect_count: self.amd_draw_indirect_count && other.amd_draw_indirect_count,
3234            amd_gcn_shader: self.amd_gcn_shader && other.amd_gcn_shader,
3235            amd_gpu_shader_half_float: self.amd_gpu_shader_half_float
3236                && other.amd_gpu_shader_half_float,
3237            amd_gpu_shader_int16: self.amd_gpu_shader_int16 && other.amd_gpu_shader_int16,
3238            amd_memory_overallocation_behavior: self.amd_memory_overallocation_behavior
3239                && other.amd_memory_overallocation_behavior,
3240            amd_mixed_attachment_samples: self.amd_mixed_attachment_samples
3241                && other.amd_mixed_attachment_samples,
3242            amd_pipeline_compiler_control: self.amd_pipeline_compiler_control
3243                && other.amd_pipeline_compiler_control,
3244            amd_rasterization_order: self.amd_rasterization_order && other.amd_rasterization_order,
3245            amd_shader_ballot: self.amd_shader_ballot && other.amd_shader_ballot,
3246            amd_shader_core_properties: self.amd_shader_core_properties
3247                && other.amd_shader_core_properties,
3248            amd_shader_core_properties2: self.amd_shader_core_properties2
3249                && other.amd_shader_core_properties2,
3250            amd_shader_early_and_late_fragment_tests: self.amd_shader_early_and_late_fragment_tests
3251                && other.amd_shader_early_and_late_fragment_tests,
3252            amd_shader_explicit_vertex_parameter: self.amd_shader_explicit_vertex_parameter
3253                && other.amd_shader_explicit_vertex_parameter,
3254            amd_shader_fragment_mask: self.amd_shader_fragment_mask
3255                && other.amd_shader_fragment_mask,
3256            amd_shader_image_load_store_lod: self.amd_shader_image_load_store_lod
3257                && other.amd_shader_image_load_store_lod,
3258            amd_shader_info: self.amd_shader_info && other.amd_shader_info,
3259            amd_shader_trinary_minmax: self.amd_shader_trinary_minmax
3260                && other.amd_shader_trinary_minmax,
3261            amd_texture_gather_bias_lod: self.amd_texture_gather_bias_lod
3262                && other.amd_texture_gather_bias_lod,
3263            android_external_format_resolve: self.android_external_format_resolve
3264                && other.android_external_format_resolve,
3265            android_external_memory_android_hardware_buffer: self
3266                .android_external_memory_android_hardware_buffer
3267                && other.android_external_memory_android_hardware_buffer,
3268            arm_rasterization_order_attachment_access: self
3269                .arm_rasterization_order_attachment_access
3270                && other.arm_rasterization_order_attachment_access,
3271            arm_render_pass_striped: self.arm_render_pass_striped && other.arm_render_pass_striped,
3272            arm_scheduling_controls: self.arm_scheduling_controls && other.arm_scheduling_controls,
3273            arm_shader_core_builtins: self.arm_shader_core_builtins
3274                && other.arm_shader_core_builtins,
3275            arm_shader_core_properties: self.arm_shader_core_properties
3276                && other.arm_shader_core_properties,
3277            fuchsia_buffer_collection: self.fuchsia_buffer_collection
3278                && other.fuchsia_buffer_collection,
3279            fuchsia_external_memory: self.fuchsia_external_memory && other.fuchsia_external_memory,
3280            fuchsia_external_semaphore: self.fuchsia_external_semaphore
3281                && other.fuchsia_external_semaphore,
3282            ggp_frame_token: self.ggp_frame_token && other.ggp_frame_token,
3283            google_decorate_string: self.google_decorate_string && other.google_decorate_string,
3284            google_display_timing: self.google_display_timing && other.google_display_timing,
3285            google_hlsl_functionality1: self.google_hlsl_functionality1
3286                && other.google_hlsl_functionality1,
3287            google_user_type: self.google_user_type && other.google_user_type,
3288            huawei_cluster_culling_shader: self.huawei_cluster_culling_shader
3289                && other.huawei_cluster_culling_shader,
3290            huawei_invocation_mask: self.huawei_invocation_mask && other.huawei_invocation_mask,
3291            huawei_subpass_shading: self.huawei_subpass_shading && other.huawei_subpass_shading,
3292            img_filter_cubic: self.img_filter_cubic && other.img_filter_cubic,
3293            img_format_pvrtc: self.img_format_pvrtc && other.img_format_pvrtc,
3294            img_relaxed_line_rasterization: self.img_relaxed_line_rasterization
3295                && other.img_relaxed_line_rasterization,
3296            intel_performance_query: self.intel_performance_query && other.intel_performance_query,
3297            intel_shader_integer_functions2: self.intel_shader_integer_functions2
3298                && other.intel_shader_integer_functions2,
3299            msft_layered_driver: self.msft_layered_driver && other.msft_layered_driver,
3300            nvx_binary_import: self.nvx_binary_import && other.nvx_binary_import,
3301            nvx_image_view_handle: self.nvx_image_view_handle && other.nvx_image_view_handle,
3302            nvx_multiview_per_view_attributes: self.nvx_multiview_per_view_attributes
3303                && other.nvx_multiview_per_view_attributes,
3304            nv_acquire_winrt_display: self.nv_acquire_winrt_display
3305                && other.nv_acquire_winrt_display,
3306            nv_clip_space_w_scaling: self.nv_clip_space_w_scaling && other.nv_clip_space_w_scaling,
3307            nv_compute_shader_derivatives: self.nv_compute_shader_derivatives
3308                && other.nv_compute_shader_derivatives,
3309            nv_cooperative_matrix: self.nv_cooperative_matrix && other.nv_cooperative_matrix,
3310            nv_copy_memory_indirect: self.nv_copy_memory_indirect && other.nv_copy_memory_indirect,
3311            nv_corner_sampled_image: self.nv_corner_sampled_image && other.nv_corner_sampled_image,
3312            nv_coverage_reduction_mode: self.nv_coverage_reduction_mode
3313                && other.nv_coverage_reduction_mode,
3314            nv_cuda_kernel_launch: self.nv_cuda_kernel_launch && other.nv_cuda_kernel_launch,
3315            nv_dedicated_allocation: self.nv_dedicated_allocation && other.nv_dedicated_allocation,
3316            nv_dedicated_allocation_image_aliasing: self.nv_dedicated_allocation_image_aliasing
3317                && other.nv_dedicated_allocation_image_aliasing,
3318            nv_descriptor_pool_overallocation: self.nv_descriptor_pool_overallocation
3319                && other.nv_descriptor_pool_overallocation,
3320            nv_device_diagnostic_checkpoints: self.nv_device_diagnostic_checkpoints
3321                && other.nv_device_diagnostic_checkpoints,
3322            nv_device_diagnostics_config: self.nv_device_diagnostics_config
3323                && other.nv_device_diagnostics_config,
3324            nv_device_generated_commands: self.nv_device_generated_commands
3325                && other.nv_device_generated_commands,
3326            nv_device_generated_commands_compute: self.nv_device_generated_commands_compute
3327                && other.nv_device_generated_commands_compute,
3328            nv_displacement_micromap: self.nv_displacement_micromap
3329                && other.nv_displacement_micromap,
3330            nv_extended_sparse_address_space: self.nv_extended_sparse_address_space
3331                && other.nv_extended_sparse_address_space,
3332            nv_external_memory: self.nv_external_memory && other.nv_external_memory,
3333            nv_external_memory_rdma: self.nv_external_memory_rdma && other.nv_external_memory_rdma,
3334            nv_external_memory_win32: self.nv_external_memory_win32
3335                && other.nv_external_memory_win32,
3336            nv_fill_rectangle: self.nv_fill_rectangle && other.nv_fill_rectangle,
3337            nv_fragment_coverage_to_color: self.nv_fragment_coverage_to_color
3338                && other.nv_fragment_coverage_to_color,
3339            nv_fragment_shader_barycentric: self.nv_fragment_shader_barycentric
3340                && other.nv_fragment_shader_barycentric,
3341            nv_fragment_shading_rate_enums: self.nv_fragment_shading_rate_enums
3342                && other.nv_fragment_shading_rate_enums,
3343            nv_framebuffer_mixed_samples: self.nv_framebuffer_mixed_samples
3344                && other.nv_framebuffer_mixed_samples,
3345            nv_geometry_shader_passthrough: self.nv_geometry_shader_passthrough
3346                && other.nv_geometry_shader_passthrough,
3347            nv_glsl_shader: self.nv_glsl_shader && other.nv_glsl_shader,
3348            nv_inherited_viewport_scissor: self.nv_inherited_viewport_scissor
3349                && other.nv_inherited_viewport_scissor,
3350            nv_linear_color_attachment: self.nv_linear_color_attachment
3351                && other.nv_linear_color_attachment,
3352            nv_low_latency: self.nv_low_latency && other.nv_low_latency,
3353            nv_low_latency2: self.nv_low_latency2 && other.nv_low_latency2,
3354            nv_memory_decompression: self.nv_memory_decompression && other.nv_memory_decompression,
3355            nv_mesh_shader: self.nv_mesh_shader && other.nv_mesh_shader,
3356            nv_optical_flow: self.nv_optical_flow && other.nv_optical_flow,
3357            nv_per_stage_descriptor_set: self.nv_per_stage_descriptor_set
3358                && other.nv_per_stage_descriptor_set,
3359            nv_present_barrier: self.nv_present_barrier && other.nv_present_barrier,
3360            nv_raw_access_chains: self.nv_raw_access_chains && other.nv_raw_access_chains,
3361            nv_ray_tracing: self.nv_ray_tracing && other.nv_ray_tracing,
3362            nv_ray_tracing_invocation_reorder: self.nv_ray_tracing_invocation_reorder
3363                && other.nv_ray_tracing_invocation_reorder,
3364            nv_ray_tracing_motion_blur: self.nv_ray_tracing_motion_blur
3365                && other.nv_ray_tracing_motion_blur,
3366            nv_ray_tracing_validation: self.nv_ray_tracing_validation
3367                && other.nv_ray_tracing_validation,
3368            nv_representative_fragment_test: self.nv_representative_fragment_test
3369                && other.nv_representative_fragment_test,
3370            nv_sample_mask_override_coverage: self.nv_sample_mask_override_coverage
3371                && other.nv_sample_mask_override_coverage,
3372            nv_scissor_exclusive: self.nv_scissor_exclusive && other.nv_scissor_exclusive,
3373            nv_shader_atomic_float16_vector: self.nv_shader_atomic_float16_vector
3374                && other.nv_shader_atomic_float16_vector,
3375            nv_shader_image_footprint: self.nv_shader_image_footprint
3376                && other.nv_shader_image_footprint,
3377            nv_shader_sm_builtins: self.nv_shader_sm_builtins && other.nv_shader_sm_builtins,
3378            nv_shader_subgroup_partitioned: self.nv_shader_subgroup_partitioned
3379                && other.nv_shader_subgroup_partitioned,
3380            nv_shading_rate_image: self.nv_shading_rate_image && other.nv_shading_rate_image,
3381            nv_viewport_array2: self.nv_viewport_array2 && other.nv_viewport_array2,
3382            nv_viewport_swizzle: self.nv_viewport_swizzle && other.nv_viewport_swizzle,
3383            nv_win32_keyed_mutex: self.nv_win32_keyed_mutex && other.nv_win32_keyed_mutex,
3384            qcom_filter_cubic_clamp: self.qcom_filter_cubic_clamp && other.qcom_filter_cubic_clamp,
3385            qcom_filter_cubic_weights: self.qcom_filter_cubic_weights
3386                && other.qcom_filter_cubic_weights,
3387            qcom_fragment_density_map_offset: self.qcom_fragment_density_map_offset
3388                && other.qcom_fragment_density_map_offset,
3389            qcom_image_processing: self.qcom_image_processing && other.qcom_image_processing,
3390            qcom_image_processing2: self.qcom_image_processing2 && other.qcom_image_processing2,
3391            qcom_multiview_per_view_render_areas: self.qcom_multiview_per_view_render_areas
3392                && other.qcom_multiview_per_view_render_areas,
3393            qcom_multiview_per_view_viewports: self.qcom_multiview_per_view_viewports
3394                && other.qcom_multiview_per_view_viewports,
3395            qcom_render_pass_shader_resolve: self.qcom_render_pass_shader_resolve
3396                && other.qcom_render_pass_shader_resolve,
3397            qcom_render_pass_store_ops: self.qcom_render_pass_store_ops
3398                && other.qcom_render_pass_store_ops,
3399            qcom_render_pass_transform: self.qcom_render_pass_transform
3400                && other.qcom_render_pass_transform,
3401            qcom_rotated_copy_commands: self.qcom_rotated_copy_commands
3402                && other.qcom_rotated_copy_commands,
3403            qcom_tile_properties: self.qcom_tile_properties && other.qcom_tile_properties,
3404            qcom_ycbcr_degamma: self.qcom_ycbcr_degamma && other.qcom_ycbcr_degamma,
3405            qnx_external_memory_screen_buffer: self.qnx_external_memory_screen_buffer
3406                && other.qnx_external_memory_screen_buffer,
3407            sec_amigo_profiling: self.sec_amigo_profiling && other.sec_amigo_profiling,
3408            valve_descriptor_set_host_mapping: self.valve_descriptor_set_host_mapping
3409                && other.valve_descriptor_set_host_mapping,
3410            valve_mutable_descriptor_type: self.valve_mutable_descriptor_type
3411                && other.valve_mutable_descriptor_type,
3412            _ne: crate::NonExhaustive(()),
3413        }
3414    }
3415    #[doc = r" Returns `self` without the members set in `other`."]
3416    #[inline]
3417    pub const fn difference(&self, other: &Self) -> Self {
3418        Self {
3419            khr_16bit_storage: self.khr_16bit_storage && !other.khr_16bit_storage,
3420            khr_8bit_storage: self.khr_8bit_storage && !other.khr_8bit_storage,
3421            khr_acceleration_structure: self.khr_acceleration_structure
3422                && !other.khr_acceleration_structure,
3423            khr_bind_memory2: self.khr_bind_memory2 && !other.khr_bind_memory2,
3424            khr_buffer_device_address: self.khr_buffer_device_address
3425                && !other.khr_buffer_device_address,
3426            khr_calibrated_timestamps: self.khr_calibrated_timestamps
3427                && !other.khr_calibrated_timestamps,
3428            khr_cooperative_matrix: self.khr_cooperative_matrix && !other.khr_cooperative_matrix,
3429            khr_copy_commands2: self.khr_copy_commands2 && !other.khr_copy_commands2,
3430            khr_create_renderpass2: self.khr_create_renderpass2 && !other.khr_create_renderpass2,
3431            khr_dedicated_allocation: self.khr_dedicated_allocation
3432                && !other.khr_dedicated_allocation,
3433            khr_deferred_host_operations: self.khr_deferred_host_operations
3434                && !other.khr_deferred_host_operations,
3435            khr_depth_stencil_resolve: self.khr_depth_stencil_resolve
3436                && !other.khr_depth_stencil_resolve,
3437            khr_descriptor_update_template: self.khr_descriptor_update_template
3438                && !other.khr_descriptor_update_template,
3439            khr_device_group: self.khr_device_group && !other.khr_device_group,
3440            khr_display_swapchain: self.khr_display_swapchain && !other.khr_display_swapchain,
3441            khr_draw_indirect_count: self.khr_draw_indirect_count && !other.khr_draw_indirect_count,
3442            khr_driver_properties: self.khr_driver_properties && !other.khr_driver_properties,
3443            khr_dynamic_rendering: self.khr_dynamic_rendering && !other.khr_dynamic_rendering,
3444            khr_dynamic_rendering_local_read: self.khr_dynamic_rendering_local_read
3445                && !other.khr_dynamic_rendering_local_read,
3446            khr_external_fence: self.khr_external_fence && !other.khr_external_fence,
3447            khr_external_fence_fd: self.khr_external_fence_fd && !other.khr_external_fence_fd,
3448            khr_external_fence_win32: self.khr_external_fence_win32
3449                && !other.khr_external_fence_win32,
3450            khr_external_memory: self.khr_external_memory && !other.khr_external_memory,
3451            khr_external_memory_fd: self.khr_external_memory_fd && !other.khr_external_memory_fd,
3452            khr_external_memory_win32: self.khr_external_memory_win32
3453                && !other.khr_external_memory_win32,
3454            khr_external_semaphore: self.khr_external_semaphore && !other.khr_external_semaphore,
3455            khr_external_semaphore_fd: self.khr_external_semaphore_fd
3456                && !other.khr_external_semaphore_fd,
3457            khr_external_semaphore_win32: self.khr_external_semaphore_win32
3458                && !other.khr_external_semaphore_win32,
3459            khr_format_feature_flags2: self.khr_format_feature_flags2
3460                && !other.khr_format_feature_flags2,
3461            khr_fragment_shader_barycentric: self.khr_fragment_shader_barycentric
3462                && !other.khr_fragment_shader_barycentric,
3463            khr_fragment_shading_rate: self.khr_fragment_shading_rate
3464                && !other.khr_fragment_shading_rate,
3465            khr_get_memory_requirements2: self.khr_get_memory_requirements2
3466                && !other.khr_get_memory_requirements2,
3467            khr_global_priority: self.khr_global_priority && !other.khr_global_priority,
3468            khr_image_format_list: self.khr_image_format_list && !other.khr_image_format_list,
3469            khr_imageless_framebuffer: self.khr_imageless_framebuffer
3470                && !other.khr_imageless_framebuffer,
3471            khr_incremental_present: self.khr_incremental_present && !other.khr_incremental_present,
3472            khr_index_type_uint8: self.khr_index_type_uint8 && !other.khr_index_type_uint8,
3473            khr_line_rasterization: self.khr_line_rasterization && !other.khr_line_rasterization,
3474            khr_load_store_op_none: self.khr_load_store_op_none && !other.khr_load_store_op_none,
3475            khr_maintenance1: self.khr_maintenance1 && !other.khr_maintenance1,
3476            khr_maintenance2: self.khr_maintenance2 && !other.khr_maintenance2,
3477            khr_maintenance3: self.khr_maintenance3 && !other.khr_maintenance3,
3478            khr_maintenance4: self.khr_maintenance4 && !other.khr_maintenance4,
3479            khr_maintenance5: self.khr_maintenance5 && !other.khr_maintenance5,
3480            khr_maintenance6: self.khr_maintenance6 && !other.khr_maintenance6,
3481            khr_map_memory2: self.khr_map_memory2 && !other.khr_map_memory2,
3482            khr_multiview: self.khr_multiview && !other.khr_multiview,
3483            khr_performance_query: self.khr_performance_query && !other.khr_performance_query,
3484            khr_pipeline_executable_properties: self.khr_pipeline_executable_properties
3485                && !other.khr_pipeline_executable_properties,
3486            khr_pipeline_library: self.khr_pipeline_library && !other.khr_pipeline_library,
3487            khr_portability_subset: self.khr_portability_subset && !other.khr_portability_subset,
3488            khr_present_id: self.khr_present_id && !other.khr_present_id,
3489            khr_present_wait: self.khr_present_wait && !other.khr_present_wait,
3490            khr_push_descriptor: self.khr_push_descriptor && !other.khr_push_descriptor,
3491            khr_ray_query: self.khr_ray_query && !other.khr_ray_query,
3492            khr_ray_tracing_maintenance1: self.khr_ray_tracing_maintenance1
3493                && !other.khr_ray_tracing_maintenance1,
3494            khr_ray_tracing_pipeline: self.khr_ray_tracing_pipeline
3495                && !other.khr_ray_tracing_pipeline,
3496            khr_ray_tracing_position_fetch: self.khr_ray_tracing_position_fetch
3497                && !other.khr_ray_tracing_position_fetch,
3498            khr_relaxed_block_layout: self.khr_relaxed_block_layout
3499                && !other.khr_relaxed_block_layout,
3500            khr_sampler_mirror_clamp_to_edge: self.khr_sampler_mirror_clamp_to_edge
3501                && !other.khr_sampler_mirror_clamp_to_edge,
3502            khr_sampler_ycbcr_conversion: self.khr_sampler_ycbcr_conversion
3503                && !other.khr_sampler_ycbcr_conversion,
3504            khr_separate_depth_stencil_layouts: self.khr_separate_depth_stencil_layouts
3505                && !other.khr_separate_depth_stencil_layouts,
3506            khr_shader_atomic_int64: self.khr_shader_atomic_int64 && !other.khr_shader_atomic_int64,
3507            khr_shader_clock: self.khr_shader_clock && !other.khr_shader_clock,
3508            khr_shader_draw_parameters: self.khr_shader_draw_parameters
3509                && !other.khr_shader_draw_parameters,
3510            khr_shader_expect_assume: self.khr_shader_expect_assume
3511                && !other.khr_shader_expect_assume,
3512            khr_shader_float16_int8: self.khr_shader_float16_int8 && !other.khr_shader_float16_int8,
3513            khr_shader_float_controls: self.khr_shader_float_controls
3514                && !other.khr_shader_float_controls,
3515            khr_shader_float_controls2: self.khr_shader_float_controls2
3516                && !other.khr_shader_float_controls2,
3517            khr_shader_integer_dot_product: self.khr_shader_integer_dot_product
3518                && !other.khr_shader_integer_dot_product,
3519            khr_shader_maximal_reconvergence: self.khr_shader_maximal_reconvergence
3520                && !other.khr_shader_maximal_reconvergence,
3521            khr_shader_non_semantic_info: self.khr_shader_non_semantic_info
3522                && !other.khr_shader_non_semantic_info,
3523            khr_shader_quad_control: self.khr_shader_quad_control && !other.khr_shader_quad_control,
3524            khr_shader_subgroup_extended_types: self.khr_shader_subgroup_extended_types
3525                && !other.khr_shader_subgroup_extended_types,
3526            khr_shader_subgroup_rotate: self.khr_shader_subgroup_rotate
3527                && !other.khr_shader_subgroup_rotate,
3528            khr_shader_subgroup_uniform_control_flow: self.khr_shader_subgroup_uniform_control_flow
3529                && !other.khr_shader_subgroup_uniform_control_flow,
3530            khr_shader_terminate_invocation: self.khr_shader_terminate_invocation
3531                && !other.khr_shader_terminate_invocation,
3532            khr_shared_presentable_image: self.khr_shared_presentable_image
3533                && !other.khr_shared_presentable_image,
3534            khr_spirv_1_4: self.khr_spirv_1_4 && !other.khr_spirv_1_4,
3535            khr_storage_buffer_storage_class: self.khr_storage_buffer_storage_class
3536                && !other.khr_storage_buffer_storage_class,
3537            khr_swapchain: self.khr_swapchain && !other.khr_swapchain,
3538            khr_swapchain_mutable_format: self.khr_swapchain_mutable_format
3539                && !other.khr_swapchain_mutable_format,
3540            khr_synchronization2: self.khr_synchronization2 && !other.khr_synchronization2,
3541            khr_timeline_semaphore: self.khr_timeline_semaphore && !other.khr_timeline_semaphore,
3542            khr_uniform_buffer_standard_layout: self.khr_uniform_buffer_standard_layout
3543                && !other.khr_uniform_buffer_standard_layout,
3544            khr_variable_pointers: self.khr_variable_pointers && !other.khr_variable_pointers,
3545            khr_vertex_attribute_divisor: self.khr_vertex_attribute_divisor
3546                && !other.khr_vertex_attribute_divisor,
3547            khr_video_decode_av1: self.khr_video_decode_av1 && !other.khr_video_decode_av1,
3548            khr_video_decode_h264: self.khr_video_decode_h264 && !other.khr_video_decode_h264,
3549            khr_video_decode_h265: self.khr_video_decode_h265 && !other.khr_video_decode_h265,
3550            khr_video_decode_queue: self.khr_video_decode_queue && !other.khr_video_decode_queue,
3551            khr_video_encode_h264: self.khr_video_encode_h264 && !other.khr_video_encode_h264,
3552            khr_video_encode_h265: self.khr_video_encode_h265 && !other.khr_video_encode_h265,
3553            khr_video_encode_queue: self.khr_video_encode_queue && !other.khr_video_encode_queue,
3554            khr_video_maintenance1: self.khr_video_maintenance1 && !other.khr_video_maintenance1,
3555            khr_video_queue: self.khr_video_queue && !other.khr_video_queue,
3556            khr_vulkan_memory_model: self.khr_vulkan_memory_model && !other.khr_vulkan_memory_model,
3557            khr_win32_keyed_mutex: self.khr_win32_keyed_mutex && !other.khr_win32_keyed_mutex,
3558            khr_workgroup_memory_explicit_layout: self.khr_workgroup_memory_explicit_layout
3559                && !other.khr_workgroup_memory_explicit_layout,
3560            khr_zero_initialize_workgroup_memory: self.khr_zero_initialize_workgroup_memory
3561                && !other.khr_zero_initialize_workgroup_memory,
3562            ext_4444_formats: self.ext_4444_formats && !other.ext_4444_formats,
3563            ext_astc_decode_mode: self.ext_astc_decode_mode && !other.ext_astc_decode_mode,
3564            ext_attachment_feedback_loop_dynamic_state: self
3565                .ext_attachment_feedback_loop_dynamic_state
3566                && !other.ext_attachment_feedback_loop_dynamic_state,
3567            ext_attachment_feedback_loop_layout: self.ext_attachment_feedback_loop_layout
3568                && !other.ext_attachment_feedback_loop_layout,
3569            ext_blend_operation_advanced: self.ext_blend_operation_advanced
3570                && !other.ext_blend_operation_advanced,
3571            ext_border_color_swizzle: self.ext_border_color_swizzle
3572                && !other.ext_border_color_swizzle,
3573            ext_buffer_device_address: self.ext_buffer_device_address
3574                && !other.ext_buffer_device_address,
3575            ext_calibrated_timestamps: self.ext_calibrated_timestamps
3576                && !other.ext_calibrated_timestamps,
3577            ext_color_write_enable: self.ext_color_write_enable && !other.ext_color_write_enable,
3578            ext_conditional_rendering: self.ext_conditional_rendering
3579                && !other.ext_conditional_rendering,
3580            ext_conservative_rasterization: self.ext_conservative_rasterization
3581                && !other.ext_conservative_rasterization,
3582            ext_custom_border_color: self.ext_custom_border_color && !other.ext_custom_border_color,
3583            ext_debug_marker: self.ext_debug_marker && !other.ext_debug_marker,
3584            ext_depth_bias_control: self.ext_depth_bias_control && !other.ext_depth_bias_control,
3585            ext_depth_clamp_zero_one: self.ext_depth_clamp_zero_one
3586                && !other.ext_depth_clamp_zero_one,
3587            ext_depth_clip_control: self.ext_depth_clip_control && !other.ext_depth_clip_control,
3588            ext_depth_clip_enable: self.ext_depth_clip_enable && !other.ext_depth_clip_enable,
3589            ext_depth_range_unrestricted: self.ext_depth_range_unrestricted
3590                && !other.ext_depth_range_unrestricted,
3591            ext_descriptor_buffer: self.ext_descriptor_buffer && !other.ext_descriptor_buffer,
3592            ext_descriptor_indexing: self.ext_descriptor_indexing && !other.ext_descriptor_indexing,
3593            ext_device_address_binding_report: self.ext_device_address_binding_report
3594                && !other.ext_device_address_binding_report,
3595            ext_device_fault: self.ext_device_fault && !other.ext_device_fault,
3596            ext_device_memory_report: self.ext_device_memory_report
3597                && !other.ext_device_memory_report,
3598            ext_discard_rectangles: self.ext_discard_rectangles && !other.ext_discard_rectangles,
3599            ext_display_control: self.ext_display_control && !other.ext_display_control,
3600            ext_dynamic_rendering_unused_attachments: self.ext_dynamic_rendering_unused_attachments
3601                && !other.ext_dynamic_rendering_unused_attachments,
3602            ext_extended_dynamic_state: self.ext_extended_dynamic_state
3603                && !other.ext_extended_dynamic_state,
3604            ext_extended_dynamic_state2: self.ext_extended_dynamic_state2
3605                && !other.ext_extended_dynamic_state2,
3606            ext_extended_dynamic_state3: self.ext_extended_dynamic_state3
3607                && !other.ext_extended_dynamic_state3,
3608            ext_external_memory_acquire_unmodified: self.ext_external_memory_acquire_unmodified
3609                && !other.ext_external_memory_acquire_unmodified,
3610            ext_external_memory_dma_buf: self.ext_external_memory_dma_buf
3611                && !other.ext_external_memory_dma_buf,
3612            ext_external_memory_host: self.ext_external_memory_host
3613                && !other.ext_external_memory_host,
3614            ext_filter_cubic: self.ext_filter_cubic && !other.ext_filter_cubic,
3615            ext_fragment_density_map: self.ext_fragment_density_map
3616                && !other.ext_fragment_density_map,
3617            ext_fragment_density_map2: self.ext_fragment_density_map2
3618                && !other.ext_fragment_density_map2,
3619            ext_fragment_shader_interlock: self.ext_fragment_shader_interlock
3620                && !other.ext_fragment_shader_interlock,
3621            ext_frame_boundary: self.ext_frame_boundary && !other.ext_frame_boundary,
3622            ext_full_screen_exclusive: self.ext_full_screen_exclusive
3623                && !other.ext_full_screen_exclusive,
3624            ext_global_priority: self.ext_global_priority && !other.ext_global_priority,
3625            ext_global_priority_query: self.ext_global_priority_query
3626                && !other.ext_global_priority_query,
3627            ext_graphics_pipeline_library: self.ext_graphics_pipeline_library
3628                && !other.ext_graphics_pipeline_library,
3629            ext_hdr_metadata: self.ext_hdr_metadata && !other.ext_hdr_metadata,
3630            ext_host_image_copy: self.ext_host_image_copy && !other.ext_host_image_copy,
3631            ext_host_query_reset: self.ext_host_query_reset && !other.ext_host_query_reset,
3632            ext_image_2d_view_of_3d: self.ext_image_2d_view_of_3d && !other.ext_image_2d_view_of_3d,
3633            ext_image_compression_control: self.ext_image_compression_control
3634                && !other.ext_image_compression_control,
3635            ext_image_compression_control_swapchain: self.ext_image_compression_control_swapchain
3636                && !other.ext_image_compression_control_swapchain,
3637            ext_image_drm_format_modifier: self.ext_image_drm_format_modifier
3638                && !other.ext_image_drm_format_modifier,
3639            ext_image_robustness: self.ext_image_robustness && !other.ext_image_robustness,
3640            ext_image_sliced_view_of_3d: self.ext_image_sliced_view_of_3d
3641                && !other.ext_image_sliced_view_of_3d,
3642            ext_image_view_min_lod: self.ext_image_view_min_lod && !other.ext_image_view_min_lod,
3643            ext_index_type_uint8: self.ext_index_type_uint8 && !other.ext_index_type_uint8,
3644            ext_inline_uniform_block: self.ext_inline_uniform_block
3645                && !other.ext_inline_uniform_block,
3646            ext_legacy_dithering: self.ext_legacy_dithering && !other.ext_legacy_dithering,
3647            ext_line_rasterization: self.ext_line_rasterization && !other.ext_line_rasterization,
3648            ext_load_store_op_none: self.ext_load_store_op_none && !other.ext_load_store_op_none,
3649            ext_map_memory_placed: self.ext_map_memory_placed && !other.ext_map_memory_placed,
3650            ext_memory_budget: self.ext_memory_budget && !other.ext_memory_budget,
3651            ext_memory_priority: self.ext_memory_priority && !other.ext_memory_priority,
3652            ext_mesh_shader: self.ext_mesh_shader && !other.ext_mesh_shader,
3653            ext_metal_objects: self.ext_metal_objects && !other.ext_metal_objects,
3654            ext_multi_draw: self.ext_multi_draw && !other.ext_multi_draw,
3655            ext_multisampled_render_to_single_sampled: self
3656                .ext_multisampled_render_to_single_sampled
3657                && !other.ext_multisampled_render_to_single_sampled,
3658            ext_mutable_descriptor_type: self.ext_mutable_descriptor_type
3659                && !other.ext_mutable_descriptor_type,
3660            ext_nested_command_buffer: self.ext_nested_command_buffer
3661                && !other.ext_nested_command_buffer,
3662            ext_non_seamless_cube_map: self.ext_non_seamless_cube_map
3663                && !other.ext_non_seamless_cube_map,
3664            ext_opacity_micromap: self.ext_opacity_micromap && !other.ext_opacity_micromap,
3665            ext_pageable_device_local_memory: self.ext_pageable_device_local_memory
3666                && !other.ext_pageable_device_local_memory,
3667            ext_pci_bus_info: self.ext_pci_bus_info && !other.ext_pci_bus_info,
3668            ext_physical_device_drm: self.ext_physical_device_drm && !other.ext_physical_device_drm,
3669            ext_pipeline_creation_cache_control: self.ext_pipeline_creation_cache_control
3670                && !other.ext_pipeline_creation_cache_control,
3671            ext_pipeline_creation_feedback: self.ext_pipeline_creation_feedback
3672                && !other.ext_pipeline_creation_feedback,
3673            ext_pipeline_library_group_handles: self.ext_pipeline_library_group_handles
3674                && !other.ext_pipeline_library_group_handles,
3675            ext_pipeline_properties: self.ext_pipeline_properties && !other.ext_pipeline_properties,
3676            ext_pipeline_protected_access: self.ext_pipeline_protected_access
3677                && !other.ext_pipeline_protected_access,
3678            ext_pipeline_robustness: self.ext_pipeline_robustness && !other.ext_pipeline_robustness,
3679            ext_post_depth_coverage: self.ext_post_depth_coverage && !other.ext_post_depth_coverage,
3680            ext_primitive_topology_list_restart: self.ext_primitive_topology_list_restart
3681                && !other.ext_primitive_topology_list_restart,
3682            ext_primitives_generated_query: self.ext_primitives_generated_query
3683                && !other.ext_primitives_generated_query,
3684            ext_private_data: self.ext_private_data && !other.ext_private_data,
3685            ext_provoking_vertex: self.ext_provoking_vertex && !other.ext_provoking_vertex,
3686            ext_queue_family_foreign: self.ext_queue_family_foreign
3687                && !other.ext_queue_family_foreign,
3688            ext_rasterization_order_attachment_access: self
3689                .ext_rasterization_order_attachment_access
3690                && !other.ext_rasterization_order_attachment_access,
3691            ext_rgba10x6_formats: self.ext_rgba10x6_formats && !other.ext_rgba10x6_formats,
3692            ext_robustness2: self.ext_robustness2 && !other.ext_robustness2,
3693            ext_sample_locations: self.ext_sample_locations && !other.ext_sample_locations,
3694            ext_sampler_filter_minmax: self.ext_sampler_filter_minmax
3695                && !other.ext_sampler_filter_minmax,
3696            ext_scalar_block_layout: self.ext_scalar_block_layout && !other.ext_scalar_block_layout,
3697            ext_separate_stencil_usage: self.ext_separate_stencil_usage
3698                && !other.ext_separate_stencil_usage,
3699            ext_shader_atomic_float: self.ext_shader_atomic_float && !other.ext_shader_atomic_float,
3700            ext_shader_atomic_float2: self.ext_shader_atomic_float2
3701                && !other.ext_shader_atomic_float2,
3702            ext_shader_demote_to_helper_invocation: self.ext_shader_demote_to_helper_invocation
3703                && !other.ext_shader_demote_to_helper_invocation,
3704            ext_shader_image_atomic_int64: self.ext_shader_image_atomic_int64
3705                && !other.ext_shader_image_atomic_int64,
3706            ext_shader_module_identifier: self.ext_shader_module_identifier
3707                && !other.ext_shader_module_identifier,
3708            ext_shader_object: self.ext_shader_object && !other.ext_shader_object,
3709            ext_shader_stencil_export: self.ext_shader_stencil_export
3710                && !other.ext_shader_stencil_export,
3711            ext_shader_subgroup_ballot: self.ext_shader_subgroup_ballot
3712                && !other.ext_shader_subgroup_ballot,
3713            ext_shader_subgroup_vote: self.ext_shader_subgroup_vote
3714                && !other.ext_shader_subgroup_vote,
3715            ext_shader_tile_image: self.ext_shader_tile_image && !other.ext_shader_tile_image,
3716            ext_shader_viewport_index_layer: self.ext_shader_viewport_index_layer
3717                && !other.ext_shader_viewport_index_layer,
3718            ext_subgroup_size_control: self.ext_subgroup_size_control
3719                && !other.ext_subgroup_size_control,
3720            ext_subpass_merge_feedback: self.ext_subpass_merge_feedback
3721                && !other.ext_subpass_merge_feedback,
3722            ext_swapchain_maintenance1: self.ext_swapchain_maintenance1
3723                && !other.ext_swapchain_maintenance1,
3724            ext_texel_buffer_alignment: self.ext_texel_buffer_alignment
3725                && !other.ext_texel_buffer_alignment,
3726            ext_texture_compression_astc_hdr: self.ext_texture_compression_astc_hdr
3727                && !other.ext_texture_compression_astc_hdr,
3728            ext_tooling_info: self.ext_tooling_info && !other.ext_tooling_info,
3729            ext_transform_feedback: self.ext_transform_feedback && !other.ext_transform_feedback,
3730            ext_validation_cache: self.ext_validation_cache && !other.ext_validation_cache,
3731            ext_vertex_attribute_divisor: self.ext_vertex_attribute_divisor
3732                && !other.ext_vertex_attribute_divisor,
3733            ext_vertex_input_dynamic_state: self.ext_vertex_input_dynamic_state
3734                && !other.ext_vertex_input_dynamic_state,
3735            ext_ycbcr_2plane_444_formats: self.ext_ycbcr_2plane_444_formats
3736                && !other.ext_ycbcr_2plane_444_formats,
3737            ext_ycbcr_image_arrays: self.ext_ycbcr_image_arrays && !other.ext_ycbcr_image_arrays,
3738            amdx_shader_enqueue: self.amdx_shader_enqueue && !other.amdx_shader_enqueue,
3739            amd_buffer_marker: self.amd_buffer_marker && !other.amd_buffer_marker,
3740            amd_device_coherent_memory: self.amd_device_coherent_memory
3741                && !other.amd_device_coherent_memory,
3742            amd_display_native_hdr: self.amd_display_native_hdr && !other.amd_display_native_hdr,
3743            amd_draw_indirect_count: self.amd_draw_indirect_count && !other.amd_draw_indirect_count,
3744            amd_gcn_shader: self.amd_gcn_shader && !other.amd_gcn_shader,
3745            amd_gpu_shader_half_float: self.amd_gpu_shader_half_float
3746                && !other.amd_gpu_shader_half_float,
3747            amd_gpu_shader_int16: self.amd_gpu_shader_int16 && !other.amd_gpu_shader_int16,
3748            amd_memory_overallocation_behavior: self.amd_memory_overallocation_behavior
3749                && !other.amd_memory_overallocation_behavior,
3750            amd_mixed_attachment_samples: self.amd_mixed_attachment_samples
3751                && !other.amd_mixed_attachment_samples,
3752            amd_pipeline_compiler_control: self.amd_pipeline_compiler_control
3753                && !other.amd_pipeline_compiler_control,
3754            amd_rasterization_order: self.amd_rasterization_order && !other.amd_rasterization_order,
3755            amd_shader_ballot: self.amd_shader_ballot && !other.amd_shader_ballot,
3756            amd_shader_core_properties: self.amd_shader_core_properties
3757                && !other.amd_shader_core_properties,
3758            amd_shader_core_properties2: self.amd_shader_core_properties2
3759                && !other.amd_shader_core_properties2,
3760            amd_shader_early_and_late_fragment_tests: self.amd_shader_early_and_late_fragment_tests
3761                && !other.amd_shader_early_and_late_fragment_tests,
3762            amd_shader_explicit_vertex_parameter: self.amd_shader_explicit_vertex_parameter
3763                && !other.amd_shader_explicit_vertex_parameter,
3764            amd_shader_fragment_mask: self.amd_shader_fragment_mask
3765                && !other.amd_shader_fragment_mask,
3766            amd_shader_image_load_store_lod: self.amd_shader_image_load_store_lod
3767                && !other.amd_shader_image_load_store_lod,
3768            amd_shader_info: self.amd_shader_info && !other.amd_shader_info,
3769            amd_shader_trinary_minmax: self.amd_shader_trinary_minmax
3770                && !other.amd_shader_trinary_minmax,
3771            amd_texture_gather_bias_lod: self.amd_texture_gather_bias_lod
3772                && !other.amd_texture_gather_bias_lod,
3773            android_external_format_resolve: self.android_external_format_resolve
3774                && !other.android_external_format_resolve,
3775            android_external_memory_android_hardware_buffer: self
3776                .android_external_memory_android_hardware_buffer
3777                && !other.android_external_memory_android_hardware_buffer,
3778            arm_rasterization_order_attachment_access: self
3779                .arm_rasterization_order_attachment_access
3780                && !other.arm_rasterization_order_attachment_access,
3781            arm_render_pass_striped: self.arm_render_pass_striped && !other.arm_render_pass_striped,
3782            arm_scheduling_controls: self.arm_scheduling_controls && !other.arm_scheduling_controls,
3783            arm_shader_core_builtins: self.arm_shader_core_builtins
3784                && !other.arm_shader_core_builtins,
3785            arm_shader_core_properties: self.arm_shader_core_properties
3786                && !other.arm_shader_core_properties,
3787            fuchsia_buffer_collection: self.fuchsia_buffer_collection
3788                && !other.fuchsia_buffer_collection,
3789            fuchsia_external_memory: self.fuchsia_external_memory && !other.fuchsia_external_memory,
3790            fuchsia_external_semaphore: self.fuchsia_external_semaphore
3791                && !other.fuchsia_external_semaphore,
3792            ggp_frame_token: self.ggp_frame_token && !other.ggp_frame_token,
3793            google_decorate_string: self.google_decorate_string && !other.google_decorate_string,
3794            google_display_timing: self.google_display_timing && !other.google_display_timing,
3795            google_hlsl_functionality1: self.google_hlsl_functionality1
3796                && !other.google_hlsl_functionality1,
3797            google_user_type: self.google_user_type && !other.google_user_type,
3798            huawei_cluster_culling_shader: self.huawei_cluster_culling_shader
3799                && !other.huawei_cluster_culling_shader,
3800            huawei_invocation_mask: self.huawei_invocation_mask && !other.huawei_invocation_mask,
3801            huawei_subpass_shading: self.huawei_subpass_shading && !other.huawei_subpass_shading,
3802            img_filter_cubic: self.img_filter_cubic && !other.img_filter_cubic,
3803            img_format_pvrtc: self.img_format_pvrtc && !other.img_format_pvrtc,
3804            img_relaxed_line_rasterization: self.img_relaxed_line_rasterization
3805                && !other.img_relaxed_line_rasterization,
3806            intel_performance_query: self.intel_performance_query && !other.intel_performance_query,
3807            intel_shader_integer_functions2: self.intel_shader_integer_functions2
3808                && !other.intel_shader_integer_functions2,
3809            msft_layered_driver: self.msft_layered_driver && !other.msft_layered_driver,
3810            nvx_binary_import: self.nvx_binary_import && !other.nvx_binary_import,
3811            nvx_image_view_handle: self.nvx_image_view_handle && !other.nvx_image_view_handle,
3812            nvx_multiview_per_view_attributes: self.nvx_multiview_per_view_attributes
3813                && !other.nvx_multiview_per_view_attributes,
3814            nv_acquire_winrt_display: self.nv_acquire_winrt_display
3815                && !other.nv_acquire_winrt_display,
3816            nv_clip_space_w_scaling: self.nv_clip_space_w_scaling && !other.nv_clip_space_w_scaling,
3817            nv_compute_shader_derivatives: self.nv_compute_shader_derivatives
3818                && !other.nv_compute_shader_derivatives,
3819            nv_cooperative_matrix: self.nv_cooperative_matrix && !other.nv_cooperative_matrix,
3820            nv_copy_memory_indirect: self.nv_copy_memory_indirect && !other.nv_copy_memory_indirect,
3821            nv_corner_sampled_image: self.nv_corner_sampled_image && !other.nv_corner_sampled_image,
3822            nv_coverage_reduction_mode: self.nv_coverage_reduction_mode
3823                && !other.nv_coverage_reduction_mode,
3824            nv_cuda_kernel_launch: self.nv_cuda_kernel_launch && !other.nv_cuda_kernel_launch,
3825            nv_dedicated_allocation: self.nv_dedicated_allocation && !other.nv_dedicated_allocation,
3826            nv_dedicated_allocation_image_aliasing: self.nv_dedicated_allocation_image_aliasing
3827                && !other.nv_dedicated_allocation_image_aliasing,
3828            nv_descriptor_pool_overallocation: self.nv_descriptor_pool_overallocation
3829                && !other.nv_descriptor_pool_overallocation,
3830            nv_device_diagnostic_checkpoints: self.nv_device_diagnostic_checkpoints
3831                && !other.nv_device_diagnostic_checkpoints,
3832            nv_device_diagnostics_config: self.nv_device_diagnostics_config
3833                && !other.nv_device_diagnostics_config,
3834            nv_device_generated_commands: self.nv_device_generated_commands
3835                && !other.nv_device_generated_commands,
3836            nv_device_generated_commands_compute: self.nv_device_generated_commands_compute
3837                && !other.nv_device_generated_commands_compute,
3838            nv_displacement_micromap: self.nv_displacement_micromap
3839                && !other.nv_displacement_micromap,
3840            nv_extended_sparse_address_space: self.nv_extended_sparse_address_space
3841                && !other.nv_extended_sparse_address_space,
3842            nv_external_memory: self.nv_external_memory && !other.nv_external_memory,
3843            nv_external_memory_rdma: self.nv_external_memory_rdma && !other.nv_external_memory_rdma,
3844            nv_external_memory_win32: self.nv_external_memory_win32
3845                && !other.nv_external_memory_win32,
3846            nv_fill_rectangle: self.nv_fill_rectangle && !other.nv_fill_rectangle,
3847            nv_fragment_coverage_to_color: self.nv_fragment_coverage_to_color
3848                && !other.nv_fragment_coverage_to_color,
3849            nv_fragment_shader_barycentric: self.nv_fragment_shader_barycentric
3850                && !other.nv_fragment_shader_barycentric,
3851            nv_fragment_shading_rate_enums: self.nv_fragment_shading_rate_enums
3852                && !other.nv_fragment_shading_rate_enums,
3853            nv_framebuffer_mixed_samples: self.nv_framebuffer_mixed_samples
3854                && !other.nv_framebuffer_mixed_samples,
3855            nv_geometry_shader_passthrough: self.nv_geometry_shader_passthrough
3856                && !other.nv_geometry_shader_passthrough,
3857            nv_glsl_shader: self.nv_glsl_shader && !other.nv_glsl_shader,
3858            nv_inherited_viewport_scissor: self.nv_inherited_viewport_scissor
3859                && !other.nv_inherited_viewport_scissor,
3860            nv_linear_color_attachment: self.nv_linear_color_attachment
3861                && !other.nv_linear_color_attachment,
3862            nv_low_latency: self.nv_low_latency && !other.nv_low_latency,
3863            nv_low_latency2: self.nv_low_latency2 && !other.nv_low_latency2,
3864            nv_memory_decompression: self.nv_memory_decompression && !other.nv_memory_decompression,
3865            nv_mesh_shader: self.nv_mesh_shader && !other.nv_mesh_shader,
3866            nv_optical_flow: self.nv_optical_flow && !other.nv_optical_flow,
3867            nv_per_stage_descriptor_set: self.nv_per_stage_descriptor_set
3868                && !other.nv_per_stage_descriptor_set,
3869            nv_present_barrier: self.nv_present_barrier && !other.nv_present_barrier,
3870            nv_raw_access_chains: self.nv_raw_access_chains && !other.nv_raw_access_chains,
3871            nv_ray_tracing: self.nv_ray_tracing && !other.nv_ray_tracing,
3872            nv_ray_tracing_invocation_reorder: self.nv_ray_tracing_invocation_reorder
3873                && !other.nv_ray_tracing_invocation_reorder,
3874            nv_ray_tracing_motion_blur: self.nv_ray_tracing_motion_blur
3875                && !other.nv_ray_tracing_motion_blur,
3876            nv_ray_tracing_validation: self.nv_ray_tracing_validation
3877                && !other.nv_ray_tracing_validation,
3878            nv_representative_fragment_test: self.nv_representative_fragment_test
3879                && !other.nv_representative_fragment_test,
3880            nv_sample_mask_override_coverage: self.nv_sample_mask_override_coverage
3881                && !other.nv_sample_mask_override_coverage,
3882            nv_scissor_exclusive: self.nv_scissor_exclusive && !other.nv_scissor_exclusive,
3883            nv_shader_atomic_float16_vector: self.nv_shader_atomic_float16_vector
3884                && !other.nv_shader_atomic_float16_vector,
3885            nv_shader_image_footprint: self.nv_shader_image_footprint
3886                && !other.nv_shader_image_footprint,
3887            nv_shader_sm_builtins: self.nv_shader_sm_builtins && !other.nv_shader_sm_builtins,
3888            nv_shader_subgroup_partitioned: self.nv_shader_subgroup_partitioned
3889                && !other.nv_shader_subgroup_partitioned,
3890            nv_shading_rate_image: self.nv_shading_rate_image && !other.nv_shading_rate_image,
3891            nv_viewport_array2: self.nv_viewport_array2 && !other.nv_viewport_array2,
3892            nv_viewport_swizzle: self.nv_viewport_swizzle && !other.nv_viewport_swizzle,
3893            nv_win32_keyed_mutex: self.nv_win32_keyed_mutex && !other.nv_win32_keyed_mutex,
3894            qcom_filter_cubic_clamp: self.qcom_filter_cubic_clamp && !other.qcom_filter_cubic_clamp,
3895            qcom_filter_cubic_weights: self.qcom_filter_cubic_weights
3896                && !other.qcom_filter_cubic_weights,
3897            qcom_fragment_density_map_offset: self.qcom_fragment_density_map_offset
3898                && !other.qcom_fragment_density_map_offset,
3899            qcom_image_processing: self.qcom_image_processing && !other.qcom_image_processing,
3900            qcom_image_processing2: self.qcom_image_processing2 && !other.qcom_image_processing2,
3901            qcom_multiview_per_view_render_areas: self.qcom_multiview_per_view_render_areas
3902                && !other.qcom_multiview_per_view_render_areas,
3903            qcom_multiview_per_view_viewports: self.qcom_multiview_per_view_viewports
3904                && !other.qcom_multiview_per_view_viewports,
3905            qcom_render_pass_shader_resolve: self.qcom_render_pass_shader_resolve
3906                && !other.qcom_render_pass_shader_resolve,
3907            qcom_render_pass_store_ops: self.qcom_render_pass_store_ops
3908                && !other.qcom_render_pass_store_ops,
3909            qcom_render_pass_transform: self.qcom_render_pass_transform
3910                && !other.qcom_render_pass_transform,
3911            qcom_rotated_copy_commands: self.qcom_rotated_copy_commands
3912                && !other.qcom_rotated_copy_commands,
3913            qcom_tile_properties: self.qcom_tile_properties && !other.qcom_tile_properties,
3914            qcom_ycbcr_degamma: self.qcom_ycbcr_degamma && !other.qcom_ycbcr_degamma,
3915            qnx_external_memory_screen_buffer: self.qnx_external_memory_screen_buffer
3916                && !other.qnx_external_memory_screen_buffer,
3917            sec_amigo_profiling: self.sec_amigo_profiling && !other.sec_amigo_profiling,
3918            valve_descriptor_set_host_mapping: self.valve_descriptor_set_host_mapping
3919                && !other.valve_descriptor_set_host_mapping,
3920            valve_mutable_descriptor_type: self.valve_mutable_descriptor_type
3921                && !other.valve_mutable_descriptor_type,
3922            _ne: crate::NonExhaustive(()),
3923        }
3924    }
3925    #[doc = r" Returns the members set in `self` or `other`, but not both."]
3926    #[inline]
3927    pub const fn symmetric_difference(&self, other: &Self) -> Self {
3928        Self {
3929            khr_16bit_storage: self.khr_16bit_storage ^ other.khr_16bit_storage,
3930            khr_8bit_storage: self.khr_8bit_storage ^ other.khr_8bit_storage,
3931            khr_acceleration_structure: self.khr_acceleration_structure
3932                ^ other.khr_acceleration_structure,
3933            khr_bind_memory2: self.khr_bind_memory2 ^ other.khr_bind_memory2,
3934            khr_buffer_device_address: self.khr_buffer_device_address
3935                ^ other.khr_buffer_device_address,
3936            khr_calibrated_timestamps: self.khr_calibrated_timestamps
3937                ^ other.khr_calibrated_timestamps,
3938            khr_cooperative_matrix: self.khr_cooperative_matrix ^ other.khr_cooperative_matrix,
3939            khr_copy_commands2: self.khr_copy_commands2 ^ other.khr_copy_commands2,
3940            khr_create_renderpass2: self.khr_create_renderpass2 ^ other.khr_create_renderpass2,
3941            khr_dedicated_allocation: self.khr_dedicated_allocation
3942                ^ other.khr_dedicated_allocation,
3943            khr_deferred_host_operations: self.khr_deferred_host_operations
3944                ^ other.khr_deferred_host_operations,
3945            khr_depth_stencil_resolve: self.khr_depth_stencil_resolve
3946                ^ other.khr_depth_stencil_resolve,
3947            khr_descriptor_update_template: self.khr_descriptor_update_template
3948                ^ other.khr_descriptor_update_template,
3949            khr_device_group: self.khr_device_group ^ other.khr_device_group,
3950            khr_display_swapchain: self.khr_display_swapchain ^ other.khr_display_swapchain,
3951            khr_draw_indirect_count: self.khr_draw_indirect_count ^ other.khr_draw_indirect_count,
3952            khr_driver_properties: self.khr_driver_properties ^ other.khr_driver_properties,
3953            khr_dynamic_rendering: self.khr_dynamic_rendering ^ other.khr_dynamic_rendering,
3954            khr_dynamic_rendering_local_read: self.khr_dynamic_rendering_local_read
3955                ^ other.khr_dynamic_rendering_local_read,
3956            khr_external_fence: self.khr_external_fence ^ other.khr_external_fence,
3957            khr_external_fence_fd: self.khr_external_fence_fd ^ other.khr_external_fence_fd,
3958            khr_external_fence_win32: self.khr_external_fence_win32
3959                ^ other.khr_external_fence_win32,
3960            khr_external_memory: self.khr_external_memory ^ other.khr_external_memory,
3961            khr_external_memory_fd: self.khr_external_memory_fd ^ other.khr_external_memory_fd,
3962            khr_external_memory_win32: self.khr_external_memory_win32
3963                ^ other.khr_external_memory_win32,
3964            khr_external_semaphore: self.khr_external_semaphore ^ other.khr_external_semaphore,
3965            khr_external_semaphore_fd: self.khr_external_semaphore_fd
3966                ^ other.khr_external_semaphore_fd,
3967            khr_external_semaphore_win32: self.khr_external_semaphore_win32
3968                ^ other.khr_external_semaphore_win32,
3969            khr_format_feature_flags2: self.khr_format_feature_flags2
3970                ^ other.khr_format_feature_flags2,
3971            khr_fragment_shader_barycentric: self.khr_fragment_shader_barycentric
3972                ^ other.khr_fragment_shader_barycentric,
3973            khr_fragment_shading_rate: self.khr_fragment_shading_rate
3974                ^ other.khr_fragment_shading_rate,
3975            khr_get_memory_requirements2: self.khr_get_memory_requirements2
3976                ^ other.khr_get_memory_requirements2,
3977            khr_global_priority: self.khr_global_priority ^ other.khr_global_priority,
3978            khr_image_format_list: self.khr_image_format_list ^ other.khr_image_format_list,
3979            khr_imageless_framebuffer: self.khr_imageless_framebuffer
3980                ^ other.khr_imageless_framebuffer,
3981            khr_incremental_present: self.khr_incremental_present ^ other.khr_incremental_present,
3982            khr_index_type_uint8: self.khr_index_type_uint8 ^ other.khr_index_type_uint8,
3983            khr_line_rasterization: self.khr_line_rasterization ^ other.khr_line_rasterization,
3984            khr_load_store_op_none: self.khr_load_store_op_none ^ other.khr_load_store_op_none,
3985            khr_maintenance1: self.khr_maintenance1 ^ other.khr_maintenance1,
3986            khr_maintenance2: self.khr_maintenance2 ^ other.khr_maintenance2,
3987            khr_maintenance3: self.khr_maintenance3 ^ other.khr_maintenance3,
3988            khr_maintenance4: self.khr_maintenance4 ^ other.khr_maintenance4,
3989            khr_maintenance5: self.khr_maintenance5 ^ other.khr_maintenance5,
3990            khr_maintenance6: self.khr_maintenance6 ^ other.khr_maintenance6,
3991            khr_map_memory2: self.khr_map_memory2 ^ other.khr_map_memory2,
3992            khr_multiview: self.khr_multiview ^ other.khr_multiview,
3993            khr_performance_query: self.khr_performance_query ^ other.khr_performance_query,
3994            khr_pipeline_executable_properties: self.khr_pipeline_executable_properties
3995                ^ other.khr_pipeline_executable_properties,
3996            khr_pipeline_library: self.khr_pipeline_library ^ other.khr_pipeline_library,
3997            khr_portability_subset: self.khr_portability_subset ^ other.khr_portability_subset,
3998            khr_present_id: self.khr_present_id ^ other.khr_present_id,
3999            khr_present_wait: self.khr_present_wait ^ other.khr_present_wait,
4000            khr_push_descriptor: self.khr_push_descriptor ^ other.khr_push_descriptor,
4001            khr_ray_query: self.khr_ray_query ^ other.khr_ray_query,
4002            khr_ray_tracing_maintenance1: self.khr_ray_tracing_maintenance1
4003                ^ other.khr_ray_tracing_maintenance1,
4004            khr_ray_tracing_pipeline: self.khr_ray_tracing_pipeline
4005                ^ other.khr_ray_tracing_pipeline,
4006            khr_ray_tracing_position_fetch: self.khr_ray_tracing_position_fetch
4007                ^ other.khr_ray_tracing_position_fetch,
4008            khr_relaxed_block_layout: self.khr_relaxed_block_layout
4009                ^ other.khr_relaxed_block_layout,
4010            khr_sampler_mirror_clamp_to_edge: self.khr_sampler_mirror_clamp_to_edge
4011                ^ other.khr_sampler_mirror_clamp_to_edge,
4012            khr_sampler_ycbcr_conversion: self.khr_sampler_ycbcr_conversion
4013                ^ other.khr_sampler_ycbcr_conversion,
4014            khr_separate_depth_stencil_layouts: self.khr_separate_depth_stencil_layouts
4015                ^ other.khr_separate_depth_stencil_layouts,
4016            khr_shader_atomic_int64: self.khr_shader_atomic_int64 ^ other.khr_shader_atomic_int64,
4017            khr_shader_clock: self.khr_shader_clock ^ other.khr_shader_clock,
4018            khr_shader_draw_parameters: self.khr_shader_draw_parameters
4019                ^ other.khr_shader_draw_parameters,
4020            khr_shader_expect_assume: self.khr_shader_expect_assume
4021                ^ other.khr_shader_expect_assume,
4022            khr_shader_float16_int8: self.khr_shader_float16_int8 ^ other.khr_shader_float16_int8,
4023            khr_shader_float_controls: self.khr_shader_float_controls
4024                ^ other.khr_shader_float_controls,
4025            khr_shader_float_controls2: self.khr_shader_float_controls2
4026                ^ other.khr_shader_float_controls2,
4027            khr_shader_integer_dot_product: self.khr_shader_integer_dot_product
4028                ^ other.khr_shader_integer_dot_product,
4029            khr_shader_maximal_reconvergence: self.khr_shader_maximal_reconvergence
4030                ^ other.khr_shader_maximal_reconvergence,
4031            khr_shader_non_semantic_info: self.khr_shader_non_semantic_info
4032                ^ other.khr_shader_non_semantic_info,
4033            khr_shader_quad_control: self.khr_shader_quad_control ^ other.khr_shader_quad_control,
4034            khr_shader_subgroup_extended_types: self.khr_shader_subgroup_extended_types
4035                ^ other.khr_shader_subgroup_extended_types,
4036            khr_shader_subgroup_rotate: self.khr_shader_subgroup_rotate
4037                ^ other.khr_shader_subgroup_rotate,
4038            khr_shader_subgroup_uniform_control_flow: self.khr_shader_subgroup_uniform_control_flow
4039                ^ other.khr_shader_subgroup_uniform_control_flow,
4040            khr_shader_terminate_invocation: self.khr_shader_terminate_invocation
4041                ^ other.khr_shader_terminate_invocation,
4042            khr_shared_presentable_image: self.khr_shared_presentable_image
4043                ^ other.khr_shared_presentable_image,
4044            khr_spirv_1_4: self.khr_spirv_1_4 ^ other.khr_spirv_1_4,
4045            khr_storage_buffer_storage_class: self.khr_storage_buffer_storage_class
4046                ^ other.khr_storage_buffer_storage_class,
4047            khr_swapchain: self.khr_swapchain ^ other.khr_swapchain,
4048            khr_swapchain_mutable_format: self.khr_swapchain_mutable_format
4049                ^ other.khr_swapchain_mutable_format,
4050            khr_synchronization2: self.khr_synchronization2 ^ other.khr_synchronization2,
4051            khr_timeline_semaphore: self.khr_timeline_semaphore ^ other.khr_timeline_semaphore,
4052            khr_uniform_buffer_standard_layout: self.khr_uniform_buffer_standard_layout
4053                ^ other.khr_uniform_buffer_standard_layout,
4054            khr_variable_pointers: self.khr_variable_pointers ^ other.khr_variable_pointers,
4055            khr_vertex_attribute_divisor: self.khr_vertex_attribute_divisor
4056                ^ other.khr_vertex_attribute_divisor,
4057            khr_video_decode_av1: self.khr_video_decode_av1 ^ other.khr_video_decode_av1,
4058            khr_video_decode_h264: self.khr_video_decode_h264 ^ other.khr_video_decode_h264,
4059            khr_video_decode_h265: self.khr_video_decode_h265 ^ other.khr_video_decode_h265,
4060            khr_video_decode_queue: self.khr_video_decode_queue ^ other.khr_video_decode_queue,
4061            khr_video_encode_h264: self.khr_video_encode_h264 ^ other.khr_video_encode_h264,
4062            khr_video_encode_h265: self.khr_video_encode_h265 ^ other.khr_video_encode_h265,
4063            khr_video_encode_queue: self.khr_video_encode_queue ^ other.khr_video_encode_queue,
4064            khr_video_maintenance1: self.khr_video_maintenance1 ^ other.khr_video_maintenance1,
4065            khr_video_queue: self.khr_video_queue ^ other.khr_video_queue,
4066            khr_vulkan_memory_model: self.khr_vulkan_memory_model ^ other.khr_vulkan_memory_model,
4067            khr_win32_keyed_mutex: self.khr_win32_keyed_mutex ^ other.khr_win32_keyed_mutex,
4068            khr_workgroup_memory_explicit_layout: self.khr_workgroup_memory_explicit_layout
4069                ^ other.khr_workgroup_memory_explicit_layout,
4070            khr_zero_initialize_workgroup_memory: self.khr_zero_initialize_workgroup_memory
4071                ^ other.khr_zero_initialize_workgroup_memory,
4072            ext_4444_formats: self.ext_4444_formats ^ other.ext_4444_formats,
4073            ext_astc_decode_mode: self.ext_astc_decode_mode ^ other.ext_astc_decode_mode,
4074            ext_attachment_feedback_loop_dynamic_state: self
4075                .ext_attachment_feedback_loop_dynamic_state
4076                ^ other.ext_attachment_feedback_loop_dynamic_state,
4077            ext_attachment_feedback_loop_layout: self.ext_attachment_feedback_loop_layout
4078                ^ other.ext_attachment_feedback_loop_layout,
4079            ext_blend_operation_advanced: self.ext_blend_operation_advanced
4080                ^ other.ext_blend_operation_advanced,
4081            ext_border_color_swizzle: self.ext_border_color_swizzle
4082                ^ other.ext_border_color_swizzle,
4083            ext_buffer_device_address: self.ext_buffer_device_address
4084                ^ other.ext_buffer_device_address,
4085            ext_calibrated_timestamps: self.ext_calibrated_timestamps
4086                ^ other.ext_calibrated_timestamps,
4087            ext_color_write_enable: self.ext_color_write_enable ^ other.ext_color_write_enable,
4088            ext_conditional_rendering: self.ext_conditional_rendering
4089                ^ other.ext_conditional_rendering,
4090            ext_conservative_rasterization: self.ext_conservative_rasterization
4091                ^ other.ext_conservative_rasterization,
4092            ext_custom_border_color: self.ext_custom_border_color ^ other.ext_custom_border_color,
4093            ext_debug_marker: self.ext_debug_marker ^ other.ext_debug_marker,
4094            ext_depth_bias_control: self.ext_depth_bias_control ^ other.ext_depth_bias_control,
4095            ext_depth_clamp_zero_one: self.ext_depth_clamp_zero_one
4096                ^ other.ext_depth_clamp_zero_one,
4097            ext_depth_clip_control: self.ext_depth_clip_control ^ other.ext_depth_clip_control,
4098            ext_depth_clip_enable: self.ext_depth_clip_enable ^ other.ext_depth_clip_enable,
4099            ext_depth_range_unrestricted: self.ext_depth_range_unrestricted
4100                ^ other.ext_depth_range_unrestricted,
4101            ext_descriptor_buffer: self.ext_descriptor_buffer ^ other.ext_descriptor_buffer,
4102            ext_descriptor_indexing: self.ext_descriptor_indexing ^ other.ext_descriptor_indexing,
4103            ext_device_address_binding_report: self.ext_device_address_binding_report
4104                ^ other.ext_device_address_binding_report,
4105            ext_device_fault: self.ext_device_fault ^ other.ext_device_fault,
4106            ext_device_memory_report: self.ext_device_memory_report
4107                ^ other.ext_device_memory_report,
4108            ext_discard_rectangles: self.ext_discard_rectangles ^ other.ext_discard_rectangles,
4109            ext_display_control: self.ext_display_control ^ other.ext_display_control,
4110            ext_dynamic_rendering_unused_attachments: self.ext_dynamic_rendering_unused_attachments
4111                ^ other.ext_dynamic_rendering_unused_attachments,
4112            ext_extended_dynamic_state: self.ext_extended_dynamic_state
4113                ^ other.ext_extended_dynamic_state,
4114            ext_extended_dynamic_state2: self.ext_extended_dynamic_state2
4115                ^ other.ext_extended_dynamic_state2,
4116            ext_extended_dynamic_state3: self.ext_extended_dynamic_state3
4117                ^ other.ext_extended_dynamic_state3,
4118            ext_external_memory_acquire_unmodified: self.ext_external_memory_acquire_unmodified
4119                ^ other.ext_external_memory_acquire_unmodified,
4120            ext_external_memory_dma_buf: self.ext_external_memory_dma_buf
4121                ^ other.ext_external_memory_dma_buf,
4122            ext_external_memory_host: self.ext_external_memory_host
4123                ^ other.ext_external_memory_host,
4124            ext_filter_cubic: self.ext_filter_cubic ^ other.ext_filter_cubic,
4125            ext_fragment_density_map: self.ext_fragment_density_map
4126                ^ other.ext_fragment_density_map,
4127            ext_fragment_density_map2: self.ext_fragment_density_map2
4128                ^ other.ext_fragment_density_map2,
4129            ext_fragment_shader_interlock: self.ext_fragment_shader_interlock
4130                ^ other.ext_fragment_shader_interlock,
4131            ext_frame_boundary: self.ext_frame_boundary ^ other.ext_frame_boundary,
4132            ext_full_screen_exclusive: self.ext_full_screen_exclusive
4133                ^ other.ext_full_screen_exclusive,
4134            ext_global_priority: self.ext_global_priority ^ other.ext_global_priority,
4135            ext_global_priority_query: self.ext_global_priority_query
4136                ^ other.ext_global_priority_query,
4137            ext_graphics_pipeline_library: self.ext_graphics_pipeline_library
4138                ^ other.ext_graphics_pipeline_library,
4139            ext_hdr_metadata: self.ext_hdr_metadata ^ other.ext_hdr_metadata,
4140            ext_host_image_copy: self.ext_host_image_copy ^ other.ext_host_image_copy,
4141            ext_host_query_reset: self.ext_host_query_reset ^ other.ext_host_query_reset,
4142            ext_image_2d_view_of_3d: self.ext_image_2d_view_of_3d ^ other.ext_image_2d_view_of_3d,
4143            ext_image_compression_control: self.ext_image_compression_control
4144                ^ other.ext_image_compression_control,
4145            ext_image_compression_control_swapchain: self.ext_image_compression_control_swapchain
4146                ^ other.ext_image_compression_control_swapchain,
4147            ext_image_drm_format_modifier: self.ext_image_drm_format_modifier
4148                ^ other.ext_image_drm_format_modifier,
4149            ext_image_robustness: self.ext_image_robustness ^ other.ext_image_robustness,
4150            ext_image_sliced_view_of_3d: self.ext_image_sliced_view_of_3d
4151                ^ other.ext_image_sliced_view_of_3d,
4152            ext_image_view_min_lod: self.ext_image_view_min_lod ^ other.ext_image_view_min_lod,
4153            ext_index_type_uint8: self.ext_index_type_uint8 ^ other.ext_index_type_uint8,
4154            ext_inline_uniform_block: self.ext_inline_uniform_block
4155                ^ other.ext_inline_uniform_block,
4156            ext_legacy_dithering: self.ext_legacy_dithering ^ other.ext_legacy_dithering,
4157            ext_line_rasterization: self.ext_line_rasterization ^ other.ext_line_rasterization,
4158            ext_load_store_op_none: self.ext_load_store_op_none ^ other.ext_load_store_op_none,
4159            ext_map_memory_placed: self.ext_map_memory_placed ^ other.ext_map_memory_placed,
4160            ext_memory_budget: self.ext_memory_budget ^ other.ext_memory_budget,
4161            ext_memory_priority: self.ext_memory_priority ^ other.ext_memory_priority,
4162            ext_mesh_shader: self.ext_mesh_shader ^ other.ext_mesh_shader,
4163            ext_metal_objects: self.ext_metal_objects ^ other.ext_metal_objects,
4164            ext_multi_draw: self.ext_multi_draw ^ other.ext_multi_draw,
4165            ext_multisampled_render_to_single_sampled: self
4166                .ext_multisampled_render_to_single_sampled
4167                ^ other.ext_multisampled_render_to_single_sampled,
4168            ext_mutable_descriptor_type: self.ext_mutable_descriptor_type
4169                ^ other.ext_mutable_descriptor_type,
4170            ext_nested_command_buffer: self.ext_nested_command_buffer
4171                ^ other.ext_nested_command_buffer,
4172            ext_non_seamless_cube_map: self.ext_non_seamless_cube_map
4173                ^ other.ext_non_seamless_cube_map,
4174            ext_opacity_micromap: self.ext_opacity_micromap ^ other.ext_opacity_micromap,
4175            ext_pageable_device_local_memory: self.ext_pageable_device_local_memory
4176                ^ other.ext_pageable_device_local_memory,
4177            ext_pci_bus_info: self.ext_pci_bus_info ^ other.ext_pci_bus_info,
4178            ext_physical_device_drm: self.ext_physical_device_drm ^ other.ext_physical_device_drm,
4179            ext_pipeline_creation_cache_control: self.ext_pipeline_creation_cache_control
4180                ^ other.ext_pipeline_creation_cache_control,
4181            ext_pipeline_creation_feedback: self.ext_pipeline_creation_feedback
4182                ^ other.ext_pipeline_creation_feedback,
4183            ext_pipeline_library_group_handles: self.ext_pipeline_library_group_handles
4184                ^ other.ext_pipeline_library_group_handles,
4185            ext_pipeline_properties: self.ext_pipeline_properties ^ other.ext_pipeline_properties,
4186            ext_pipeline_protected_access: self.ext_pipeline_protected_access
4187                ^ other.ext_pipeline_protected_access,
4188            ext_pipeline_robustness: self.ext_pipeline_robustness ^ other.ext_pipeline_robustness,
4189            ext_post_depth_coverage: self.ext_post_depth_coverage ^ other.ext_post_depth_coverage,
4190            ext_primitive_topology_list_restart: self.ext_primitive_topology_list_restart
4191                ^ other.ext_primitive_topology_list_restart,
4192            ext_primitives_generated_query: self.ext_primitives_generated_query
4193                ^ other.ext_primitives_generated_query,
4194            ext_private_data: self.ext_private_data ^ other.ext_private_data,
4195            ext_provoking_vertex: self.ext_provoking_vertex ^ other.ext_provoking_vertex,
4196            ext_queue_family_foreign: self.ext_queue_family_foreign
4197                ^ other.ext_queue_family_foreign,
4198            ext_rasterization_order_attachment_access: self
4199                .ext_rasterization_order_attachment_access
4200                ^ other.ext_rasterization_order_attachment_access,
4201            ext_rgba10x6_formats: self.ext_rgba10x6_formats ^ other.ext_rgba10x6_formats,
4202            ext_robustness2: self.ext_robustness2 ^ other.ext_robustness2,
4203            ext_sample_locations: self.ext_sample_locations ^ other.ext_sample_locations,
4204            ext_sampler_filter_minmax: self.ext_sampler_filter_minmax
4205                ^ other.ext_sampler_filter_minmax,
4206            ext_scalar_block_layout: self.ext_scalar_block_layout ^ other.ext_scalar_block_layout,
4207            ext_separate_stencil_usage: self.ext_separate_stencil_usage
4208                ^ other.ext_separate_stencil_usage,
4209            ext_shader_atomic_float: self.ext_shader_atomic_float ^ other.ext_shader_atomic_float,
4210            ext_shader_atomic_float2: self.ext_shader_atomic_float2
4211                ^ other.ext_shader_atomic_float2,
4212            ext_shader_demote_to_helper_invocation: self.ext_shader_demote_to_helper_invocation
4213                ^ other.ext_shader_demote_to_helper_invocation,
4214            ext_shader_image_atomic_int64: self.ext_shader_image_atomic_int64
4215                ^ other.ext_shader_image_atomic_int64,
4216            ext_shader_module_identifier: self.ext_shader_module_identifier
4217                ^ other.ext_shader_module_identifier,
4218            ext_shader_object: self.ext_shader_object ^ other.ext_shader_object,
4219            ext_shader_stencil_export: self.ext_shader_stencil_export
4220                ^ other.ext_shader_stencil_export,
4221            ext_shader_subgroup_ballot: self.ext_shader_subgroup_ballot
4222                ^ other.ext_shader_subgroup_ballot,
4223            ext_shader_subgroup_vote: self.ext_shader_subgroup_vote
4224                ^ other.ext_shader_subgroup_vote,
4225            ext_shader_tile_image: self.ext_shader_tile_image ^ other.ext_shader_tile_image,
4226            ext_shader_viewport_index_layer: self.ext_shader_viewport_index_layer
4227                ^ other.ext_shader_viewport_index_layer,
4228            ext_subgroup_size_control: self.ext_subgroup_size_control
4229                ^ other.ext_subgroup_size_control,
4230            ext_subpass_merge_feedback: self.ext_subpass_merge_feedback
4231                ^ other.ext_subpass_merge_feedback,
4232            ext_swapchain_maintenance1: self.ext_swapchain_maintenance1
4233                ^ other.ext_swapchain_maintenance1,
4234            ext_texel_buffer_alignment: self.ext_texel_buffer_alignment
4235                ^ other.ext_texel_buffer_alignment,
4236            ext_texture_compression_astc_hdr: self.ext_texture_compression_astc_hdr
4237                ^ other.ext_texture_compression_astc_hdr,
4238            ext_tooling_info: self.ext_tooling_info ^ other.ext_tooling_info,
4239            ext_transform_feedback: self.ext_transform_feedback ^ other.ext_transform_feedback,
4240            ext_validation_cache: self.ext_validation_cache ^ other.ext_validation_cache,
4241            ext_vertex_attribute_divisor: self.ext_vertex_attribute_divisor
4242                ^ other.ext_vertex_attribute_divisor,
4243            ext_vertex_input_dynamic_state: self.ext_vertex_input_dynamic_state
4244                ^ other.ext_vertex_input_dynamic_state,
4245            ext_ycbcr_2plane_444_formats: self.ext_ycbcr_2plane_444_formats
4246                ^ other.ext_ycbcr_2plane_444_formats,
4247            ext_ycbcr_image_arrays: self.ext_ycbcr_image_arrays ^ other.ext_ycbcr_image_arrays,
4248            amdx_shader_enqueue: self.amdx_shader_enqueue ^ other.amdx_shader_enqueue,
4249            amd_buffer_marker: self.amd_buffer_marker ^ other.amd_buffer_marker,
4250            amd_device_coherent_memory: self.amd_device_coherent_memory
4251                ^ other.amd_device_coherent_memory,
4252            amd_display_native_hdr: self.amd_display_native_hdr ^ other.amd_display_native_hdr,
4253            amd_draw_indirect_count: self.amd_draw_indirect_count ^ other.amd_draw_indirect_count,
4254            amd_gcn_shader: self.amd_gcn_shader ^ other.amd_gcn_shader,
4255            amd_gpu_shader_half_float: self.amd_gpu_shader_half_float
4256                ^ other.amd_gpu_shader_half_float,
4257            amd_gpu_shader_int16: self.amd_gpu_shader_int16 ^ other.amd_gpu_shader_int16,
4258            amd_memory_overallocation_behavior: self.amd_memory_overallocation_behavior
4259                ^ other.amd_memory_overallocation_behavior,
4260            amd_mixed_attachment_samples: self.amd_mixed_attachment_samples
4261                ^ other.amd_mixed_attachment_samples,
4262            amd_pipeline_compiler_control: self.amd_pipeline_compiler_control
4263                ^ other.amd_pipeline_compiler_control,
4264            amd_rasterization_order: self.amd_rasterization_order ^ other.amd_rasterization_order,
4265            amd_shader_ballot: self.amd_shader_ballot ^ other.amd_shader_ballot,
4266            amd_shader_core_properties: self.amd_shader_core_properties
4267                ^ other.amd_shader_core_properties,
4268            amd_shader_core_properties2: self.amd_shader_core_properties2
4269                ^ other.amd_shader_core_properties2,
4270            amd_shader_early_and_late_fragment_tests: self.amd_shader_early_and_late_fragment_tests
4271                ^ other.amd_shader_early_and_late_fragment_tests,
4272            amd_shader_explicit_vertex_parameter: self.amd_shader_explicit_vertex_parameter
4273                ^ other.amd_shader_explicit_vertex_parameter,
4274            amd_shader_fragment_mask: self.amd_shader_fragment_mask
4275                ^ other.amd_shader_fragment_mask,
4276            amd_shader_image_load_store_lod: self.amd_shader_image_load_store_lod
4277                ^ other.amd_shader_image_load_store_lod,
4278            amd_shader_info: self.amd_shader_info ^ other.amd_shader_info,
4279            amd_shader_trinary_minmax: self.amd_shader_trinary_minmax
4280                ^ other.amd_shader_trinary_minmax,
4281            amd_texture_gather_bias_lod: self.amd_texture_gather_bias_lod
4282                ^ other.amd_texture_gather_bias_lod,
4283            android_external_format_resolve: self.android_external_format_resolve
4284                ^ other.android_external_format_resolve,
4285            android_external_memory_android_hardware_buffer: self
4286                .android_external_memory_android_hardware_buffer
4287                ^ other.android_external_memory_android_hardware_buffer,
4288            arm_rasterization_order_attachment_access: self
4289                .arm_rasterization_order_attachment_access
4290                ^ other.arm_rasterization_order_attachment_access,
4291            arm_render_pass_striped: self.arm_render_pass_striped ^ other.arm_render_pass_striped,
4292            arm_scheduling_controls: self.arm_scheduling_controls ^ other.arm_scheduling_controls,
4293            arm_shader_core_builtins: self.arm_shader_core_builtins
4294                ^ other.arm_shader_core_builtins,
4295            arm_shader_core_properties: self.arm_shader_core_properties
4296                ^ other.arm_shader_core_properties,
4297            fuchsia_buffer_collection: self.fuchsia_buffer_collection
4298                ^ other.fuchsia_buffer_collection,
4299            fuchsia_external_memory: self.fuchsia_external_memory ^ other.fuchsia_external_memory,
4300            fuchsia_external_semaphore: self.fuchsia_external_semaphore
4301                ^ other.fuchsia_external_semaphore,
4302            ggp_frame_token: self.ggp_frame_token ^ other.ggp_frame_token,
4303            google_decorate_string: self.google_decorate_string ^ other.google_decorate_string,
4304            google_display_timing: self.google_display_timing ^ other.google_display_timing,
4305            google_hlsl_functionality1: self.google_hlsl_functionality1
4306                ^ other.google_hlsl_functionality1,
4307            google_user_type: self.google_user_type ^ other.google_user_type,
4308            huawei_cluster_culling_shader: self.huawei_cluster_culling_shader
4309                ^ other.huawei_cluster_culling_shader,
4310            huawei_invocation_mask: self.huawei_invocation_mask ^ other.huawei_invocation_mask,
4311            huawei_subpass_shading: self.huawei_subpass_shading ^ other.huawei_subpass_shading,
4312            img_filter_cubic: self.img_filter_cubic ^ other.img_filter_cubic,
4313            img_format_pvrtc: self.img_format_pvrtc ^ other.img_format_pvrtc,
4314            img_relaxed_line_rasterization: self.img_relaxed_line_rasterization
4315                ^ other.img_relaxed_line_rasterization,
4316            intel_performance_query: self.intel_performance_query ^ other.intel_performance_query,
4317            intel_shader_integer_functions2: self.intel_shader_integer_functions2
4318                ^ other.intel_shader_integer_functions2,
4319            msft_layered_driver: self.msft_layered_driver ^ other.msft_layered_driver,
4320            nvx_binary_import: self.nvx_binary_import ^ other.nvx_binary_import,
4321            nvx_image_view_handle: self.nvx_image_view_handle ^ other.nvx_image_view_handle,
4322            nvx_multiview_per_view_attributes: self.nvx_multiview_per_view_attributes
4323                ^ other.nvx_multiview_per_view_attributes,
4324            nv_acquire_winrt_display: self.nv_acquire_winrt_display
4325                ^ other.nv_acquire_winrt_display,
4326            nv_clip_space_w_scaling: self.nv_clip_space_w_scaling ^ other.nv_clip_space_w_scaling,
4327            nv_compute_shader_derivatives: self.nv_compute_shader_derivatives
4328                ^ other.nv_compute_shader_derivatives,
4329            nv_cooperative_matrix: self.nv_cooperative_matrix ^ other.nv_cooperative_matrix,
4330            nv_copy_memory_indirect: self.nv_copy_memory_indirect ^ other.nv_copy_memory_indirect,
4331            nv_corner_sampled_image: self.nv_corner_sampled_image ^ other.nv_corner_sampled_image,
4332            nv_coverage_reduction_mode: self.nv_coverage_reduction_mode
4333                ^ other.nv_coverage_reduction_mode,
4334            nv_cuda_kernel_launch: self.nv_cuda_kernel_launch ^ other.nv_cuda_kernel_launch,
4335            nv_dedicated_allocation: self.nv_dedicated_allocation ^ other.nv_dedicated_allocation,
4336            nv_dedicated_allocation_image_aliasing: self.nv_dedicated_allocation_image_aliasing
4337                ^ other.nv_dedicated_allocation_image_aliasing,
4338            nv_descriptor_pool_overallocation: self.nv_descriptor_pool_overallocation
4339                ^ other.nv_descriptor_pool_overallocation,
4340            nv_device_diagnostic_checkpoints: self.nv_device_diagnostic_checkpoints
4341                ^ other.nv_device_diagnostic_checkpoints,
4342            nv_device_diagnostics_config: self.nv_device_diagnostics_config
4343                ^ other.nv_device_diagnostics_config,
4344            nv_device_generated_commands: self.nv_device_generated_commands
4345                ^ other.nv_device_generated_commands,
4346            nv_device_generated_commands_compute: self.nv_device_generated_commands_compute
4347                ^ other.nv_device_generated_commands_compute,
4348            nv_displacement_micromap: self.nv_displacement_micromap
4349                ^ other.nv_displacement_micromap,
4350            nv_extended_sparse_address_space: self.nv_extended_sparse_address_space
4351                ^ other.nv_extended_sparse_address_space,
4352            nv_external_memory: self.nv_external_memory ^ other.nv_external_memory,
4353            nv_external_memory_rdma: self.nv_external_memory_rdma ^ other.nv_external_memory_rdma,
4354            nv_external_memory_win32: self.nv_external_memory_win32
4355                ^ other.nv_external_memory_win32,
4356            nv_fill_rectangle: self.nv_fill_rectangle ^ other.nv_fill_rectangle,
4357            nv_fragment_coverage_to_color: self.nv_fragment_coverage_to_color
4358                ^ other.nv_fragment_coverage_to_color,
4359            nv_fragment_shader_barycentric: self.nv_fragment_shader_barycentric
4360                ^ other.nv_fragment_shader_barycentric,
4361            nv_fragment_shading_rate_enums: self.nv_fragment_shading_rate_enums
4362                ^ other.nv_fragment_shading_rate_enums,
4363            nv_framebuffer_mixed_samples: self.nv_framebuffer_mixed_samples
4364                ^ other.nv_framebuffer_mixed_samples,
4365            nv_geometry_shader_passthrough: self.nv_geometry_shader_passthrough
4366                ^ other.nv_geometry_shader_passthrough,
4367            nv_glsl_shader: self.nv_glsl_shader ^ other.nv_glsl_shader,
4368            nv_inherited_viewport_scissor: self.nv_inherited_viewport_scissor
4369                ^ other.nv_inherited_viewport_scissor,
4370            nv_linear_color_attachment: self.nv_linear_color_attachment
4371                ^ other.nv_linear_color_attachment,
4372            nv_low_latency: self.nv_low_latency ^ other.nv_low_latency,
4373            nv_low_latency2: self.nv_low_latency2 ^ other.nv_low_latency2,
4374            nv_memory_decompression: self.nv_memory_decompression ^ other.nv_memory_decompression,
4375            nv_mesh_shader: self.nv_mesh_shader ^ other.nv_mesh_shader,
4376            nv_optical_flow: self.nv_optical_flow ^ other.nv_optical_flow,
4377            nv_per_stage_descriptor_set: self.nv_per_stage_descriptor_set
4378                ^ other.nv_per_stage_descriptor_set,
4379            nv_present_barrier: self.nv_present_barrier ^ other.nv_present_barrier,
4380            nv_raw_access_chains: self.nv_raw_access_chains ^ other.nv_raw_access_chains,
4381            nv_ray_tracing: self.nv_ray_tracing ^ other.nv_ray_tracing,
4382            nv_ray_tracing_invocation_reorder: self.nv_ray_tracing_invocation_reorder
4383                ^ other.nv_ray_tracing_invocation_reorder,
4384            nv_ray_tracing_motion_blur: self.nv_ray_tracing_motion_blur
4385                ^ other.nv_ray_tracing_motion_blur,
4386            nv_ray_tracing_validation: self.nv_ray_tracing_validation
4387                ^ other.nv_ray_tracing_validation,
4388            nv_representative_fragment_test: self.nv_representative_fragment_test
4389                ^ other.nv_representative_fragment_test,
4390            nv_sample_mask_override_coverage: self.nv_sample_mask_override_coverage
4391                ^ other.nv_sample_mask_override_coverage,
4392            nv_scissor_exclusive: self.nv_scissor_exclusive ^ other.nv_scissor_exclusive,
4393            nv_shader_atomic_float16_vector: self.nv_shader_atomic_float16_vector
4394                ^ other.nv_shader_atomic_float16_vector,
4395            nv_shader_image_footprint: self.nv_shader_image_footprint
4396                ^ other.nv_shader_image_footprint,
4397            nv_shader_sm_builtins: self.nv_shader_sm_builtins ^ other.nv_shader_sm_builtins,
4398            nv_shader_subgroup_partitioned: self.nv_shader_subgroup_partitioned
4399                ^ other.nv_shader_subgroup_partitioned,
4400            nv_shading_rate_image: self.nv_shading_rate_image ^ other.nv_shading_rate_image,
4401            nv_viewport_array2: self.nv_viewport_array2 ^ other.nv_viewport_array2,
4402            nv_viewport_swizzle: self.nv_viewport_swizzle ^ other.nv_viewport_swizzle,
4403            nv_win32_keyed_mutex: self.nv_win32_keyed_mutex ^ other.nv_win32_keyed_mutex,
4404            qcom_filter_cubic_clamp: self.qcom_filter_cubic_clamp ^ other.qcom_filter_cubic_clamp,
4405            qcom_filter_cubic_weights: self.qcom_filter_cubic_weights
4406                ^ other.qcom_filter_cubic_weights,
4407            qcom_fragment_density_map_offset: self.qcom_fragment_density_map_offset
4408                ^ other.qcom_fragment_density_map_offset,
4409            qcom_image_processing: self.qcom_image_processing ^ other.qcom_image_processing,
4410            qcom_image_processing2: self.qcom_image_processing2 ^ other.qcom_image_processing2,
4411            qcom_multiview_per_view_render_areas: self.qcom_multiview_per_view_render_areas
4412                ^ other.qcom_multiview_per_view_render_areas,
4413            qcom_multiview_per_view_viewports: self.qcom_multiview_per_view_viewports
4414                ^ other.qcom_multiview_per_view_viewports,
4415            qcom_render_pass_shader_resolve: self.qcom_render_pass_shader_resolve
4416                ^ other.qcom_render_pass_shader_resolve,
4417            qcom_render_pass_store_ops: self.qcom_render_pass_store_ops
4418                ^ other.qcom_render_pass_store_ops,
4419            qcom_render_pass_transform: self.qcom_render_pass_transform
4420                ^ other.qcom_render_pass_transform,
4421            qcom_rotated_copy_commands: self.qcom_rotated_copy_commands
4422                ^ other.qcom_rotated_copy_commands,
4423            qcom_tile_properties: self.qcom_tile_properties ^ other.qcom_tile_properties,
4424            qcom_ycbcr_degamma: self.qcom_ycbcr_degamma ^ other.qcom_ycbcr_degamma,
4425            qnx_external_memory_screen_buffer: self.qnx_external_memory_screen_buffer
4426                ^ other.qnx_external_memory_screen_buffer,
4427            sec_amigo_profiling: self.sec_amigo_profiling ^ other.sec_amigo_profiling,
4428            valve_descriptor_set_host_mapping: self.valve_descriptor_set_host_mapping
4429                ^ other.valve_descriptor_set_host_mapping,
4430            valve_mutable_descriptor_type: self.valve_mutable_descriptor_type
4431                ^ other.valve_mutable_descriptor_type,
4432            _ne: crate::NonExhaustive(()),
4433        }
4434    }
4435}
4436impl std::ops::BitAnd for DeviceExtensions {
4437    type Output = DeviceExtensions;
4438    #[inline]
4439    fn bitand(self, rhs: Self) -> Self::Output {
4440        self.intersection(&rhs)
4441    }
4442}
4443impl std::ops::BitAndAssign for DeviceExtensions {
4444    #[inline]
4445    fn bitand_assign(&mut self, rhs: Self) {
4446        *self = self.intersection(&rhs);
4447    }
4448}
4449impl std::ops::BitOr for DeviceExtensions {
4450    type Output = DeviceExtensions;
4451    #[inline]
4452    fn bitor(self, rhs: Self) -> Self::Output {
4453        self.union(&rhs)
4454    }
4455}
4456impl std::ops::BitOrAssign for DeviceExtensions {
4457    #[inline]
4458    fn bitor_assign(&mut self, rhs: Self) {
4459        *self = self.union(&rhs);
4460    }
4461}
4462impl std::ops::BitXor for DeviceExtensions {
4463    type Output = DeviceExtensions;
4464    #[inline]
4465    fn bitxor(self, rhs: Self) -> Self::Output {
4466        self.symmetric_difference(&rhs)
4467    }
4468}
4469impl std::ops::BitXorAssign for DeviceExtensions {
4470    #[inline]
4471    fn bitxor_assign(&mut self, rhs: Self) {
4472        *self = self.symmetric_difference(&rhs);
4473    }
4474}
4475impl std::ops::Sub for DeviceExtensions {
4476    type Output = DeviceExtensions;
4477    #[inline]
4478    fn sub(self, rhs: Self) -> Self::Output {
4479        self.difference(&rhs)
4480    }
4481}
4482impl std::ops::SubAssign for DeviceExtensions {
4483    #[inline]
4484    fn sub_assign(&mut self, rhs: Self) {
4485        *self = self.difference(&rhs);
4486    }
4487}
4488impl std::fmt::Debug for DeviceExtensions {
4489    #[allow(unused_assignments)]
4490    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
4491        write!(f, "[")?;
4492        let mut first = true;
4493        if self.khr_16bit_storage {
4494            if !first {
4495                write!(f, ", ")?
4496            } else {
4497                first = false;
4498            }
4499            f.write_str("VK_KHR_16bit_storage")?;
4500        }
4501        if self.khr_8bit_storage {
4502            if !first {
4503                write!(f, ", ")?
4504            } else {
4505                first = false;
4506            }
4507            f.write_str("VK_KHR_8bit_storage")?;
4508        }
4509        if self.khr_acceleration_structure {
4510            if !first {
4511                write!(f, ", ")?
4512            } else {
4513                first = false;
4514            }
4515            f.write_str("VK_KHR_acceleration_structure")?;
4516        }
4517        if self.khr_bind_memory2 {
4518            if !first {
4519                write!(f, ", ")?
4520            } else {
4521                first = false;
4522            }
4523            f.write_str("VK_KHR_bind_memory2")?;
4524        }
4525        if self.khr_buffer_device_address {
4526            if !first {
4527                write!(f, ", ")?
4528            } else {
4529                first = false;
4530            }
4531            f.write_str("VK_KHR_buffer_device_address")?;
4532        }
4533        if self.khr_calibrated_timestamps {
4534            if !first {
4535                write!(f, ", ")?
4536            } else {
4537                first = false;
4538            }
4539            f.write_str("VK_KHR_calibrated_timestamps")?;
4540        }
4541        if self.khr_cooperative_matrix {
4542            if !first {
4543                write!(f, ", ")?
4544            } else {
4545                first = false;
4546            }
4547            f.write_str("VK_KHR_cooperative_matrix")?;
4548        }
4549        if self.khr_copy_commands2 {
4550            if !first {
4551                write!(f, ", ")?
4552            } else {
4553                first = false;
4554            }
4555            f.write_str("VK_KHR_copy_commands2")?;
4556        }
4557        if self.khr_create_renderpass2 {
4558            if !first {
4559                write!(f, ", ")?
4560            } else {
4561                first = false;
4562            }
4563            f.write_str("VK_KHR_create_renderpass2")?;
4564        }
4565        if self.khr_dedicated_allocation {
4566            if !first {
4567                write!(f, ", ")?
4568            } else {
4569                first = false;
4570            }
4571            f.write_str("VK_KHR_dedicated_allocation")?;
4572        }
4573        if self.khr_deferred_host_operations {
4574            if !first {
4575                write!(f, ", ")?
4576            } else {
4577                first = false;
4578            }
4579            f.write_str("VK_KHR_deferred_host_operations")?;
4580        }
4581        if self.khr_depth_stencil_resolve {
4582            if !first {
4583                write!(f, ", ")?
4584            } else {
4585                first = false;
4586            }
4587            f.write_str("VK_KHR_depth_stencil_resolve")?;
4588        }
4589        if self.khr_descriptor_update_template {
4590            if !first {
4591                write!(f, ", ")?
4592            } else {
4593                first = false;
4594            }
4595            f.write_str("VK_KHR_descriptor_update_template")?;
4596        }
4597        if self.khr_device_group {
4598            if !first {
4599                write!(f, ", ")?
4600            } else {
4601                first = false;
4602            }
4603            f.write_str("VK_KHR_device_group")?;
4604        }
4605        if self.khr_display_swapchain {
4606            if !first {
4607                write!(f, ", ")?
4608            } else {
4609                first = false;
4610            }
4611            f.write_str("VK_KHR_display_swapchain")?;
4612        }
4613        if self.khr_draw_indirect_count {
4614            if !first {
4615                write!(f, ", ")?
4616            } else {
4617                first = false;
4618            }
4619            f.write_str("VK_KHR_draw_indirect_count")?;
4620        }
4621        if self.khr_driver_properties {
4622            if !first {
4623                write!(f, ", ")?
4624            } else {
4625                first = false;
4626            }
4627            f.write_str("VK_KHR_driver_properties")?;
4628        }
4629        if self.khr_dynamic_rendering {
4630            if !first {
4631                write!(f, ", ")?
4632            } else {
4633                first = false;
4634            }
4635            f.write_str("VK_KHR_dynamic_rendering")?;
4636        }
4637        if self.khr_dynamic_rendering_local_read {
4638            if !first {
4639                write!(f, ", ")?
4640            } else {
4641                first = false;
4642            }
4643            f.write_str("VK_KHR_dynamic_rendering_local_read")?;
4644        }
4645        if self.khr_external_fence {
4646            if !first {
4647                write!(f, ", ")?
4648            } else {
4649                first = false;
4650            }
4651            f.write_str("VK_KHR_external_fence")?;
4652        }
4653        if self.khr_external_fence_fd {
4654            if !first {
4655                write!(f, ", ")?
4656            } else {
4657                first = false;
4658            }
4659            f.write_str("VK_KHR_external_fence_fd")?;
4660        }
4661        if self.khr_external_fence_win32 {
4662            if !first {
4663                write!(f, ", ")?
4664            } else {
4665                first = false;
4666            }
4667            f.write_str("VK_KHR_external_fence_win32")?;
4668        }
4669        if self.khr_external_memory {
4670            if !first {
4671                write!(f, ", ")?
4672            } else {
4673                first = false;
4674            }
4675            f.write_str("VK_KHR_external_memory")?;
4676        }
4677        if self.khr_external_memory_fd {
4678            if !first {
4679                write!(f, ", ")?
4680            } else {
4681                first = false;
4682            }
4683            f.write_str("VK_KHR_external_memory_fd")?;
4684        }
4685        if self.khr_external_memory_win32 {
4686            if !first {
4687                write!(f, ", ")?
4688            } else {
4689                first = false;
4690            }
4691            f.write_str("VK_KHR_external_memory_win32")?;
4692        }
4693        if self.khr_external_semaphore {
4694            if !first {
4695                write!(f, ", ")?
4696            } else {
4697                first = false;
4698            }
4699            f.write_str("VK_KHR_external_semaphore")?;
4700        }
4701        if self.khr_external_semaphore_fd {
4702            if !first {
4703                write!(f, ", ")?
4704            } else {
4705                first = false;
4706            }
4707            f.write_str("VK_KHR_external_semaphore_fd")?;
4708        }
4709        if self.khr_external_semaphore_win32 {
4710            if !first {
4711                write!(f, ", ")?
4712            } else {
4713                first = false;
4714            }
4715            f.write_str("VK_KHR_external_semaphore_win32")?;
4716        }
4717        if self.khr_format_feature_flags2 {
4718            if !first {
4719                write!(f, ", ")?
4720            } else {
4721                first = false;
4722            }
4723            f.write_str("VK_KHR_format_feature_flags2")?;
4724        }
4725        if self.khr_fragment_shader_barycentric {
4726            if !first {
4727                write!(f, ", ")?
4728            } else {
4729                first = false;
4730            }
4731            f.write_str("VK_KHR_fragment_shader_barycentric")?;
4732        }
4733        if self.khr_fragment_shading_rate {
4734            if !first {
4735                write!(f, ", ")?
4736            } else {
4737                first = false;
4738            }
4739            f.write_str("VK_KHR_fragment_shading_rate")?;
4740        }
4741        if self.khr_get_memory_requirements2 {
4742            if !first {
4743                write!(f, ", ")?
4744            } else {
4745                first = false;
4746            }
4747            f.write_str("VK_KHR_get_memory_requirements2")?;
4748        }
4749        if self.khr_global_priority {
4750            if !first {
4751                write!(f, ", ")?
4752            } else {
4753                first = false;
4754            }
4755            f.write_str("VK_KHR_global_priority")?;
4756        }
4757        if self.khr_image_format_list {
4758            if !first {
4759                write!(f, ", ")?
4760            } else {
4761                first = false;
4762            }
4763            f.write_str("VK_KHR_image_format_list")?;
4764        }
4765        if self.khr_imageless_framebuffer {
4766            if !first {
4767                write!(f, ", ")?
4768            } else {
4769                first = false;
4770            }
4771            f.write_str("VK_KHR_imageless_framebuffer")?;
4772        }
4773        if self.khr_incremental_present {
4774            if !first {
4775                write!(f, ", ")?
4776            } else {
4777                first = false;
4778            }
4779            f.write_str("VK_KHR_incremental_present")?;
4780        }
4781        if self.khr_index_type_uint8 {
4782            if !first {
4783                write!(f, ", ")?
4784            } else {
4785                first = false;
4786            }
4787            f.write_str("VK_KHR_index_type_uint8")?;
4788        }
4789        if self.khr_line_rasterization {
4790            if !first {
4791                write!(f, ", ")?
4792            } else {
4793                first = false;
4794            }
4795            f.write_str("VK_KHR_line_rasterization")?;
4796        }
4797        if self.khr_load_store_op_none {
4798            if !first {
4799                write!(f, ", ")?
4800            } else {
4801                first = false;
4802            }
4803            f.write_str("VK_KHR_load_store_op_none")?;
4804        }
4805        if self.khr_maintenance1 {
4806            if !first {
4807                write!(f, ", ")?
4808            } else {
4809                first = false;
4810            }
4811            f.write_str("VK_KHR_maintenance1")?;
4812        }
4813        if self.khr_maintenance2 {
4814            if !first {
4815                write!(f, ", ")?
4816            } else {
4817                first = false;
4818            }
4819            f.write_str("VK_KHR_maintenance2")?;
4820        }
4821        if self.khr_maintenance3 {
4822            if !first {
4823                write!(f, ", ")?
4824            } else {
4825                first = false;
4826            }
4827            f.write_str("VK_KHR_maintenance3")?;
4828        }
4829        if self.khr_maintenance4 {
4830            if !first {
4831                write!(f, ", ")?
4832            } else {
4833                first = false;
4834            }
4835            f.write_str("VK_KHR_maintenance4")?;
4836        }
4837        if self.khr_maintenance5 {
4838            if !first {
4839                write!(f, ", ")?
4840            } else {
4841                first = false;
4842            }
4843            f.write_str("VK_KHR_maintenance5")?;
4844        }
4845        if self.khr_maintenance6 {
4846            if !first {
4847                write!(f, ", ")?
4848            } else {
4849                first = false;
4850            }
4851            f.write_str("VK_KHR_maintenance6")?;
4852        }
4853        if self.khr_map_memory2 {
4854            if !first {
4855                write!(f, ", ")?
4856            } else {
4857                first = false;
4858            }
4859            f.write_str("VK_KHR_map_memory2")?;
4860        }
4861        if self.khr_multiview {
4862            if !first {
4863                write!(f, ", ")?
4864            } else {
4865                first = false;
4866            }
4867            f.write_str("VK_KHR_multiview")?;
4868        }
4869        if self.khr_performance_query {
4870            if !first {
4871                write!(f, ", ")?
4872            } else {
4873                first = false;
4874            }
4875            f.write_str("VK_KHR_performance_query")?;
4876        }
4877        if self.khr_pipeline_executable_properties {
4878            if !first {
4879                write!(f, ", ")?
4880            } else {
4881                first = false;
4882            }
4883            f.write_str("VK_KHR_pipeline_executable_properties")?;
4884        }
4885        if self.khr_pipeline_library {
4886            if !first {
4887                write!(f, ", ")?
4888            } else {
4889                first = false;
4890            }
4891            f.write_str("VK_KHR_pipeline_library")?;
4892        }
4893        if self.khr_portability_subset {
4894            if !first {
4895                write!(f, ", ")?
4896            } else {
4897                first = false;
4898            }
4899            f.write_str("VK_KHR_portability_subset")?;
4900        }
4901        if self.khr_present_id {
4902            if !first {
4903                write!(f, ", ")?
4904            } else {
4905                first = false;
4906            }
4907            f.write_str("VK_KHR_present_id")?;
4908        }
4909        if self.khr_present_wait {
4910            if !first {
4911                write!(f, ", ")?
4912            } else {
4913                first = false;
4914            }
4915            f.write_str("VK_KHR_present_wait")?;
4916        }
4917        if self.khr_push_descriptor {
4918            if !first {
4919                write!(f, ", ")?
4920            } else {
4921                first = false;
4922            }
4923            f.write_str("VK_KHR_push_descriptor")?;
4924        }
4925        if self.khr_ray_query {
4926            if !first {
4927                write!(f, ", ")?
4928            } else {
4929                first = false;
4930            }
4931            f.write_str("VK_KHR_ray_query")?;
4932        }
4933        if self.khr_ray_tracing_maintenance1 {
4934            if !first {
4935                write!(f, ", ")?
4936            } else {
4937                first = false;
4938            }
4939            f.write_str("VK_KHR_ray_tracing_maintenance1")?;
4940        }
4941        if self.khr_ray_tracing_pipeline {
4942            if !first {
4943                write!(f, ", ")?
4944            } else {
4945                first = false;
4946            }
4947            f.write_str("VK_KHR_ray_tracing_pipeline")?;
4948        }
4949        if self.khr_ray_tracing_position_fetch {
4950            if !first {
4951                write!(f, ", ")?
4952            } else {
4953                first = false;
4954            }
4955            f.write_str("VK_KHR_ray_tracing_position_fetch")?;
4956        }
4957        if self.khr_relaxed_block_layout {
4958            if !first {
4959                write!(f, ", ")?
4960            } else {
4961                first = false;
4962            }
4963            f.write_str("VK_KHR_relaxed_block_layout")?;
4964        }
4965        if self.khr_sampler_mirror_clamp_to_edge {
4966            if !first {
4967                write!(f, ", ")?
4968            } else {
4969                first = false;
4970            }
4971            f.write_str("VK_KHR_sampler_mirror_clamp_to_edge")?;
4972        }
4973        if self.khr_sampler_ycbcr_conversion {
4974            if !first {
4975                write!(f, ", ")?
4976            } else {
4977                first = false;
4978            }
4979            f.write_str("VK_KHR_sampler_ycbcr_conversion")?;
4980        }
4981        if self.khr_separate_depth_stencil_layouts {
4982            if !first {
4983                write!(f, ", ")?
4984            } else {
4985                first = false;
4986            }
4987            f.write_str("VK_KHR_separate_depth_stencil_layouts")?;
4988        }
4989        if self.khr_shader_atomic_int64 {
4990            if !first {
4991                write!(f, ", ")?
4992            } else {
4993                first = false;
4994            }
4995            f.write_str("VK_KHR_shader_atomic_int64")?;
4996        }
4997        if self.khr_shader_clock {
4998            if !first {
4999                write!(f, ", ")?
5000            } else {
5001                first = false;
5002            }
5003            f.write_str("VK_KHR_shader_clock")?;
5004        }
5005        if self.khr_shader_draw_parameters {
5006            if !first {
5007                write!(f, ", ")?
5008            } else {
5009                first = false;
5010            }
5011            f.write_str("VK_KHR_shader_draw_parameters")?;
5012        }
5013        if self.khr_shader_expect_assume {
5014            if !first {
5015                write!(f, ", ")?
5016            } else {
5017                first = false;
5018            }
5019            f.write_str("VK_KHR_shader_expect_assume")?;
5020        }
5021        if self.khr_shader_float16_int8 {
5022            if !first {
5023                write!(f, ", ")?
5024            } else {
5025                first = false;
5026            }
5027            f.write_str("VK_KHR_shader_float16_int8")?;
5028        }
5029        if self.khr_shader_float_controls {
5030            if !first {
5031                write!(f, ", ")?
5032            } else {
5033                first = false;
5034            }
5035            f.write_str("VK_KHR_shader_float_controls")?;
5036        }
5037        if self.khr_shader_float_controls2 {
5038            if !first {
5039                write!(f, ", ")?
5040            } else {
5041                first = false;
5042            }
5043            f.write_str("VK_KHR_shader_float_controls2")?;
5044        }
5045        if self.khr_shader_integer_dot_product {
5046            if !first {
5047                write!(f, ", ")?
5048            } else {
5049                first = false;
5050            }
5051            f.write_str("VK_KHR_shader_integer_dot_product")?;
5052        }
5053        if self.khr_shader_maximal_reconvergence {
5054            if !first {
5055                write!(f, ", ")?
5056            } else {
5057                first = false;
5058            }
5059            f.write_str("VK_KHR_shader_maximal_reconvergence")?;
5060        }
5061        if self.khr_shader_non_semantic_info {
5062            if !first {
5063                write!(f, ", ")?
5064            } else {
5065                first = false;
5066            }
5067            f.write_str("VK_KHR_shader_non_semantic_info")?;
5068        }
5069        if self.khr_shader_quad_control {
5070            if !first {
5071                write!(f, ", ")?
5072            } else {
5073                first = false;
5074            }
5075            f.write_str("VK_KHR_shader_quad_control")?;
5076        }
5077        if self.khr_shader_subgroup_extended_types {
5078            if !first {
5079                write!(f, ", ")?
5080            } else {
5081                first = false;
5082            }
5083            f.write_str("VK_KHR_shader_subgroup_extended_types")?;
5084        }
5085        if self.khr_shader_subgroup_rotate {
5086            if !first {
5087                write!(f, ", ")?
5088            } else {
5089                first = false;
5090            }
5091            f.write_str("VK_KHR_shader_subgroup_rotate")?;
5092        }
5093        if self.khr_shader_subgroup_uniform_control_flow {
5094            if !first {
5095                write!(f, ", ")?
5096            } else {
5097                first = false;
5098            }
5099            f.write_str("VK_KHR_shader_subgroup_uniform_control_flow")?;
5100        }
5101        if self.khr_shader_terminate_invocation {
5102            if !first {
5103                write!(f, ", ")?
5104            } else {
5105                first = false;
5106            }
5107            f.write_str("VK_KHR_shader_terminate_invocation")?;
5108        }
5109        if self.khr_shared_presentable_image {
5110            if !first {
5111                write!(f, ", ")?
5112            } else {
5113                first = false;
5114            }
5115            f.write_str("VK_KHR_shared_presentable_image")?;
5116        }
5117        if self.khr_spirv_1_4 {
5118            if !first {
5119                write!(f, ", ")?
5120            } else {
5121                first = false;
5122            }
5123            f.write_str("VK_KHR_spirv_1_4")?;
5124        }
5125        if self.khr_storage_buffer_storage_class {
5126            if !first {
5127                write!(f, ", ")?
5128            } else {
5129                first = false;
5130            }
5131            f.write_str("VK_KHR_storage_buffer_storage_class")?;
5132        }
5133        if self.khr_swapchain {
5134            if !first {
5135                write!(f, ", ")?
5136            } else {
5137                first = false;
5138            }
5139            f.write_str("VK_KHR_swapchain")?;
5140        }
5141        if self.khr_swapchain_mutable_format {
5142            if !first {
5143                write!(f, ", ")?
5144            } else {
5145                first = false;
5146            }
5147            f.write_str("VK_KHR_swapchain_mutable_format")?;
5148        }
5149        if self.khr_synchronization2 {
5150            if !first {
5151                write!(f, ", ")?
5152            } else {
5153                first = false;
5154            }
5155            f.write_str("VK_KHR_synchronization2")?;
5156        }
5157        if self.khr_timeline_semaphore {
5158            if !first {
5159                write!(f, ", ")?
5160            } else {
5161                first = false;
5162            }
5163            f.write_str("VK_KHR_timeline_semaphore")?;
5164        }
5165        if self.khr_uniform_buffer_standard_layout {
5166            if !first {
5167                write!(f, ", ")?
5168            } else {
5169                first = false;
5170            }
5171            f.write_str("VK_KHR_uniform_buffer_standard_layout")?;
5172        }
5173        if self.khr_variable_pointers {
5174            if !first {
5175                write!(f, ", ")?
5176            } else {
5177                first = false;
5178            }
5179            f.write_str("VK_KHR_variable_pointers")?;
5180        }
5181        if self.khr_vertex_attribute_divisor {
5182            if !first {
5183                write!(f, ", ")?
5184            } else {
5185                first = false;
5186            }
5187            f.write_str("VK_KHR_vertex_attribute_divisor")?;
5188        }
5189        if self.khr_video_decode_av1 {
5190            if !first {
5191                write!(f, ", ")?
5192            } else {
5193                first = false;
5194            }
5195            f.write_str("VK_KHR_video_decode_av1")?;
5196        }
5197        if self.khr_video_decode_h264 {
5198            if !first {
5199                write!(f, ", ")?
5200            } else {
5201                first = false;
5202            }
5203            f.write_str("VK_KHR_video_decode_h264")?;
5204        }
5205        if self.khr_video_decode_h265 {
5206            if !first {
5207                write!(f, ", ")?
5208            } else {
5209                first = false;
5210            }
5211            f.write_str("VK_KHR_video_decode_h265")?;
5212        }
5213        if self.khr_video_decode_queue {
5214            if !first {
5215                write!(f, ", ")?
5216            } else {
5217                first = false;
5218            }
5219            f.write_str("VK_KHR_video_decode_queue")?;
5220        }
5221        if self.khr_video_encode_h264 {
5222            if !first {
5223                write!(f, ", ")?
5224            } else {
5225                first = false;
5226            }
5227            f.write_str("VK_KHR_video_encode_h264")?;
5228        }
5229        if self.khr_video_encode_h265 {
5230            if !first {
5231                write!(f, ", ")?
5232            } else {
5233                first = false;
5234            }
5235            f.write_str("VK_KHR_video_encode_h265")?;
5236        }
5237        if self.khr_video_encode_queue {
5238            if !first {
5239                write!(f, ", ")?
5240            } else {
5241                first = false;
5242            }
5243            f.write_str("VK_KHR_video_encode_queue")?;
5244        }
5245        if self.khr_video_maintenance1 {
5246            if !first {
5247                write!(f, ", ")?
5248            } else {
5249                first = false;
5250            }
5251            f.write_str("VK_KHR_video_maintenance1")?;
5252        }
5253        if self.khr_video_queue {
5254            if !first {
5255                write!(f, ", ")?
5256            } else {
5257                first = false;
5258            }
5259            f.write_str("VK_KHR_video_queue")?;
5260        }
5261        if self.khr_vulkan_memory_model {
5262            if !first {
5263                write!(f, ", ")?
5264            } else {
5265                first = false;
5266            }
5267            f.write_str("VK_KHR_vulkan_memory_model")?;
5268        }
5269        if self.khr_win32_keyed_mutex {
5270            if !first {
5271                write!(f, ", ")?
5272            } else {
5273                first = false;
5274            }
5275            f.write_str("VK_KHR_win32_keyed_mutex")?;
5276        }
5277        if self.khr_workgroup_memory_explicit_layout {
5278            if !first {
5279                write!(f, ", ")?
5280            } else {
5281                first = false;
5282            }
5283            f.write_str("VK_KHR_workgroup_memory_explicit_layout")?;
5284        }
5285        if self.khr_zero_initialize_workgroup_memory {
5286            if !first {
5287                write!(f, ", ")?
5288            } else {
5289                first = false;
5290            }
5291            f.write_str("VK_KHR_zero_initialize_workgroup_memory")?;
5292        }
5293        if self.ext_4444_formats {
5294            if !first {
5295                write!(f, ", ")?
5296            } else {
5297                first = false;
5298            }
5299            f.write_str("VK_EXT_4444_formats")?;
5300        }
5301        if self.ext_astc_decode_mode {
5302            if !first {
5303                write!(f, ", ")?
5304            } else {
5305                first = false;
5306            }
5307            f.write_str("VK_EXT_astc_decode_mode")?;
5308        }
5309        if self.ext_attachment_feedback_loop_dynamic_state {
5310            if !first {
5311                write!(f, ", ")?
5312            } else {
5313                first = false;
5314            }
5315            f.write_str("VK_EXT_attachment_feedback_loop_dynamic_state")?;
5316        }
5317        if self.ext_attachment_feedback_loop_layout {
5318            if !first {
5319                write!(f, ", ")?
5320            } else {
5321                first = false;
5322            }
5323            f.write_str("VK_EXT_attachment_feedback_loop_layout")?;
5324        }
5325        if self.ext_blend_operation_advanced {
5326            if !first {
5327                write!(f, ", ")?
5328            } else {
5329                first = false;
5330            }
5331            f.write_str("VK_EXT_blend_operation_advanced")?;
5332        }
5333        if self.ext_border_color_swizzle {
5334            if !first {
5335                write!(f, ", ")?
5336            } else {
5337                first = false;
5338            }
5339            f.write_str("VK_EXT_border_color_swizzle")?;
5340        }
5341        if self.ext_buffer_device_address {
5342            if !first {
5343                write!(f, ", ")?
5344            } else {
5345                first = false;
5346            }
5347            f.write_str("VK_EXT_buffer_device_address")?;
5348        }
5349        if self.ext_calibrated_timestamps {
5350            if !first {
5351                write!(f, ", ")?
5352            } else {
5353                first = false;
5354            }
5355            f.write_str("VK_EXT_calibrated_timestamps")?;
5356        }
5357        if self.ext_color_write_enable {
5358            if !first {
5359                write!(f, ", ")?
5360            } else {
5361                first = false;
5362            }
5363            f.write_str("VK_EXT_color_write_enable")?;
5364        }
5365        if self.ext_conditional_rendering {
5366            if !first {
5367                write!(f, ", ")?
5368            } else {
5369                first = false;
5370            }
5371            f.write_str("VK_EXT_conditional_rendering")?;
5372        }
5373        if self.ext_conservative_rasterization {
5374            if !first {
5375                write!(f, ", ")?
5376            } else {
5377                first = false;
5378            }
5379            f.write_str("VK_EXT_conservative_rasterization")?;
5380        }
5381        if self.ext_custom_border_color {
5382            if !first {
5383                write!(f, ", ")?
5384            } else {
5385                first = false;
5386            }
5387            f.write_str("VK_EXT_custom_border_color")?;
5388        }
5389        if self.ext_debug_marker {
5390            if !first {
5391                write!(f, ", ")?
5392            } else {
5393                first = false;
5394            }
5395            f.write_str("VK_EXT_debug_marker")?;
5396        }
5397        if self.ext_depth_bias_control {
5398            if !first {
5399                write!(f, ", ")?
5400            } else {
5401                first = false;
5402            }
5403            f.write_str("VK_EXT_depth_bias_control")?;
5404        }
5405        if self.ext_depth_clamp_zero_one {
5406            if !first {
5407                write!(f, ", ")?
5408            } else {
5409                first = false;
5410            }
5411            f.write_str("VK_EXT_depth_clamp_zero_one")?;
5412        }
5413        if self.ext_depth_clip_control {
5414            if !first {
5415                write!(f, ", ")?
5416            } else {
5417                first = false;
5418            }
5419            f.write_str("VK_EXT_depth_clip_control")?;
5420        }
5421        if self.ext_depth_clip_enable {
5422            if !first {
5423                write!(f, ", ")?
5424            } else {
5425                first = false;
5426            }
5427            f.write_str("VK_EXT_depth_clip_enable")?;
5428        }
5429        if self.ext_depth_range_unrestricted {
5430            if !first {
5431                write!(f, ", ")?
5432            } else {
5433                first = false;
5434            }
5435            f.write_str("VK_EXT_depth_range_unrestricted")?;
5436        }
5437        if self.ext_descriptor_buffer {
5438            if !first {
5439                write!(f, ", ")?
5440            } else {
5441                first = false;
5442            }
5443            f.write_str("VK_EXT_descriptor_buffer")?;
5444        }
5445        if self.ext_descriptor_indexing {
5446            if !first {
5447                write!(f, ", ")?
5448            } else {
5449                first = false;
5450            }
5451            f.write_str("VK_EXT_descriptor_indexing")?;
5452        }
5453        if self.ext_device_address_binding_report {
5454            if !first {
5455                write!(f, ", ")?
5456            } else {
5457                first = false;
5458            }
5459            f.write_str("VK_EXT_device_address_binding_report")?;
5460        }
5461        if self.ext_device_fault {
5462            if !first {
5463                write!(f, ", ")?
5464            } else {
5465                first = false;
5466            }
5467            f.write_str("VK_EXT_device_fault")?;
5468        }
5469        if self.ext_device_memory_report {
5470            if !first {
5471                write!(f, ", ")?
5472            } else {
5473                first = false;
5474            }
5475            f.write_str("VK_EXT_device_memory_report")?;
5476        }
5477        if self.ext_discard_rectangles {
5478            if !first {
5479                write!(f, ", ")?
5480            } else {
5481                first = false;
5482            }
5483            f.write_str("VK_EXT_discard_rectangles")?;
5484        }
5485        if self.ext_display_control {
5486            if !first {
5487                write!(f, ", ")?
5488            } else {
5489                first = false;
5490            }
5491            f.write_str("VK_EXT_display_control")?;
5492        }
5493        if self.ext_dynamic_rendering_unused_attachments {
5494            if !first {
5495                write!(f, ", ")?
5496            } else {
5497                first = false;
5498            }
5499            f.write_str("VK_EXT_dynamic_rendering_unused_attachments")?;
5500        }
5501        if self.ext_extended_dynamic_state {
5502            if !first {
5503                write!(f, ", ")?
5504            } else {
5505                first = false;
5506            }
5507            f.write_str("VK_EXT_extended_dynamic_state")?;
5508        }
5509        if self.ext_extended_dynamic_state2 {
5510            if !first {
5511                write!(f, ", ")?
5512            } else {
5513                first = false;
5514            }
5515            f.write_str("VK_EXT_extended_dynamic_state2")?;
5516        }
5517        if self.ext_extended_dynamic_state3 {
5518            if !first {
5519                write!(f, ", ")?
5520            } else {
5521                first = false;
5522            }
5523            f.write_str("VK_EXT_extended_dynamic_state3")?;
5524        }
5525        if self.ext_external_memory_acquire_unmodified {
5526            if !first {
5527                write!(f, ", ")?
5528            } else {
5529                first = false;
5530            }
5531            f.write_str("VK_EXT_external_memory_acquire_unmodified")?;
5532        }
5533        if self.ext_external_memory_dma_buf {
5534            if !first {
5535                write!(f, ", ")?
5536            } else {
5537                first = false;
5538            }
5539            f.write_str("VK_EXT_external_memory_dma_buf")?;
5540        }
5541        if self.ext_external_memory_host {
5542            if !first {
5543                write!(f, ", ")?
5544            } else {
5545                first = false;
5546            }
5547            f.write_str("VK_EXT_external_memory_host")?;
5548        }
5549        if self.ext_filter_cubic {
5550            if !first {
5551                write!(f, ", ")?
5552            } else {
5553                first = false;
5554            }
5555            f.write_str("VK_EXT_filter_cubic")?;
5556        }
5557        if self.ext_fragment_density_map {
5558            if !first {
5559                write!(f, ", ")?
5560            } else {
5561                first = false;
5562            }
5563            f.write_str("VK_EXT_fragment_density_map")?;
5564        }
5565        if self.ext_fragment_density_map2 {
5566            if !first {
5567                write!(f, ", ")?
5568            } else {
5569                first = false;
5570            }
5571            f.write_str("VK_EXT_fragment_density_map2")?;
5572        }
5573        if self.ext_fragment_shader_interlock {
5574            if !first {
5575                write!(f, ", ")?
5576            } else {
5577                first = false;
5578            }
5579            f.write_str("VK_EXT_fragment_shader_interlock")?;
5580        }
5581        if self.ext_frame_boundary {
5582            if !first {
5583                write!(f, ", ")?
5584            } else {
5585                first = false;
5586            }
5587            f.write_str("VK_EXT_frame_boundary")?;
5588        }
5589        if self.ext_full_screen_exclusive {
5590            if !first {
5591                write!(f, ", ")?
5592            } else {
5593                first = false;
5594            }
5595            f.write_str("VK_EXT_full_screen_exclusive")?;
5596        }
5597        if self.ext_global_priority {
5598            if !first {
5599                write!(f, ", ")?
5600            } else {
5601                first = false;
5602            }
5603            f.write_str("VK_EXT_global_priority")?;
5604        }
5605        if self.ext_global_priority_query {
5606            if !first {
5607                write!(f, ", ")?
5608            } else {
5609                first = false;
5610            }
5611            f.write_str("VK_EXT_global_priority_query")?;
5612        }
5613        if self.ext_graphics_pipeline_library {
5614            if !first {
5615                write!(f, ", ")?
5616            } else {
5617                first = false;
5618            }
5619            f.write_str("VK_EXT_graphics_pipeline_library")?;
5620        }
5621        if self.ext_hdr_metadata {
5622            if !first {
5623                write!(f, ", ")?
5624            } else {
5625                first = false;
5626            }
5627            f.write_str("VK_EXT_hdr_metadata")?;
5628        }
5629        if self.ext_host_image_copy {
5630            if !first {
5631                write!(f, ", ")?
5632            } else {
5633                first = false;
5634            }
5635            f.write_str("VK_EXT_host_image_copy")?;
5636        }
5637        if self.ext_host_query_reset {
5638            if !first {
5639                write!(f, ", ")?
5640            } else {
5641                first = false;
5642            }
5643            f.write_str("VK_EXT_host_query_reset")?;
5644        }
5645        if self.ext_image_2d_view_of_3d {
5646            if !first {
5647                write!(f, ", ")?
5648            } else {
5649                first = false;
5650            }
5651            f.write_str("VK_EXT_image_2d_view_of_3d")?;
5652        }
5653        if self.ext_image_compression_control {
5654            if !first {
5655                write!(f, ", ")?
5656            } else {
5657                first = false;
5658            }
5659            f.write_str("VK_EXT_image_compression_control")?;
5660        }
5661        if self.ext_image_compression_control_swapchain {
5662            if !first {
5663                write!(f, ", ")?
5664            } else {
5665                first = false;
5666            }
5667            f.write_str("VK_EXT_image_compression_control_swapchain")?;
5668        }
5669        if self.ext_image_drm_format_modifier {
5670            if !first {
5671                write!(f, ", ")?
5672            } else {
5673                first = false;
5674            }
5675            f.write_str("VK_EXT_image_drm_format_modifier")?;
5676        }
5677        if self.ext_image_robustness {
5678            if !first {
5679                write!(f, ", ")?
5680            } else {
5681                first = false;
5682            }
5683            f.write_str("VK_EXT_image_robustness")?;
5684        }
5685        if self.ext_image_sliced_view_of_3d {
5686            if !first {
5687                write!(f, ", ")?
5688            } else {
5689                first = false;
5690            }
5691            f.write_str("VK_EXT_image_sliced_view_of_3d")?;
5692        }
5693        if self.ext_image_view_min_lod {
5694            if !first {
5695                write!(f, ", ")?
5696            } else {
5697                first = false;
5698            }
5699            f.write_str("VK_EXT_image_view_min_lod")?;
5700        }
5701        if self.ext_index_type_uint8 {
5702            if !first {
5703                write!(f, ", ")?
5704            } else {
5705                first = false;
5706            }
5707            f.write_str("VK_EXT_index_type_uint8")?;
5708        }
5709        if self.ext_inline_uniform_block {
5710            if !first {
5711                write!(f, ", ")?
5712            } else {
5713                first = false;
5714            }
5715            f.write_str("VK_EXT_inline_uniform_block")?;
5716        }
5717        if self.ext_legacy_dithering {
5718            if !first {
5719                write!(f, ", ")?
5720            } else {
5721                first = false;
5722            }
5723            f.write_str("VK_EXT_legacy_dithering")?;
5724        }
5725        if self.ext_line_rasterization {
5726            if !first {
5727                write!(f, ", ")?
5728            } else {
5729                first = false;
5730            }
5731            f.write_str("VK_EXT_line_rasterization")?;
5732        }
5733        if self.ext_load_store_op_none {
5734            if !first {
5735                write!(f, ", ")?
5736            } else {
5737                first = false;
5738            }
5739            f.write_str("VK_EXT_load_store_op_none")?;
5740        }
5741        if self.ext_map_memory_placed {
5742            if !first {
5743                write!(f, ", ")?
5744            } else {
5745                first = false;
5746            }
5747            f.write_str("VK_EXT_map_memory_placed")?;
5748        }
5749        if self.ext_memory_budget {
5750            if !first {
5751                write!(f, ", ")?
5752            } else {
5753                first = false;
5754            }
5755            f.write_str("VK_EXT_memory_budget")?;
5756        }
5757        if self.ext_memory_priority {
5758            if !first {
5759                write!(f, ", ")?
5760            } else {
5761                first = false;
5762            }
5763            f.write_str("VK_EXT_memory_priority")?;
5764        }
5765        if self.ext_mesh_shader {
5766            if !first {
5767                write!(f, ", ")?
5768            } else {
5769                first = false;
5770            }
5771            f.write_str("VK_EXT_mesh_shader")?;
5772        }
5773        if self.ext_metal_objects {
5774            if !first {
5775                write!(f, ", ")?
5776            } else {
5777                first = false;
5778            }
5779            f.write_str("VK_EXT_metal_objects")?;
5780        }
5781        if self.ext_multi_draw {
5782            if !first {
5783                write!(f, ", ")?
5784            } else {
5785                first = false;
5786            }
5787            f.write_str("VK_EXT_multi_draw")?;
5788        }
5789        if self.ext_multisampled_render_to_single_sampled {
5790            if !first {
5791                write!(f, ", ")?
5792            } else {
5793                first = false;
5794            }
5795            f.write_str("VK_EXT_multisampled_render_to_single_sampled")?;
5796        }
5797        if self.ext_mutable_descriptor_type {
5798            if !first {
5799                write!(f, ", ")?
5800            } else {
5801                first = false;
5802            }
5803            f.write_str("VK_EXT_mutable_descriptor_type")?;
5804        }
5805        if self.ext_nested_command_buffer {
5806            if !first {
5807                write!(f, ", ")?
5808            } else {
5809                first = false;
5810            }
5811            f.write_str("VK_EXT_nested_command_buffer")?;
5812        }
5813        if self.ext_non_seamless_cube_map {
5814            if !first {
5815                write!(f, ", ")?
5816            } else {
5817                first = false;
5818            }
5819            f.write_str("VK_EXT_non_seamless_cube_map")?;
5820        }
5821        if self.ext_opacity_micromap {
5822            if !first {
5823                write!(f, ", ")?
5824            } else {
5825                first = false;
5826            }
5827            f.write_str("VK_EXT_opacity_micromap")?;
5828        }
5829        if self.ext_pageable_device_local_memory {
5830            if !first {
5831                write!(f, ", ")?
5832            } else {
5833                first = false;
5834            }
5835            f.write_str("VK_EXT_pageable_device_local_memory")?;
5836        }
5837        if self.ext_pci_bus_info {
5838            if !first {
5839                write!(f, ", ")?
5840            } else {
5841                first = false;
5842            }
5843            f.write_str("VK_EXT_pci_bus_info")?;
5844        }
5845        if self.ext_physical_device_drm {
5846            if !first {
5847                write!(f, ", ")?
5848            } else {
5849                first = false;
5850            }
5851            f.write_str("VK_EXT_physical_device_drm")?;
5852        }
5853        if self.ext_pipeline_creation_cache_control {
5854            if !first {
5855                write!(f, ", ")?
5856            } else {
5857                first = false;
5858            }
5859            f.write_str("VK_EXT_pipeline_creation_cache_control")?;
5860        }
5861        if self.ext_pipeline_creation_feedback {
5862            if !first {
5863                write!(f, ", ")?
5864            } else {
5865                first = false;
5866            }
5867            f.write_str("VK_EXT_pipeline_creation_feedback")?;
5868        }
5869        if self.ext_pipeline_library_group_handles {
5870            if !first {
5871                write!(f, ", ")?
5872            } else {
5873                first = false;
5874            }
5875            f.write_str("VK_EXT_pipeline_library_group_handles")?;
5876        }
5877        if self.ext_pipeline_properties {
5878            if !first {
5879                write!(f, ", ")?
5880            } else {
5881                first = false;
5882            }
5883            f.write_str("VK_EXT_pipeline_properties")?;
5884        }
5885        if self.ext_pipeline_protected_access {
5886            if !first {
5887                write!(f, ", ")?
5888            } else {
5889                first = false;
5890            }
5891            f.write_str("VK_EXT_pipeline_protected_access")?;
5892        }
5893        if self.ext_pipeline_robustness {
5894            if !first {
5895                write!(f, ", ")?
5896            } else {
5897                first = false;
5898            }
5899            f.write_str("VK_EXT_pipeline_robustness")?;
5900        }
5901        if self.ext_post_depth_coverage {
5902            if !first {
5903                write!(f, ", ")?
5904            } else {
5905                first = false;
5906            }
5907            f.write_str("VK_EXT_post_depth_coverage")?;
5908        }
5909        if self.ext_primitive_topology_list_restart {
5910            if !first {
5911                write!(f, ", ")?
5912            } else {
5913                first = false;
5914            }
5915            f.write_str("VK_EXT_primitive_topology_list_restart")?;
5916        }
5917        if self.ext_primitives_generated_query {
5918            if !first {
5919                write!(f, ", ")?
5920            } else {
5921                first = false;
5922            }
5923            f.write_str("VK_EXT_primitives_generated_query")?;
5924        }
5925        if self.ext_private_data {
5926            if !first {
5927                write!(f, ", ")?
5928            } else {
5929                first = false;
5930            }
5931            f.write_str("VK_EXT_private_data")?;
5932        }
5933        if self.ext_provoking_vertex {
5934            if !first {
5935                write!(f, ", ")?
5936            } else {
5937                first = false;
5938            }
5939            f.write_str("VK_EXT_provoking_vertex")?;
5940        }
5941        if self.ext_queue_family_foreign {
5942            if !first {
5943                write!(f, ", ")?
5944            } else {
5945                first = false;
5946            }
5947            f.write_str("VK_EXT_queue_family_foreign")?;
5948        }
5949        if self.ext_rasterization_order_attachment_access {
5950            if !first {
5951                write!(f, ", ")?
5952            } else {
5953                first = false;
5954            }
5955            f.write_str("VK_EXT_rasterization_order_attachment_access")?;
5956        }
5957        if self.ext_rgba10x6_formats {
5958            if !first {
5959                write!(f, ", ")?
5960            } else {
5961                first = false;
5962            }
5963            f.write_str("VK_EXT_rgba10x6_formats")?;
5964        }
5965        if self.ext_robustness2 {
5966            if !first {
5967                write!(f, ", ")?
5968            } else {
5969                first = false;
5970            }
5971            f.write_str("VK_EXT_robustness2")?;
5972        }
5973        if self.ext_sample_locations {
5974            if !first {
5975                write!(f, ", ")?
5976            } else {
5977                first = false;
5978            }
5979            f.write_str("VK_EXT_sample_locations")?;
5980        }
5981        if self.ext_sampler_filter_minmax {
5982            if !first {
5983                write!(f, ", ")?
5984            } else {
5985                first = false;
5986            }
5987            f.write_str("VK_EXT_sampler_filter_minmax")?;
5988        }
5989        if self.ext_scalar_block_layout {
5990            if !first {
5991                write!(f, ", ")?
5992            } else {
5993                first = false;
5994            }
5995            f.write_str("VK_EXT_scalar_block_layout")?;
5996        }
5997        if self.ext_separate_stencil_usage {
5998            if !first {
5999                write!(f, ", ")?
6000            } else {
6001                first = false;
6002            }
6003            f.write_str("VK_EXT_separate_stencil_usage")?;
6004        }
6005        if self.ext_shader_atomic_float {
6006            if !first {
6007                write!(f, ", ")?
6008            } else {
6009                first = false;
6010            }
6011            f.write_str("VK_EXT_shader_atomic_float")?;
6012        }
6013        if self.ext_shader_atomic_float2 {
6014            if !first {
6015                write!(f, ", ")?
6016            } else {
6017                first = false;
6018            }
6019            f.write_str("VK_EXT_shader_atomic_float2")?;
6020        }
6021        if self.ext_shader_demote_to_helper_invocation {
6022            if !first {
6023                write!(f, ", ")?
6024            } else {
6025                first = false;
6026            }
6027            f.write_str("VK_EXT_shader_demote_to_helper_invocation")?;
6028        }
6029        if self.ext_shader_image_atomic_int64 {
6030            if !first {
6031                write!(f, ", ")?
6032            } else {
6033                first = false;
6034            }
6035            f.write_str("VK_EXT_shader_image_atomic_int64")?;
6036        }
6037        if self.ext_shader_module_identifier {
6038            if !first {
6039                write!(f, ", ")?
6040            } else {
6041                first = false;
6042            }
6043            f.write_str("VK_EXT_shader_module_identifier")?;
6044        }
6045        if self.ext_shader_object {
6046            if !first {
6047                write!(f, ", ")?
6048            } else {
6049                first = false;
6050            }
6051            f.write_str("VK_EXT_shader_object")?;
6052        }
6053        if self.ext_shader_stencil_export {
6054            if !first {
6055                write!(f, ", ")?
6056            } else {
6057                first = false;
6058            }
6059            f.write_str("VK_EXT_shader_stencil_export")?;
6060        }
6061        if self.ext_shader_subgroup_ballot {
6062            if !first {
6063                write!(f, ", ")?
6064            } else {
6065                first = false;
6066            }
6067            f.write_str("VK_EXT_shader_subgroup_ballot")?;
6068        }
6069        if self.ext_shader_subgroup_vote {
6070            if !first {
6071                write!(f, ", ")?
6072            } else {
6073                first = false;
6074            }
6075            f.write_str("VK_EXT_shader_subgroup_vote")?;
6076        }
6077        if self.ext_shader_tile_image {
6078            if !first {
6079                write!(f, ", ")?
6080            } else {
6081                first = false;
6082            }
6083            f.write_str("VK_EXT_shader_tile_image")?;
6084        }
6085        if self.ext_shader_viewport_index_layer {
6086            if !first {
6087                write!(f, ", ")?
6088            } else {
6089                first = false;
6090            }
6091            f.write_str("VK_EXT_shader_viewport_index_layer")?;
6092        }
6093        if self.ext_subgroup_size_control {
6094            if !first {
6095                write!(f, ", ")?
6096            } else {
6097                first = false;
6098            }
6099            f.write_str("VK_EXT_subgroup_size_control")?;
6100        }
6101        if self.ext_subpass_merge_feedback {
6102            if !first {
6103                write!(f, ", ")?
6104            } else {
6105                first = false;
6106            }
6107            f.write_str("VK_EXT_subpass_merge_feedback")?;
6108        }
6109        if self.ext_swapchain_maintenance1 {
6110            if !first {
6111                write!(f, ", ")?
6112            } else {
6113                first = false;
6114            }
6115            f.write_str("VK_EXT_swapchain_maintenance1")?;
6116        }
6117        if self.ext_texel_buffer_alignment {
6118            if !first {
6119                write!(f, ", ")?
6120            } else {
6121                first = false;
6122            }
6123            f.write_str("VK_EXT_texel_buffer_alignment")?;
6124        }
6125        if self.ext_texture_compression_astc_hdr {
6126            if !first {
6127                write!(f, ", ")?
6128            } else {
6129                first = false;
6130            }
6131            f.write_str("VK_EXT_texture_compression_astc_hdr")?;
6132        }
6133        if self.ext_tooling_info {
6134            if !first {
6135                write!(f, ", ")?
6136            } else {
6137                first = false;
6138            }
6139            f.write_str("VK_EXT_tooling_info")?;
6140        }
6141        if self.ext_transform_feedback {
6142            if !first {
6143                write!(f, ", ")?
6144            } else {
6145                first = false;
6146            }
6147            f.write_str("VK_EXT_transform_feedback")?;
6148        }
6149        if self.ext_validation_cache {
6150            if !first {
6151                write!(f, ", ")?
6152            } else {
6153                first = false;
6154            }
6155            f.write_str("VK_EXT_validation_cache")?;
6156        }
6157        if self.ext_vertex_attribute_divisor {
6158            if !first {
6159                write!(f, ", ")?
6160            } else {
6161                first = false;
6162            }
6163            f.write_str("VK_EXT_vertex_attribute_divisor")?;
6164        }
6165        if self.ext_vertex_input_dynamic_state {
6166            if !first {
6167                write!(f, ", ")?
6168            } else {
6169                first = false;
6170            }
6171            f.write_str("VK_EXT_vertex_input_dynamic_state")?;
6172        }
6173        if self.ext_ycbcr_2plane_444_formats {
6174            if !first {
6175                write!(f, ", ")?
6176            } else {
6177                first = false;
6178            }
6179            f.write_str("VK_EXT_ycbcr_2plane_444_formats")?;
6180        }
6181        if self.ext_ycbcr_image_arrays {
6182            if !first {
6183                write!(f, ", ")?
6184            } else {
6185                first = false;
6186            }
6187            f.write_str("VK_EXT_ycbcr_image_arrays")?;
6188        }
6189        if self.amdx_shader_enqueue {
6190            if !first {
6191                write!(f, ", ")?
6192            } else {
6193                first = false;
6194            }
6195            f.write_str("VK_AMDX_shader_enqueue")?;
6196        }
6197        if self.amd_buffer_marker {
6198            if !first {
6199                write!(f, ", ")?
6200            } else {
6201                first = false;
6202            }
6203            f.write_str("VK_AMD_buffer_marker")?;
6204        }
6205        if self.amd_device_coherent_memory {
6206            if !first {
6207                write!(f, ", ")?
6208            } else {
6209                first = false;
6210            }
6211            f.write_str("VK_AMD_device_coherent_memory")?;
6212        }
6213        if self.amd_display_native_hdr {
6214            if !first {
6215                write!(f, ", ")?
6216            } else {
6217                first = false;
6218            }
6219            f.write_str("VK_AMD_display_native_hdr")?;
6220        }
6221        if self.amd_draw_indirect_count {
6222            if !first {
6223                write!(f, ", ")?
6224            } else {
6225                first = false;
6226            }
6227            f.write_str("VK_AMD_draw_indirect_count")?;
6228        }
6229        if self.amd_gcn_shader {
6230            if !first {
6231                write!(f, ", ")?
6232            } else {
6233                first = false;
6234            }
6235            f.write_str("VK_AMD_gcn_shader")?;
6236        }
6237        if self.amd_gpu_shader_half_float {
6238            if !first {
6239                write!(f, ", ")?
6240            } else {
6241                first = false;
6242            }
6243            f.write_str("VK_AMD_gpu_shader_half_float")?;
6244        }
6245        if self.amd_gpu_shader_int16 {
6246            if !first {
6247                write!(f, ", ")?
6248            } else {
6249                first = false;
6250            }
6251            f.write_str("VK_AMD_gpu_shader_int16")?;
6252        }
6253        if self.amd_memory_overallocation_behavior {
6254            if !first {
6255                write!(f, ", ")?
6256            } else {
6257                first = false;
6258            }
6259            f.write_str("VK_AMD_memory_overallocation_behavior")?;
6260        }
6261        if self.amd_mixed_attachment_samples {
6262            if !first {
6263                write!(f, ", ")?
6264            } else {
6265                first = false;
6266            }
6267            f.write_str("VK_AMD_mixed_attachment_samples")?;
6268        }
6269        if self.amd_pipeline_compiler_control {
6270            if !first {
6271                write!(f, ", ")?
6272            } else {
6273                first = false;
6274            }
6275            f.write_str("VK_AMD_pipeline_compiler_control")?;
6276        }
6277        if self.amd_rasterization_order {
6278            if !first {
6279                write!(f, ", ")?
6280            } else {
6281                first = false;
6282            }
6283            f.write_str("VK_AMD_rasterization_order")?;
6284        }
6285        if self.amd_shader_ballot {
6286            if !first {
6287                write!(f, ", ")?
6288            } else {
6289                first = false;
6290            }
6291            f.write_str("VK_AMD_shader_ballot")?;
6292        }
6293        if self.amd_shader_core_properties {
6294            if !first {
6295                write!(f, ", ")?
6296            } else {
6297                first = false;
6298            }
6299            f.write_str("VK_AMD_shader_core_properties")?;
6300        }
6301        if self.amd_shader_core_properties2 {
6302            if !first {
6303                write!(f, ", ")?
6304            } else {
6305                first = false;
6306            }
6307            f.write_str("VK_AMD_shader_core_properties2")?;
6308        }
6309        if self.amd_shader_early_and_late_fragment_tests {
6310            if !first {
6311                write!(f, ", ")?
6312            } else {
6313                first = false;
6314            }
6315            f.write_str("VK_AMD_shader_early_and_late_fragment_tests")?;
6316        }
6317        if self.amd_shader_explicit_vertex_parameter {
6318            if !first {
6319                write!(f, ", ")?
6320            } else {
6321                first = false;
6322            }
6323            f.write_str("VK_AMD_shader_explicit_vertex_parameter")?;
6324        }
6325        if self.amd_shader_fragment_mask {
6326            if !first {
6327                write!(f, ", ")?
6328            } else {
6329                first = false;
6330            }
6331            f.write_str("VK_AMD_shader_fragment_mask")?;
6332        }
6333        if self.amd_shader_image_load_store_lod {
6334            if !first {
6335                write!(f, ", ")?
6336            } else {
6337                first = false;
6338            }
6339            f.write_str("VK_AMD_shader_image_load_store_lod")?;
6340        }
6341        if self.amd_shader_info {
6342            if !first {
6343                write!(f, ", ")?
6344            } else {
6345                first = false;
6346            }
6347            f.write_str("VK_AMD_shader_info")?;
6348        }
6349        if self.amd_shader_trinary_minmax {
6350            if !first {
6351                write!(f, ", ")?
6352            } else {
6353                first = false;
6354            }
6355            f.write_str("VK_AMD_shader_trinary_minmax")?;
6356        }
6357        if self.amd_texture_gather_bias_lod {
6358            if !first {
6359                write!(f, ", ")?
6360            } else {
6361                first = false;
6362            }
6363            f.write_str("VK_AMD_texture_gather_bias_lod")?;
6364        }
6365        if self.android_external_format_resolve {
6366            if !first {
6367                write!(f, ", ")?
6368            } else {
6369                first = false;
6370            }
6371            f.write_str("VK_ANDROID_external_format_resolve")?;
6372        }
6373        if self.android_external_memory_android_hardware_buffer {
6374            if !first {
6375                write!(f, ", ")?
6376            } else {
6377                first = false;
6378            }
6379            f.write_str("VK_ANDROID_external_memory_android_hardware_buffer")?;
6380        }
6381        if self.arm_rasterization_order_attachment_access {
6382            if !first {
6383                write!(f, ", ")?
6384            } else {
6385                first = false;
6386            }
6387            f.write_str("VK_ARM_rasterization_order_attachment_access")?;
6388        }
6389        if self.arm_render_pass_striped {
6390            if !first {
6391                write!(f, ", ")?
6392            } else {
6393                first = false;
6394            }
6395            f.write_str("VK_ARM_render_pass_striped")?;
6396        }
6397        if self.arm_scheduling_controls {
6398            if !first {
6399                write!(f, ", ")?
6400            } else {
6401                first = false;
6402            }
6403            f.write_str("VK_ARM_scheduling_controls")?;
6404        }
6405        if self.arm_shader_core_builtins {
6406            if !first {
6407                write!(f, ", ")?
6408            } else {
6409                first = false;
6410            }
6411            f.write_str("VK_ARM_shader_core_builtins")?;
6412        }
6413        if self.arm_shader_core_properties {
6414            if !first {
6415                write!(f, ", ")?
6416            } else {
6417                first = false;
6418            }
6419            f.write_str("VK_ARM_shader_core_properties")?;
6420        }
6421        if self.fuchsia_buffer_collection {
6422            if !first {
6423                write!(f, ", ")?
6424            } else {
6425                first = false;
6426            }
6427            f.write_str("VK_FUCHSIA_buffer_collection")?;
6428        }
6429        if self.fuchsia_external_memory {
6430            if !first {
6431                write!(f, ", ")?
6432            } else {
6433                first = false;
6434            }
6435            f.write_str("VK_FUCHSIA_external_memory")?;
6436        }
6437        if self.fuchsia_external_semaphore {
6438            if !first {
6439                write!(f, ", ")?
6440            } else {
6441                first = false;
6442            }
6443            f.write_str("VK_FUCHSIA_external_semaphore")?;
6444        }
6445        if self.ggp_frame_token {
6446            if !first {
6447                write!(f, ", ")?
6448            } else {
6449                first = false;
6450            }
6451            f.write_str("VK_GGP_frame_token")?;
6452        }
6453        if self.google_decorate_string {
6454            if !first {
6455                write!(f, ", ")?
6456            } else {
6457                first = false;
6458            }
6459            f.write_str("VK_GOOGLE_decorate_string")?;
6460        }
6461        if self.google_display_timing {
6462            if !first {
6463                write!(f, ", ")?
6464            } else {
6465                first = false;
6466            }
6467            f.write_str("VK_GOOGLE_display_timing")?;
6468        }
6469        if self.google_hlsl_functionality1 {
6470            if !first {
6471                write!(f, ", ")?
6472            } else {
6473                first = false;
6474            }
6475            f.write_str("VK_GOOGLE_hlsl_functionality1")?;
6476        }
6477        if self.google_user_type {
6478            if !first {
6479                write!(f, ", ")?
6480            } else {
6481                first = false;
6482            }
6483            f.write_str("VK_GOOGLE_user_type")?;
6484        }
6485        if self.huawei_cluster_culling_shader {
6486            if !first {
6487                write!(f, ", ")?
6488            } else {
6489                first = false;
6490            }
6491            f.write_str("VK_HUAWEI_cluster_culling_shader")?;
6492        }
6493        if self.huawei_invocation_mask {
6494            if !first {
6495                write!(f, ", ")?
6496            } else {
6497                first = false;
6498            }
6499            f.write_str("VK_HUAWEI_invocation_mask")?;
6500        }
6501        if self.huawei_subpass_shading {
6502            if !first {
6503                write!(f, ", ")?
6504            } else {
6505                first = false;
6506            }
6507            f.write_str("VK_HUAWEI_subpass_shading")?;
6508        }
6509        if self.img_filter_cubic {
6510            if !first {
6511                write!(f, ", ")?
6512            } else {
6513                first = false;
6514            }
6515            f.write_str("VK_IMG_filter_cubic")?;
6516        }
6517        if self.img_format_pvrtc {
6518            if !first {
6519                write!(f, ", ")?
6520            } else {
6521                first = false;
6522            }
6523            f.write_str("VK_IMG_format_pvrtc")?;
6524        }
6525        if self.img_relaxed_line_rasterization {
6526            if !first {
6527                write!(f, ", ")?
6528            } else {
6529                first = false;
6530            }
6531            f.write_str("VK_IMG_relaxed_line_rasterization")?;
6532        }
6533        if self.intel_performance_query {
6534            if !first {
6535                write!(f, ", ")?
6536            } else {
6537                first = false;
6538            }
6539            f.write_str("VK_INTEL_performance_query")?;
6540        }
6541        if self.intel_shader_integer_functions2 {
6542            if !first {
6543                write!(f, ", ")?
6544            } else {
6545                first = false;
6546            }
6547            f.write_str("VK_INTEL_shader_integer_functions2")?;
6548        }
6549        if self.msft_layered_driver {
6550            if !first {
6551                write!(f, ", ")?
6552            } else {
6553                first = false;
6554            }
6555            f.write_str("VK_MSFT_layered_driver")?;
6556        }
6557        if self.nvx_binary_import {
6558            if !first {
6559                write!(f, ", ")?
6560            } else {
6561                first = false;
6562            }
6563            f.write_str("VK_NVX_binary_import")?;
6564        }
6565        if self.nvx_image_view_handle {
6566            if !first {
6567                write!(f, ", ")?
6568            } else {
6569                first = false;
6570            }
6571            f.write_str("VK_NVX_image_view_handle")?;
6572        }
6573        if self.nvx_multiview_per_view_attributes {
6574            if !first {
6575                write!(f, ", ")?
6576            } else {
6577                first = false;
6578            }
6579            f.write_str("VK_NVX_multiview_per_view_attributes")?;
6580        }
6581        if self.nv_acquire_winrt_display {
6582            if !first {
6583                write!(f, ", ")?
6584            } else {
6585                first = false;
6586            }
6587            f.write_str("VK_NV_acquire_winrt_display")?;
6588        }
6589        if self.nv_clip_space_w_scaling {
6590            if !first {
6591                write!(f, ", ")?
6592            } else {
6593                first = false;
6594            }
6595            f.write_str("VK_NV_clip_space_w_scaling")?;
6596        }
6597        if self.nv_compute_shader_derivatives {
6598            if !first {
6599                write!(f, ", ")?
6600            } else {
6601                first = false;
6602            }
6603            f.write_str("VK_NV_compute_shader_derivatives")?;
6604        }
6605        if self.nv_cooperative_matrix {
6606            if !first {
6607                write!(f, ", ")?
6608            } else {
6609                first = false;
6610            }
6611            f.write_str("VK_NV_cooperative_matrix")?;
6612        }
6613        if self.nv_copy_memory_indirect {
6614            if !first {
6615                write!(f, ", ")?
6616            } else {
6617                first = false;
6618            }
6619            f.write_str("VK_NV_copy_memory_indirect")?;
6620        }
6621        if self.nv_corner_sampled_image {
6622            if !first {
6623                write!(f, ", ")?
6624            } else {
6625                first = false;
6626            }
6627            f.write_str("VK_NV_corner_sampled_image")?;
6628        }
6629        if self.nv_coverage_reduction_mode {
6630            if !first {
6631                write!(f, ", ")?
6632            } else {
6633                first = false;
6634            }
6635            f.write_str("VK_NV_coverage_reduction_mode")?;
6636        }
6637        if self.nv_cuda_kernel_launch {
6638            if !first {
6639                write!(f, ", ")?
6640            } else {
6641                first = false;
6642            }
6643            f.write_str("VK_NV_cuda_kernel_launch")?;
6644        }
6645        if self.nv_dedicated_allocation {
6646            if !first {
6647                write!(f, ", ")?
6648            } else {
6649                first = false;
6650            }
6651            f.write_str("VK_NV_dedicated_allocation")?;
6652        }
6653        if self.nv_dedicated_allocation_image_aliasing {
6654            if !first {
6655                write!(f, ", ")?
6656            } else {
6657                first = false;
6658            }
6659            f.write_str("VK_NV_dedicated_allocation_image_aliasing")?;
6660        }
6661        if self.nv_descriptor_pool_overallocation {
6662            if !first {
6663                write!(f, ", ")?
6664            } else {
6665                first = false;
6666            }
6667            f.write_str("VK_NV_descriptor_pool_overallocation")?;
6668        }
6669        if self.nv_device_diagnostic_checkpoints {
6670            if !first {
6671                write!(f, ", ")?
6672            } else {
6673                first = false;
6674            }
6675            f.write_str("VK_NV_device_diagnostic_checkpoints")?;
6676        }
6677        if self.nv_device_diagnostics_config {
6678            if !first {
6679                write!(f, ", ")?
6680            } else {
6681                first = false;
6682            }
6683            f.write_str("VK_NV_device_diagnostics_config")?;
6684        }
6685        if self.nv_device_generated_commands {
6686            if !first {
6687                write!(f, ", ")?
6688            } else {
6689                first = false;
6690            }
6691            f.write_str("VK_NV_device_generated_commands")?;
6692        }
6693        if self.nv_device_generated_commands_compute {
6694            if !first {
6695                write!(f, ", ")?
6696            } else {
6697                first = false;
6698            }
6699            f.write_str("VK_NV_device_generated_commands_compute")?;
6700        }
6701        if self.nv_displacement_micromap {
6702            if !first {
6703                write!(f, ", ")?
6704            } else {
6705                first = false;
6706            }
6707            f.write_str("VK_NV_displacement_micromap")?;
6708        }
6709        if self.nv_extended_sparse_address_space {
6710            if !first {
6711                write!(f, ", ")?
6712            } else {
6713                first = false;
6714            }
6715            f.write_str("VK_NV_extended_sparse_address_space")?;
6716        }
6717        if self.nv_external_memory {
6718            if !first {
6719                write!(f, ", ")?
6720            } else {
6721                first = false;
6722            }
6723            f.write_str("VK_NV_external_memory")?;
6724        }
6725        if self.nv_external_memory_rdma {
6726            if !first {
6727                write!(f, ", ")?
6728            } else {
6729                first = false;
6730            }
6731            f.write_str("VK_NV_external_memory_rdma")?;
6732        }
6733        if self.nv_external_memory_win32 {
6734            if !first {
6735                write!(f, ", ")?
6736            } else {
6737                first = false;
6738            }
6739            f.write_str("VK_NV_external_memory_win32")?;
6740        }
6741        if self.nv_fill_rectangle {
6742            if !first {
6743                write!(f, ", ")?
6744            } else {
6745                first = false;
6746            }
6747            f.write_str("VK_NV_fill_rectangle")?;
6748        }
6749        if self.nv_fragment_coverage_to_color {
6750            if !first {
6751                write!(f, ", ")?
6752            } else {
6753                first = false;
6754            }
6755            f.write_str("VK_NV_fragment_coverage_to_color")?;
6756        }
6757        if self.nv_fragment_shader_barycentric {
6758            if !first {
6759                write!(f, ", ")?
6760            } else {
6761                first = false;
6762            }
6763            f.write_str("VK_NV_fragment_shader_barycentric")?;
6764        }
6765        if self.nv_fragment_shading_rate_enums {
6766            if !first {
6767                write!(f, ", ")?
6768            } else {
6769                first = false;
6770            }
6771            f.write_str("VK_NV_fragment_shading_rate_enums")?;
6772        }
6773        if self.nv_framebuffer_mixed_samples {
6774            if !first {
6775                write!(f, ", ")?
6776            } else {
6777                first = false;
6778            }
6779            f.write_str("VK_NV_framebuffer_mixed_samples")?;
6780        }
6781        if self.nv_geometry_shader_passthrough {
6782            if !first {
6783                write!(f, ", ")?
6784            } else {
6785                first = false;
6786            }
6787            f.write_str("VK_NV_geometry_shader_passthrough")?;
6788        }
6789        if self.nv_glsl_shader {
6790            if !first {
6791                write!(f, ", ")?
6792            } else {
6793                first = false;
6794            }
6795            f.write_str("VK_NV_glsl_shader")?;
6796        }
6797        if self.nv_inherited_viewport_scissor {
6798            if !first {
6799                write!(f, ", ")?
6800            } else {
6801                first = false;
6802            }
6803            f.write_str("VK_NV_inherited_viewport_scissor")?;
6804        }
6805        if self.nv_linear_color_attachment {
6806            if !first {
6807                write!(f, ", ")?
6808            } else {
6809                first = false;
6810            }
6811            f.write_str("VK_NV_linear_color_attachment")?;
6812        }
6813        if self.nv_low_latency {
6814            if !first {
6815                write!(f, ", ")?
6816            } else {
6817                first = false;
6818            }
6819            f.write_str("VK_NV_low_latency")?;
6820        }
6821        if self.nv_low_latency2 {
6822            if !first {
6823                write!(f, ", ")?
6824            } else {
6825                first = false;
6826            }
6827            f.write_str("VK_NV_low_latency2")?;
6828        }
6829        if self.nv_memory_decompression {
6830            if !first {
6831                write!(f, ", ")?
6832            } else {
6833                first = false;
6834            }
6835            f.write_str("VK_NV_memory_decompression")?;
6836        }
6837        if self.nv_mesh_shader {
6838            if !first {
6839                write!(f, ", ")?
6840            } else {
6841                first = false;
6842            }
6843            f.write_str("VK_NV_mesh_shader")?;
6844        }
6845        if self.nv_optical_flow {
6846            if !first {
6847                write!(f, ", ")?
6848            } else {
6849                first = false;
6850            }
6851            f.write_str("VK_NV_optical_flow")?;
6852        }
6853        if self.nv_per_stage_descriptor_set {
6854            if !first {
6855                write!(f, ", ")?
6856            } else {
6857                first = false;
6858            }
6859            f.write_str("VK_NV_per_stage_descriptor_set")?;
6860        }
6861        if self.nv_present_barrier {
6862            if !first {
6863                write!(f, ", ")?
6864            } else {
6865                first = false;
6866            }
6867            f.write_str("VK_NV_present_barrier")?;
6868        }
6869        if self.nv_raw_access_chains {
6870            if !first {
6871                write!(f, ", ")?
6872            } else {
6873                first = false;
6874            }
6875            f.write_str("VK_NV_raw_access_chains")?;
6876        }
6877        if self.nv_ray_tracing {
6878            if !first {
6879                write!(f, ", ")?
6880            } else {
6881                first = false;
6882            }
6883            f.write_str("VK_NV_ray_tracing")?;
6884        }
6885        if self.nv_ray_tracing_invocation_reorder {
6886            if !first {
6887                write!(f, ", ")?
6888            } else {
6889                first = false;
6890            }
6891            f.write_str("VK_NV_ray_tracing_invocation_reorder")?;
6892        }
6893        if self.nv_ray_tracing_motion_blur {
6894            if !first {
6895                write!(f, ", ")?
6896            } else {
6897                first = false;
6898            }
6899            f.write_str("VK_NV_ray_tracing_motion_blur")?;
6900        }
6901        if self.nv_ray_tracing_validation {
6902            if !first {
6903                write!(f, ", ")?
6904            } else {
6905                first = false;
6906            }
6907            f.write_str("VK_NV_ray_tracing_validation")?;
6908        }
6909        if self.nv_representative_fragment_test {
6910            if !first {
6911                write!(f, ", ")?
6912            } else {
6913                first = false;
6914            }
6915            f.write_str("VK_NV_representative_fragment_test")?;
6916        }
6917        if self.nv_sample_mask_override_coverage {
6918            if !first {
6919                write!(f, ", ")?
6920            } else {
6921                first = false;
6922            }
6923            f.write_str("VK_NV_sample_mask_override_coverage")?;
6924        }
6925        if self.nv_scissor_exclusive {
6926            if !first {
6927                write!(f, ", ")?
6928            } else {
6929                first = false;
6930            }
6931            f.write_str("VK_NV_scissor_exclusive")?;
6932        }
6933        if self.nv_shader_atomic_float16_vector {
6934            if !first {
6935                write!(f, ", ")?
6936            } else {
6937                first = false;
6938            }
6939            f.write_str("VK_NV_shader_atomic_float16_vector")?;
6940        }
6941        if self.nv_shader_image_footprint {
6942            if !first {
6943                write!(f, ", ")?
6944            } else {
6945                first = false;
6946            }
6947            f.write_str("VK_NV_shader_image_footprint")?;
6948        }
6949        if self.nv_shader_sm_builtins {
6950            if !first {
6951                write!(f, ", ")?
6952            } else {
6953                first = false;
6954            }
6955            f.write_str("VK_NV_shader_sm_builtins")?;
6956        }
6957        if self.nv_shader_subgroup_partitioned {
6958            if !first {
6959                write!(f, ", ")?
6960            } else {
6961                first = false;
6962            }
6963            f.write_str("VK_NV_shader_subgroup_partitioned")?;
6964        }
6965        if self.nv_shading_rate_image {
6966            if !first {
6967                write!(f, ", ")?
6968            } else {
6969                first = false;
6970            }
6971            f.write_str("VK_NV_shading_rate_image")?;
6972        }
6973        if self.nv_viewport_array2 {
6974            if !first {
6975                write!(f, ", ")?
6976            } else {
6977                first = false;
6978            }
6979            f.write_str("VK_NV_viewport_array2")?;
6980        }
6981        if self.nv_viewport_swizzle {
6982            if !first {
6983                write!(f, ", ")?
6984            } else {
6985                first = false;
6986            }
6987            f.write_str("VK_NV_viewport_swizzle")?;
6988        }
6989        if self.nv_win32_keyed_mutex {
6990            if !first {
6991                write!(f, ", ")?
6992            } else {
6993                first = false;
6994            }
6995            f.write_str("VK_NV_win32_keyed_mutex")?;
6996        }
6997        if self.qcom_filter_cubic_clamp {
6998            if !first {
6999                write!(f, ", ")?
7000            } else {
7001                first = false;
7002            }
7003            f.write_str("VK_QCOM_filter_cubic_clamp")?;
7004        }
7005        if self.qcom_filter_cubic_weights {
7006            if !first {
7007                write!(f, ", ")?
7008            } else {
7009                first = false;
7010            }
7011            f.write_str("VK_QCOM_filter_cubic_weights")?;
7012        }
7013        if self.qcom_fragment_density_map_offset {
7014            if !first {
7015                write!(f, ", ")?
7016            } else {
7017                first = false;
7018            }
7019            f.write_str("VK_QCOM_fragment_density_map_offset")?;
7020        }
7021        if self.qcom_image_processing {
7022            if !first {
7023                write!(f, ", ")?
7024            } else {
7025                first = false;
7026            }
7027            f.write_str("VK_QCOM_image_processing")?;
7028        }
7029        if self.qcom_image_processing2 {
7030            if !first {
7031                write!(f, ", ")?
7032            } else {
7033                first = false;
7034            }
7035            f.write_str("VK_QCOM_image_processing2")?;
7036        }
7037        if self.qcom_multiview_per_view_render_areas {
7038            if !first {
7039                write!(f, ", ")?
7040            } else {
7041                first = false;
7042            }
7043            f.write_str("VK_QCOM_multiview_per_view_render_areas")?;
7044        }
7045        if self.qcom_multiview_per_view_viewports {
7046            if !first {
7047                write!(f, ", ")?
7048            } else {
7049                first = false;
7050            }
7051            f.write_str("VK_QCOM_multiview_per_view_viewports")?;
7052        }
7053        if self.qcom_render_pass_shader_resolve {
7054            if !first {
7055                write!(f, ", ")?
7056            } else {
7057                first = false;
7058            }
7059            f.write_str("VK_QCOM_render_pass_shader_resolve")?;
7060        }
7061        if self.qcom_render_pass_store_ops {
7062            if !first {
7063                write!(f, ", ")?
7064            } else {
7065                first = false;
7066            }
7067            f.write_str("VK_QCOM_render_pass_store_ops")?;
7068        }
7069        if self.qcom_render_pass_transform {
7070            if !first {
7071                write!(f, ", ")?
7072            } else {
7073                first = false;
7074            }
7075            f.write_str("VK_QCOM_render_pass_transform")?;
7076        }
7077        if self.qcom_rotated_copy_commands {
7078            if !first {
7079                write!(f, ", ")?
7080            } else {
7081                first = false;
7082            }
7083            f.write_str("VK_QCOM_rotated_copy_commands")?;
7084        }
7085        if self.qcom_tile_properties {
7086            if !first {
7087                write!(f, ", ")?
7088            } else {
7089                first = false;
7090            }
7091            f.write_str("VK_QCOM_tile_properties")?;
7092        }
7093        if self.qcom_ycbcr_degamma {
7094            if !first {
7095                write!(f, ", ")?
7096            } else {
7097                first = false;
7098            }
7099            f.write_str("VK_QCOM_ycbcr_degamma")?;
7100        }
7101        if self.qnx_external_memory_screen_buffer {
7102            if !first {
7103                write!(f, ", ")?
7104            } else {
7105                first = false;
7106            }
7107            f.write_str("VK_QNX_external_memory_screen_buffer")?;
7108        }
7109        if self.sec_amigo_profiling {
7110            if !first {
7111                write!(f, ", ")?
7112            } else {
7113                first = false;
7114            }
7115            f.write_str("VK_SEC_amigo_profiling")?;
7116        }
7117        if self.valve_descriptor_set_host_mapping {
7118            if !first {
7119                write!(f, ", ")?
7120            } else {
7121                first = false;
7122            }
7123            f.write_str("VK_VALVE_descriptor_set_host_mapping")?;
7124        }
7125        if self.valve_mutable_descriptor_type {
7126            if !first {
7127                write!(f, ", ")?
7128            } else {
7129                first = false;
7130            }
7131            f.write_str("VK_VALVE_mutable_descriptor_type")?;
7132        }
7133        write!(f, "]")
7134    }
7135}
7136impl<'a> FromIterator<&'a str> for DeviceExtensions {
7137    fn from_iter<I>(iter: I) -> Self
7138    where
7139        I: IntoIterator<Item = &'a str>,
7140    {
7141        let mut extensions = Self::empty();
7142        for name in iter {
7143            match name {
7144                "VK_KHR_16bit_storage" => {
7145                    extensions.khr_16bit_storage = true;
7146                }
7147                "VK_KHR_8bit_storage" => {
7148                    extensions.khr_8bit_storage = true;
7149                }
7150                "VK_KHR_acceleration_structure" => {
7151                    extensions.khr_acceleration_structure = true;
7152                }
7153                "VK_KHR_bind_memory2" => {
7154                    extensions.khr_bind_memory2 = true;
7155                }
7156                "VK_KHR_buffer_device_address" => {
7157                    extensions.khr_buffer_device_address = true;
7158                }
7159                "VK_KHR_calibrated_timestamps" => {
7160                    extensions.khr_calibrated_timestamps = true;
7161                }
7162                "VK_KHR_cooperative_matrix" => {
7163                    extensions.khr_cooperative_matrix = true;
7164                }
7165                "VK_KHR_copy_commands2" => {
7166                    extensions.khr_copy_commands2 = true;
7167                }
7168                "VK_KHR_create_renderpass2" => {
7169                    extensions.khr_create_renderpass2 = true;
7170                }
7171                "VK_KHR_dedicated_allocation" => {
7172                    extensions.khr_dedicated_allocation = true;
7173                }
7174                "VK_KHR_deferred_host_operations" => {
7175                    extensions.khr_deferred_host_operations = true;
7176                }
7177                "VK_KHR_depth_stencil_resolve" => {
7178                    extensions.khr_depth_stencil_resolve = true;
7179                }
7180                "VK_KHR_descriptor_update_template" => {
7181                    extensions.khr_descriptor_update_template = true;
7182                }
7183                "VK_KHR_device_group" => {
7184                    extensions.khr_device_group = true;
7185                }
7186                "VK_KHR_display_swapchain" => {
7187                    extensions.khr_display_swapchain = true;
7188                }
7189                "VK_KHR_draw_indirect_count" => {
7190                    extensions.khr_draw_indirect_count = true;
7191                }
7192                "VK_KHR_driver_properties" => {
7193                    extensions.khr_driver_properties = true;
7194                }
7195                "VK_KHR_dynamic_rendering" => {
7196                    extensions.khr_dynamic_rendering = true;
7197                }
7198                "VK_KHR_dynamic_rendering_local_read" => {
7199                    extensions.khr_dynamic_rendering_local_read = true;
7200                }
7201                "VK_KHR_external_fence" => {
7202                    extensions.khr_external_fence = true;
7203                }
7204                "VK_KHR_external_fence_fd" => {
7205                    extensions.khr_external_fence_fd = true;
7206                }
7207                "VK_KHR_external_fence_win32" => {
7208                    extensions.khr_external_fence_win32 = true;
7209                }
7210                "VK_KHR_external_memory" => {
7211                    extensions.khr_external_memory = true;
7212                }
7213                "VK_KHR_external_memory_fd" => {
7214                    extensions.khr_external_memory_fd = true;
7215                }
7216                "VK_KHR_external_memory_win32" => {
7217                    extensions.khr_external_memory_win32 = true;
7218                }
7219                "VK_KHR_external_semaphore" => {
7220                    extensions.khr_external_semaphore = true;
7221                }
7222                "VK_KHR_external_semaphore_fd" => {
7223                    extensions.khr_external_semaphore_fd = true;
7224                }
7225                "VK_KHR_external_semaphore_win32" => {
7226                    extensions.khr_external_semaphore_win32 = true;
7227                }
7228                "VK_KHR_format_feature_flags2" => {
7229                    extensions.khr_format_feature_flags2 = true;
7230                }
7231                "VK_KHR_fragment_shader_barycentric" => {
7232                    extensions.khr_fragment_shader_barycentric = true;
7233                }
7234                "VK_KHR_fragment_shading_rate" => {
7235                    extensions.khr_fragment_shading_rate = true;
7236                }
7237                "VK_KHR_get_memory_requirements2" => {
7238                    extensions.khr_get_memory_requirements2 = true;
7239                }
7240                "VK_KHR_global_priority" => {
7241                    extensions.khr_global_priority = true;
7242                }
7243                "VK_KHR_image_format_list" => {
7244                    extensions.khr_image_format_list = true;
7245                }
7246                "VK_KHR_imageless_framebuffer" => {
7247                    extensions.khr_imageless_framebuffer = true;
7248                }
7249                "VK_KHR_incremental_present" => {
7250                    extensions.khr_incremental_present = true;
7251                }
7252                "VK_KHR_index_type_uint8" => {
7253                    extensions.khr_index_type_uint8 = true;
7254                }
7255                "VK_KHR_line_rasterization" => {
7256                    extensions.khr_line_rasterization = true;
7257                }
7258                "VK_KHR_load_store_op_none" => {
7259                    extensions.khr_load_store_op_none = true;
7260                }
7261                "VK_KHR_maintenance1" => {
7262                    extensions.khr_maintenance1 = true;
7263                }
7264                "VK_KHR_maintenance2" => {
7265                    extensions.khr_maintenance2 = true;
7266                }
7267                "VK_KHR_maintenance3" => {
7268                    extensions.khr_maintenance3 = true;
7269                }
7270                "VK_KHR_maintenance4" => {
7271                    extensions.khr_maintenance4 = true;
7272                }
7273                "VK_KHR_maintenance5" => {
7274                    extensions.khr_maintenance5 = true;
7275                }
7276                "VK_KHR_maintenance6" => {
7277                    extensions.khr_maintenance6 = true;
7278                }
7279                "VK_KHR_map_memory2" => {
7280                    extensions.khr_map_memory2 = true;
7281                }
7282                "VK_KHR_multiview" => {
7283                    extensions.khr_multiview = true;
7284                }
7285                "VK_KHR_performance_query" => {
7286                    extensions.khr_performance_query = true;
7287                }
7288                "VK_KHR_pipeline_executable_properties" => {
7289                    extensions.khr_pipeline_executable_properties = true;
7290                }
7291                "VK_KHR_pipeline_library" => {
7292                    extensions.khr_pipeline_library = true;
7293                }
7294                "VK_KHR_portability_subset" => {
7295                    extensions.khr_portability_subset = true;
7296                }
7297                "VK_KHR_present_id" => {
7298                    extensions.khr_present_id = true;
7299                }
7300                "VK_KHR_present_wait" => {
7301                    extensions.khr_present_wait = true;
7302                }
7303                "VK_KHR_push_descriptor" => {
7304                    extensions.khr_push_descriptor = true;
7305                }
7306                "VK_KHR_ray_query" => {
7307                    extensions.khr_ray_query = true;
7308                }
7309                "VK_KHR_ray_tracing_maintenance1" => {
7310                    extensions.khr_ray_tracing_maintenance1 = true;
7311                }
7312                "VK_KHR_ray_tracing_pipeline" => {
7313                    extensions.khr_ray_tracing_pipeline = true;
7314                }
7315                "VK_KHR_ray_tracing_position_fetch" => {
7316                    extensions.khr_ray_tracing_position_fetch = true;
7317                }
7318                "VK_KHR_relaxed_block_layout" => {
7319                    extensions.khr_relaxed_block_layout = true;
7320                }
7321                "VK_KHR_sampler_mirror_clamp_to_edge" => {
7322                    extensions.khr_sampler_mirror_clamp_to_edge = true;
7323                }
7324                "VK_KHR_sampler_ycbcr_conversion" => {
7325                    extensions.khr_sampler_ycbcr_conversion = true;
7326                }
7327                "VK_KHR_separate_depth_stencil_layouts" => {
7328                    extensions.khr_separate_depth_stencil_layouts = true;
7329                }
7330                "VK_KHR_shader_atomic_int64" => {
7331                    extensions.khr_shader_atomic_int64 = true;
7332                }
7333                "VK_KHR_shader_clock" => {
7334                    extensions.khr_shader_clock = true;
7335                }
7336                "VK_KHR_shader_draw_parameters" => {
7337                    extensions.khr_shader_draw_parameters = true;
7338                }
7339                "VK_KHR_shader_expect_assume" => {
7340                    extensions.khr_shader_expect_assume = true;
7341                }
7342                "VK_KHR_shader_float16_int8" => {
7343                    extensions.khr_shader_float16_int8 = true;
7344                }
7345                "VK_KHR_shader_float_controls" => {
7346                    extensions.khr_shader_float_controls = true;
7347                }
7348                "VK_KHR_shader_float_controls2" => {
7349                    extensions.khr_shader_float_controls2 = true;
7350                }
7351                "VK_KHR_shader_integer_dot_product" => {
7352                    extensions.khr_shader_integer_dot_product = true;
7353                }
7354                "VK_KHR_shader_maximal_reconvergence" => {
7355                    extensions.khr_shader_maximal_reconvergence = true;
7356                }
7357                "VK_KHR_shader_non_semantic_info" => {
7358                    extensions.khr_shader_non_semantic_info = true;
7359                }
7360                "VK_KHR_shader_quad_control" => {
7361                    extensions.khr_shader_quad_control = true;
7362                }
7363                "VK_KHR_shader_subgroup_extended_types" => {
7364                    extensions.khr_shader_subgroup_extended_types = true;
7365                }
7366                "VK_KHR_shader_subgroup_rotate" => {
7367                    extensions.khr_shader_subgroup_rotate = true;
7368                }
7369                "VK_KHR_shader_subgroup_uniform_control_flow" => {
7370                    extensions.khr_shader_subgroup_uniform_control_flow = true;
7371                }
7372                "VK_KHR_shader_terminate_invocation" => {
7373                    extensions.khr_shader_terminate_invocation = true;
7374                }
7375                "VK_KHR_shared_presentable_image" => {
7376                    extensions.khr_shared_presentable_image = true;
7377                }
7378                "VK_KHR_spirv_1_4" => {
7379                    extensions.khr_spirv_1_4 = true;
7380                }
7381                "VK_KHR_storage_buffer_storage_class" => {
7382                    extensions.khr_storage_buffer_storage_class = true;
7383                }
7384                "VK_KHR_swapchain" => {
7385                    extensions.khr_swapchain = true;
7386                }
7387                "VK_KHR_swapchain_mutable_format" => {
7388                    extensions.khr_swapchain_mutable_format = true;
7389                }
7390                "VK_KHR_synchronization2" => {
7391                    extensions.khr_synchronization2 = true;
7392                }
7393                "VK_KHR_timeline_semaphore" => {
7394                    extensions.khr_timeline_semaphore = true;
7395                }
7396                "VK_KHR_uniform_buffer_standard_layout" => {
7397                    extensions.khr_uniform_buffer_standard_layout = true;
7398                }
7399                "VK_KHR_variable_pointers" => {
7400                    extensions.khr_variable_pointers = true;
7401                }
7402                "VK_KHR_vertex_attribute_divisor" => {
7403                    extensions.khr_vertex_attribute_divisor = true;
7404                }
7405                "VK_KHR_video_decode_av1" => {
7406                    extensions.khr_video_decode_av1 = true;
7407                }
7408                "VK_KHR_video_decode_h264" => {
7409                    extensions.khr_video_decode_h264 = true;
7410                }
7411                "VK_KHR_video_decode_h265" => {
7412                    extensions.khr_video_decode_h265 = true;
7413                }
7414                "VK_KHR_video_decode_queue" => {
7415                    extensions.khr_video_decode_queue = true;
7416                }
7417                "VK_KHR_video_encode_h264" => {
7418                    extensions.khr_video_encode_h264 = true;
7419                }
7420                "VK_KHR_video_encode_h265" => {
7421                    extensions.khr_video_encode_h265 = true;
7422                }
7423                "VK_KHR_video_encode_queue" => {
7424                    extensions.khr_video_encode_queue = true;
7425                }
7426                "VK_KHR_video_maintenance1" => {
7427                    extensions.khr_video_maintenance1 = true;
7428                }
7429                "VK_KHR_video_queue" => {
7430                    extensions.khr_video_queue = true;
7431                }
7432                "VK_KHR_vulkan_memory_model" => {
7433                    extensions.khr_vulkan_memory_model = true;
7434                }
7435                "VK_KHR_win32_keyed_mutex" => {
7436                    extensions.khr_win32_keyed_mutex = true;
7437                }
7438                "VK_KHR_workgroup_memory_explicit_layout" => {
7439                    extensions.khr_workgroup_memory_explicit_layout = true;
7440                }
7441                "VK_KHR_zero_initialize_workgroup_memory" => {
7442                    extensions.khr_zero_initialize_workgroup_memory = true;
7443                }
7444                "VK_EXT_4444_formats" => {
7445                    extensions.ext_4444_formats = true;
7446                }
7447                "VK_EXT_astc_decode_mode" => {
7448                    extensions.ext_astc_decode_mode = true;
7449                }
7450                "VK_EXT_attachment_feedback_loop_dynamic_state" => {
7451                    extensions.ext_attachment_feedback_loop_dynamic_state = true;
7452                }
7453                "VK_EXT_attachment_feedback_loop_layout" => {
7454                    extensions.ext_attachment_feedback_loop_layout = true;
7455                }
7456                "VK_EXT_blend_operation_advanced" => {
7457                    extensions.ext_blend_operation_advanced = true;
7458                }
7459                "VK_EXT_border_color_swizzle" => {
7460                    extensions.ext_border_color_swizzle = true;
7461                }
7462                "VK_EXT_buffer_device_address" => {
7463                    extensions.ext_buffer_device_address = true;
7464                }
7465                "VK_EXT_calibrated_timestamps" => {
7466                    extensions.ext_calibrated_timestamps = true;
7467                }
7468                "VK_EXT_color_write_enable" => {
7469                    extensions.ext_color_write_enable = true;
7470                }
7471                "VK_EXT_conditional_rendering" => {
7472                    extensions.ext_conditional_rendering = true;
7473                }
7474                "VK_EXT_conservative_rasterization" => {
7475                    extensions.ext_conservative_rasterization = true;
7476                }
7477                "VK_EXT_custom_border_color" => {
7478                    extensions.ext_custom_border_color = true;
7479                }
7480                "VK_EXT_debug_marker" => {
7481                    extensions.ext_debug_marker = true;
7482                }
7483                "VK_EXT_depth_bias_control" => {
7484                    extensions.ext_depth_bias_control = true;
7485                }
7486                "VK_EXT_depth_clamp_zero_one" => {
7487                    extensions.ext_depth_clamp_zero_one = true;
7488                }
7489                "VK_EXT_depth_clip_control" => {
7490                    extensions.ext_depth_clip_control = true;
7491                }
7492                "VK_EXT_depth_clip_enable" => {
7493                    extensions.ext_depth_clip_enable = true;
7494                }
7495                "VK_EXT_depth_range_unrestricted" => {
7496                    extensions.ext_depth_range_unrestricted = true;
7497                }
7498                "VK_EXT_descriptor_buffer" => {
7499                    extensions.ext_descriptor_buffer = true;
7500                }
7501                "VK_EXT_descriptor_indexing" => {
7502                    extensions.ext_descriptor_indexing = true;
7503                }
7504                "VK_EXT_device_address_binding_report" => {
7505                    extensions.ext_device_address_binding_report = true;
7506                }
7507                "VK_EXT_device_fault" => {
7508                    extensions.ext_device_fault = true;
7509                }
7510                "VK_EXT_device_memory_report" => {
7511                    extensions.ext_device_memory_report = true;
7512                }
7513                "VK_EXT_discard_rectangles" => {
7514                    extensions.ext_discard_rectangles = true;
7515                }
7516                "VK_EXT_display_control" => {
7517                    extensions.ext_display_control = true;
7518                }
7519                "VK_EXT_dynamic_rendering_unused_attachments" => {
7520                    extensions.ext_dynamic_rendering_unused_attachments = true;
7521                }
7522                "VK_EXT_extended_dynamic_state" => {
7523                    extensions.ext_extended_dynamic_state = true;
7524                }
7525                "VK_EXT_extended_dynamic_state2" => {
7526                    extensions.ext_extended_dynamic_state2 = true;
7527                }
7528                "VK_EXT_extended_dynamic_state3" => {
7529                    extensions.ext_extended_dynamic_state3 = true;
7530                }
7531                "VK_EXT_external_memory_acquire_unmodified" => {
7532                    extensions.ext_external_memory_acquire_unmodified = true;
7533                }
7534                "VK_EXT_external_memory_dma_buf" => {
7535                    extensions.ext_external_memory_dma_buf = true;
7536                }
7537                "VK_EXT_external_memory_host" => {
7538                    extensions.ext_external_memory_host = true;
7539                }
7540                "VK_EXT_filter_cubic" => {
7541                    extensions.ext_filter_cubic = true;
7542                }
7543                "VK_EXT_fragment_density_map" => {
7544                    extensions.ext_fragment_density_map = true;
7545                }
7546                "VK_EXT_fragment_density_map2" => {
7547                    extensions.ext_fragment_density_map2 = true;
7548                }
7549                "VK_EXT_fragment_shader_interlock" => {
7550                    extensions.ext_fragment_shader_interlock = true;
7551                }
7552                "VK_EXT_frame_boundary" => {
7553                    extensions.ext_frame_boundary = true;
7554                }
7555                "VK_EXT_full_screen_exclusive" => {
7556                    extensions.ext_full_screen_exclusive = true;
7557                }
7558                "VK_EXT_global_priority" => {
7559                    extensions.ext_global_priority = true;
7560                }
7561                "VK_EXT_global_priority_query" => {
7562                    extensions.ext_global_priority_query = true;
7563                }
7564                "VK_EXT_graphics_pipeline_library" => {
7565                    extensions.ext_graphics_pipeline_library = true;
7566                }
7567                "VK_EXT_hdr_metadata" => {
7568                    extensions.ext_hdr_metadata = true;
7569                }
7570                "VK_EXT_host_image_copy" => {
7571                    extensions.ext_host_image_copy = true;
7572                }
7573                "VK_EXT_host_query_reset" => {
7574                    extensions.ext_host_query_reset = true;
7575                }
7576                "VK_EXT_image_2d_view_of_3d" => {
7577                    extensions.ext_image_2d_view_of_3d = true;
7578                }
7579                "VK_EXT_image_compression_control" => {
7580                    extensions.ext_image_compression_control = true;
7581                }
7582                "VK_EXT_image_compression_control_swapchain" => {
7583                    extensions.ext_image_compression_control_swapchain = true;
7584                }
7585                "VK_EXT_image_drm_format_modifier" => {
7586                    extensions.ext_image_drm_format_modifier = true;
7587                }
7588                "VK_EXT_image_robustness" => {
7589                    extensions.ext_image_robustness = true;
7590                }
7591                "VK_EXT_image_sliced_view_of_3d" => {
7592                    extensions.ext_image_sliced_view_of_3d = true;
7593                }
7594                "VK_EXT_image_view_min_lod" => {
7595                    extensions.ext_image_view_min_lod = true;
7596                }
7597                "VK_EXT_index_type_uint8" => {
7598                    extensions.ext_index_type_uint8 = true;
7599                }
7600                "VK_EXT_inline_uniform_block" => {
7601                    extensions.ext_inline_uniform_block = true;
7602                }
7603                "VK_EXT_legacy_dithering" => {
7604                    extensions.ext_legacy_dithering = true;
7605                }
7606                "VK_EXT_line_rasterization" => {
7607                    extensions.ext_line_rasterization = true;
7608                }
7609                "VK_EXT_load_store_op_none" => {
7610                    extensions.ext_load_store_op_none = true;
7611                }
7612                "VK_EXT_map_memory_placed" => {
7613                    extensions.ext_map_memory_placed = true;
7614                }
7615                "VK_EXT_memory_budget" => {
7616                    extensions.ext_memory_budget = true;
7617                }
7618                "VK_EXT_memory_priority" => {
7619                    extensions.ext_memory_priority = true;
7620                }
7621                "VK_EXT_mesh_shader" => {
7622                    extensions.ext_mesh_shader = true;
7623                }
7624                "VK_EXT_metal_objects" => {
7625                    extensions.ext_metal_objects = true;
7626                }
7627                "VK_EXT_multi_draw" => {
7628                    extensions.ext_multi_draw = true;
7629                }
7630                "VK_EXT_multisampled_render_to_single_sampled" => {
7631                    extensions.ext_multisampled_render_to_single_sampled = true;
7632                }
7633                "VK_EXT_mutable_descriptor_type" => {
7634                    extensions.ext_mutable_descriptor_type = true;
7635                }
7636                "VK_EXT_nested_command_buffer" => {
7637                    extensions.ext_nested_command_buffer = true;
7638                }
7639                "VK_EXT_non_seamless_cube_map" => {
7640                    extensions.ext_non_seamless_cube_map = true;
7641                }
7642                "VK_EXT_opacity_micromap" => {
7643                    extensions.ext_opacity_micromap = true;
7644                }
7645                "VK_EXT_pageable_device_local_memory" => {
7646                    extensions.ext_pageable_device_local_memory = true;
7647                }
7648                "VK_EXT_pci_bus_info" => {
7649                    extensions.ext_pci_bus_info = true;
7650                }
7651                "VK_EXT_physical_device_drm" => {
7652                    extensions.ext_physical_device_drm = true;
7653                }
7654                "VK_EXT_pipeline_creation_cache_control" => {
7655                    extensions.ext_pipeline_creation_cache_control = true;
7656                }
7657                "VK_EXT_pipeline_creation_feedback" => {
7658                    extensions.ext_pipeline_creation_feedback = true;
7659                }
7660                "VK_EXT_pipeline_library_group_handles" => {
7661                    extensions.ext_pipeline_library_group_handles = true;
7662                }
7663                "VK_EXT_pipeline_properties" => {
7664                    extensions.ext_pipeline_properties = true;
7665                }
7666                "VK_EXT_pipeline_protected_access" => {
7667                    extensions.ext_pipeline_protected_access = true;
7668                }
7669                "VK_EXT_pipeline_robustness" => {
7670                    extensions.ext_pipeline_robustness = true;
7671                }
7672                "VK_EXT_post_depth_coverage" => {
7673                    extensions.ext_post_depth_coverage = true;
7674                }
7675                "VK_EXT_primitive_topology_list_restart" => {
7676                    extensions.ext_primitive_topology_list_restart = true;
7677                }
7678                "VK_EXT_primitives_generated_query" => {
7679                    extensions.ext_primitives_generated_query = true;
7680                }
7681                "VK_EXT_private_data" => {
7682                    extensions.ext_private_data = true;
7683                }
7684                "VK_EXT_provoking_vertex" => {
7685                    extensions.ext_provoking_vertex = true;
7686                }
7687                "VK_EXT_queue_family_foreign" => {
7688                    extensions.ext_queue_family_foreign = true;
7689                }
7690                "VK_EXT_rasterization_order_attachment_access" => {
7691                    extensions.ext_rasterization_order_attachment_access = true;
7692                }
7693                "VK_EXT_rgba10x6_formats" => {
7694                    extensions.ext_rgba10x6_formats = true;
7695                }
7696                "VK_EXT_robustness2" => {
7697                    extensions.ext_robustness2 = true;
7698                }
7699                "VK_EXT_sample_locations" => {
7700                    extensions.ext_sample_locations = true;
7701                }
7702                "VK_EXT_sampler_filter_minmax" => {
7703                    extensions.ext_sampler_filter_minmax = true;
7704                }
7705                "VK_EXT_scalar_block_layout" => {
7706                    extensions.ext_scalar_block_layout = true;
7707                }
7708                "VK_EXT_separate_stencil_usage" => {
7709                    extensions.ext_separate_stencil_usage = true;
7710                }
7711                "VK_EXT_shader_atomic_float" => {
7712                    extensions.ext_shader_atomic_float = true;
7713                }
7714                "VK_EXT_shader_atomic_float2" => {
7715                    extensions.ext_shader_atomic_float2 = true;
7716                }
7717                "VK_EXT_shader_demote_to_helper_invocation" => {
7718                    extensions.ext_shader_demote_to_helper_invocation = true;
7719                }
7720                "VK_EXT_shader_image_atomic_int64" => {
7721                    extensions.ext_shader_image_atomic_int64 = true;
7722                }
7723                "VK_EXT_shader_module_identifier" => {
7724                    extensions.ext_shader_module_identifier = true;
7725                }
7726                "VK_EXT_shader_object" => {
7727                    extensions.ext_shader_object = true;
7728                }
7729                "VK_EXT_shader_stencil_export" => {
7730                    extensions.ext_shader_stencil_export = true;
7731                }
7732                "VK_EXT_shader_subgroup_ballot" => {
7733                    extensions.ext_shader_subgroup_ballot = true;
7734                }
7735                "VK_EXT_shader_subgroup_vote" => {
7736                    extensions.ext_shader_subgroup_vote = true;
7737                }
7738                "VK_EXT_shader_tile_image" => {
7739                    extensions.ext_shader_tile_image = true;
7740                }
7741                "VK_EXT_shader_viewport_index_layer" => {
7742                    extensions.ext_shader_viewport_index_layer = true;
7743                }
7744                "VK_EXT_subgroup_size_control" => {
7745                    extensions.ext_subgroup_size_control = true;
7746                }
7747                "VK_EXT_subpass_merge_feedback" => {
7748                    extensions.ext_subpass_merge_feedback = true;
7749                }
7750                "VK_EXT_swapchain_maintenance1" => {
7751                    extensions.ext_swapchain_maintenance1 = true;
7752                }
7753                "VK_EXT_texel_buffer_alignment" => {
7754                    extensions.ext_texel_buffer_alignment = true;
7755                }
7756                "VK_EXT_texture_compression_astc_hdr" => {
7757                    extensions.ext_texture_compression_astc_hdr = true;
7758                }
7759                "VK_EXT_tooling_info" => {
7760                    extensions.ext_tooling_info = true;
7761                }
7762                "VK_EXT_transform_feedback" => {
7763                    extensions.ext_transform_feedback = true;
7764                }
7765                "VK_EXT_validation_cache" => {
7766                    extensions.ext_validation_cache = true;
7767                }
7768                "VK_EXT_vertex_attribute_divisor" => {
7769                    extensions.ext_vertex_attribute_divisor = true;
7770                }
7771                "VK_EXT_vertex_input_dynamic_state" => {
7772                    extensions.ext_vertex_input_dynamic_state = true;
7773                }
7774                "VK_EXT_ycbcr_2plane_444_formats" => {
7775                    extensions.ext_ycbcr_2plane_444_formats = true;
7776                }
7777                "VK_EXT_ycbcr_image_arrays" => {
7778                    extensions.ext_ycbcr_image_arrays = true;
7779                }
7780                "VK_AMDX_shader_enqueue" => {
7781                    extensions.amdx_shader_enqueue = true;
7782                }
7783                "VK_AMD_buffer_marker" => {
7784                    extensions.amd_buffer_marker = true;
7785                }
7786                "VK_AMD_device_coherent_memory" => {
7787                    extensions.amd_device_coherent_memory = true;
7788                }
7789                "VK_AMD_display_native_hdr" => {
7790                    extensions.amd_display_native_hdr = true;
7791                }
7792                "VK_AMD_draw_indirect_count" => {
7793                    extensions.amd_draw_indirect_count = true;
7794                }
7795                "VK_AMD_gcn_shader" => {
7796                    extensions.amd_gcn_shader = true;
7797                }
7798                "VK_AMD_gpu_shader_half_float" => {
7799                    extensions.amd_gpu_shader_half_float = true;
7800                }
7801                "VK_AMD_gpu_shader_int16" => {
7802                    extensions.amd_gpu_shader_int16 = true;
7803                }
7804                "VK_AMD_memory_overallocation_behavior" => {
7805                    extensions.amd_memory_overallocation_behavior = true;
7806                }
7807                "VK_AMD_mixed_attachment_samples" => {
7808                    extensions.amd_mixed_attachment_samples = true;
7809                }
7810                "VK_AMD_pipeline_compiler_control" => {
7811                    extensions.amd_pipeline_compiler_control = true;
7812                }
7813                "VK_AMD_rasterization_order" => {
7814                    extensions.amd_rasterization_order = true;
7815                }
7816                "VK_AMD_shader_ballot" => {
7817                    extensions.amd_shader_ballot = true;
7818                }
7819                "VK_AMD_shader_core_properties" => {
7820                    extensions.amd_shader_core_properties = true;
7821                }
7822                "VK_AMD_shader_core_properties2" => {
7823                    extensions.amd_shader_core_properties2 = true;
7824                }
7825                "VK_AMD_shader_early_and_late_fragment_tests" => {
7826                    extensions.amd_shader_early_and_late_fragment_tests = true;
7827                }
7828                "VK_AMD_shader_explicit_vertex_parameter" => {
7829                    extensions.amd_shader_explicit_vertex_parameter = true;
7830                }
7831                "VK_AMD_shader_fragment_mask" => {
7832                    extensions.amd_shader_fragment_mask = true;
7833                }
7834                "VK_AMD_shader_image_load_store_lod" => {
7835                    extensions.amd_shader_image_load_store_lod = true;
7836                }
7837                "VK_AMD_shader_info" => {
7838                    extensions.amd_shader_info = true;
7839                }
7840                "VK_AMD_shader_trinary_minmax" => {
7841                    extensions.amd_shader_trinary_minmax = true;
7842                }
7843                "VK_AMD_texture_gather_bias_lod" => {
7844                    extensions.amd_texture_gather_bias_lod = true;
7845                }
7846                "VK_ANDROID_external_format_resolve" => {
7847                    extensions.android_external_format_resolve = true;
7848                }
7849                "VK_ANDROID_external_memory_android_hardware_buffer" => {
7850                    extensions.android_external_memory_android_hardware_buffer = true;
7851                }
7852                "VK_ARM_rasterization_order_attachment_access" => {
7853                    extensions.arm_rasterization_order_attachment_access = true;
7854                }
7855                "VK_ARM_render_pass_striped" => {
7856                    extensions.arm_render_pass_striped = true;
7857                }
7858                "VK_ARM_scheduling_controls" => {
7859                    extensions.arm_scheduling_controls = true;
7860                }
7861                "VK_ARM_shader_core_builtins" => {
7862                    extensions.arm_shader_core_builtins = true;
7863                }
7864                "VK_ARM_shader_core_properties" => {
7865                    extensions.arm_shader_core_properties = true;
7866                }
7867                "VK_FUCHSIA_buffer_collection" => {
7868                    extensions.fuchsia_buffer_collection = true;
7869                }
7870                "VK_FUCHSIA_external_memory" => {
7871                    extensions.fuchsia_external_memory = true;
7872                }
7873                "VK_FUCHSIA_external_semaphore" => {
7874                    extensions.fuchsia_external_semaphore = true;
7875                }
7876                "VK_GGP_frame_token" => {
7877                    extensions.ggp_frame_token = true;
7878                }
7879                "VK_GOOGLE_decorate_string" => {
7880                    extensions.google_decorate_string = true;
7881                }
7882                "VK_GOOGLE_display_timing" => {
7883                    extensions.google_display_timing = true;
7884                }
7885                "VK_GOOGLE_hlsl_functionality1" => {
7886                    extensions.google_hlsl_functionality1 = true;
7887                }
7888                "VK_GOOGLE_user_type" => {
7889                    extensions.google_user_type = true;
7890                }
7891                "VK_HUAWEI_cluster_culling_shader" => {
7892                    extensions.huawei_cluster_culling_shader = true;
7893                }
7894                "VK_HUAWEI_invocation_mask" => {
7895                    extensions.huawei_invocation_mask = true;
7896                }
7897                "VK_HUAWEI_subpass_shading" => {
7898                    extensions.huawei_subpass_shading = true;
7899                }
7900                "VK_IMG_filter_cubic" => {
7901                    extensions.img_filter_cubic = true;
7902                }
7903                "VK_IMG_format_pvrtc" => {
7904                    extensions.img_format_pvrtc = true;
7905                }
7906                "VK_IMG_relaxed_line_rasterization" => {
7907                    extensions.img_relaxed_line_rasterization = true;
7908                }
7909                "VK_INTEL_performance_query" => {
7910                    extensions.intel_performance_query = true;
7911                }
7912                "VK_INTEL_shader_integer_functions2" => {
7913                    extensions.intel_shader_integer_functions2 = true;
7914                }
7915                "VK_MSFT_layered_driver" => {
7916                    extensions.msft_layered_driver = true;
7917                }
7918                "VK_NVX_binary_import" => {
7919                    extensions.nvx_binary_import = true;
7920                }
7921                "VK_NVX_image_view_handle" => {
7922                    extensions.nvx_image_view_handle = true;
7923                }
7924                "VK_NVX_multiview_per_view_attributes" => {
7925                    extensions.nvx_multiview_per_view_attributes = true;
7926                }
7927                "VK_NV_acquire_winrt_display" => {
7928                    extensions.nv_acquire_winrt_display = true;
7929                }
7930                "VK_NV_clip_space_w_scaling" => {
7931                    extensions.nv_clip_space_w_scaling = true;
7932                }
7933                "VK_NV_compute_shader_derivatives" => {
7934                    extensions.nv_compute_shader_derivatives = true;
7935                }
7936                "VK_NV_cooperative_matrix" => {
7937                    extensions.nv_cooperative_matrix = true;
7938                }
7939                "VK_NV_copy_memory_indirect" => {
7940                    extensions.nv_copy_memory_indirect = true;
7941                }
7942                "VK_NV_corner_sampled_image" => {
7943                    extensions.nv_corner_sampled_image = true;
7944                }
7945                "VK_NV_coverage_reduction_mode" => {
7946                    extensions.nv_coverage_reduction_mode = true;
7947                }
7948                "VK_NV_cuda_kernel_launch" => {
7949                    extensions.nv_cuda_kernel_launch = true;
7950                }
7951                "VK_NV_dedicated_allocation" => {
7952                    extensions.nv_dedicated_allocation = true;
7953                }
7954                "VK_NV_dedicated_allocation_image_aliasing" => {
7955                    extensions.nv_dedicated_allocation_image_aliasing = true;
7956                }
7957                "VK_NV_descriptor_pool_overallocation" => {
7958                    extensions.nv_descriptor_pool_overallocation = true;
7959                }
7960                "VK_NV_device_diagnostic_checkpoints" => {
7961                    extensions.nv_device_diagnostic_checkpoints = true;
7962                }
7963                "VK_NV_device_diagnostics_config" => {
7964                    extensions.nv_device_diagnostics_config = true;
7965                }
7966                "VK_NV_device_generated_commands" => {
7967                    extensions.nv_device_generated_commands = true;
7968                }
7969                "VK_NV_device_generated_commands_compute" => {
7970                    extensions.nv_device_generated_commands_compute = true;
7971                }
7972                "VK_NV_displacement_micromap" => {
7973                    extensions.nv_displacement_micromap = true;
7974                }
7975                "VK_NV_extended_sparse_address_space" => {
7976                    extensions.nv_extended_sparse_address_space = true;
7977                }
7978                "VK_NV_external_memory" => {
7979                    extensions.nv_external_memory = true;
7980                }
7981                "VK_NV_external_memory_rdma" => {
7982                    extensions.nv_external_memory_rdma = true;
7983                }
7984                "VK_NV_external_memory_win32" => {
7985                    extensions.nv_external_memory_win32 = true;
7986                }
7987                "VK_NV_fill_rectangle" => {
7988                    extensions.nv_fill_rectangle = true;
7989                }
7990                "VK_NV_fragment_coverage_to_color" => {
7991                    extensions.nv_fragment_coverage_to_color = true;
7992                }
7993                "VK_NV_fragment_shader_barycentric" => {
7994                    extensions.nv_fragment_shader_barycentric = true;
7995                }
7996                "VK_NV_fragment_shading_rate_enums" => {
7997                    extensions.nv_fragment_shading_rate_enums = true;
7998                }
7999                "VK_NV_framebuffer_mixed_samples" => {
8000                    extensions.nv_framebuffer_mixed_samples = true;
8001                }
8002                "VK_NV_geometry_shader_passthrough" => {
8003                    extensions.nv_geometry_shader_passthrough = true;
8004                }
8005                "VK_NV_glsl_shader" => {
8006                    extensions.nv_glsl_shader = true;
8007                }
8008                "VK_NV_inherited_viewport_scissor" => {
8009                    extensions.nv_inherited_viewport_scissor = true;
8010                }
8011                "VK_NV_linear_color_attachment" => {
8012                    extensions.nv_linear_color_attachment = true;
8013                }
8014                "VK_NV_low_latency" => {
8015                    extensions.nv_low_latency = true;
8016                }
8017                "VK_NV_low_latency2" => {
8018                    extensions.nv_low_latency2 = true;
8019                }
8020                "VK_NV_memory_decompression" => {
8021                    extensions.nv_memory_decompression = true;
8022                }
8023                "VK_NV_mesh_shader" => {
8024                    extensions.nv_mesh_shader = true;
8025                }
8026                "VK_NV_optical_flow" => {
8027                    extensions.nv_optical_flow = true;
8028                }
8029                "VK_NV_per_stage_descriptor_set" => {
8030                    extensions.nv_per_stage_descriptor_set = true;
8031                }
8032                "VK_NV_present_barrier" => {
8033                    extensions.nv_present_barrier = true;
8034                }
8035                "VK_NV_raw_access_chains" => {
8036                    extensions.nv_raw_access_chains = true;
8037                }
8038                "VK_NV_ray_tracing" => {
8039                    extensions.nv_ray_tracing = true;
8040                }
8041                "VK_NV_ray_tracing_invocation_reorder" => {
8042                    extensions.nv_ray_tracing_invocation_reorder = true;
8043                }
8044                "VK_NV_ray_tracing_motion_blur" => {
8045                    extensions.nv_ray_tracing_motion_blur = true;
8046                }
8047                "VK_NV_ray_tracing_validation" => {
8048                    extensions.nv_ray_tracing_validation = true;
8049                }
8050                "VK_NV_representative_fragment_test" => {
8051                    extensions.nv_representative_fragment_test = true;
8052                }
8053                "VK_NV_sample_mask_override_coverage" => {
8054                    extensions.nv_sample_mask_override_coverage = true;
8055                }
8056                "VK_NV_scissor_exclusive" => {
8057                    extensions.nv_scissor_exclusive = true;
8058                }
8059                "VK_NV_shader_atomic_float16_vector" => {
8060                    extensions.nv_shader_atomic_float16_vector = true;
8061                }
8062                "VK_NV_shader_image_footprint" => {
8063                    extensions.nv_shader_image_footprint = true;
8064                }
8065                "VK_NV_shader_sm_builtins" => {
8066                    extensions.nv_shader_sm_builtins = true;
8067                }
8068                "VK_NV_shader_subgroup_partitioned" => {
8069                    extensions.nv_shader_subgroup_partitioned = true;
8070                }
8071                "VK_NV_shading_rate_image" => {
8072                    extensions.nv_shading_rate_image = true;
8073                }
8074                "VK_NV_viewport_array2" => {
8075                    extensions.nv_viewport_array2 = true;
8076                }
8077                "VK_NV_viewport_swizzle" => {
8078                    extensions.nv_viewport_swizzle = true;
8079                }
8080                "VK_NV_win32_keyed_mutex" => {
8081                    extensions.nv_win32_keyed_mutex = true;
8082                }
8083                "VK_QCOM_filter_cubic_clamp" => {
8084                    extensions.qcom_filter_cubic_clamp = true;
8085                }
8086                "VK_QCOM_filter_cubic_weights" => {
8087                    extensions.qcom_filter_cubic_weights = true;
8088                }
8089                "VK_QCOM_fragment_density_map_offset" => {
8090                    extensions.qcom_fragment_density_map_offset = true;
8091                }
8092                "VK_QCOM_image_processing" => {
8093                    extensions.qcom_image_processing = true;
8094                }
8095                "VK_QCOM_image_processing2" => {
8096                    extensions.qcom_image_processing2 = true;
8097                }
8098                "VK_QCOM_multiview_per_view_render_areas" => {
8099                    extensions.qcom_multiview_per_view_render_areas = true;
8100                }
8101                "VK_QCOM_multiview_per_view_viewports" => {
8102                    extensions.qcom_multiview_per_view_viewports = true;
8103                }
8104                "VK_QCOM_render_pass_shader_resolve" => {
8105                    extensions.qcom_render_pass_shader_resolve = true;
8106                }
8107                "VK_QCOM_render_pass_store_ops" => {
8108                    extensions.qcom_render_pass_store_ops = true;
8109                }
8110                "VK_QCOM_render_pass_transform" => {
8111                    extensions.qcom_render_pass_transform = true;
8112                }
8113                "VK_QCOM_rotated_copy_commands" => {
8114                    extensions.qcom_rotated_copy_commands = true;
8115                }
8116                "VK_QCOM_tile_properties" => {
8117                    extensions.qcom_tile_properties = true;
8118                }
8119                "VK_QCOM_ycbcr_degamma" => {
8120                    extensions.qcom_ycbcr_degamma = true;
8121                }
8122                "VK_QNX_external_memory_screen_buffer" => {
8123                    extensions.qnx_external_memory_screen_buffer = true;
8124                }
8125                "VK_SEC_amigo_profiling" => {
8126                    extensions.sec_amigo_profiling = true;
8127                }
8128                "VK_VALVE_descriptor_set_host_mapping" => {
8129                    extensions.valve_descriptor_set_host_mapping = true;
8130                }
8131                "VK_VALVE_mutable_descriptor_type" => {
8132                    extensions.valve_mutable_descriptor_type = true;
8133                }
8134                _ => (),
8135            }
8136        }
8137        extensions
8138    }
8139}
8140impl<'a> From<&'a DeviceExtensions> for Vec<std::ffi::CString> {
8141    fn from(x: &'a DeviceExtensions) -> Self {
8142        let mut data = Self::new();
8143        if x.khr_16bit_storage {
8144            data.push(std::ffi::CString::new("VK_KHR_16bit_storage").unwrap());
8145        }
8146        if x.khr_8bit_storage {
8147            data.push(std::ffi::CString::new("VK_KHR_8bit_storage").unwrap());
8148        }
8149        if x.khr_acceleration_structure {
8150            data.push(std::ffi::CString::new("VK_KHR_acceleration_structure").unwrap());
8151        }
8152        if x.khr_bind_memory2 {
8153            data.push(std::ffi::CString::new("VK_KHR_bind_memory2").unwrap());
8154        }
8155        if x.khr_buffer_device_address {
8156            data.push(std::ffi::CString::new("VK_KHR_buffer_device_address").unwrap());
8157        }
8158        if x.khr_calibrated_timestamps {
8159            data.push(std::ffi::CString::new("VK_KHR_calibrated_timestamps").unwrap());
8160        }
8161        if x.khr_cooperative_matrix {
8162            data.push(std::ffi::CString::new("VK_KHR_cooperative_matrix").unwrap());
8163        }
8164        if x.khr_copy_commands2 {
8165            data.push(std::ffi::CString::new("VK_KHR_copy_commands2").unwrap());
8166        }
8167        if x.khr_create_renderpass2 {
8168            data.push(std::ffi::CString::new("VK_KHR_create_renderpass2").unwrap());
8169        }
8170        if x.khr_dedicated_allocation {
8171            data.push(std::ffi::CString::new("VK_KHR_dedicated_allocation").unwrap());
8172        }
8173        if x.khr_deferred_host_operations {
8174            data.push(std::ffi::CString::new("VK_KHR_deferred_host_operations").unwrap());
8175        }
8176        if x.khr_depth_stencil_resolve {
8177            data.push(std::ffi::CString::new("VK_KHR_depth_stencil_resolve").unwrap());
8178        }
8179        if x.khr_descriptor_update_template {
8180            data.push(std::ffi::CString::new("VK_KHR_descriptor_update_template").unwrap());
8181        }
8182        if x.khr_device_group {
8183            data.push(std::ffi::CString::new("VK_KHR_device_group").unwrap());
8184        }
8185        if x.khr_display_swapchain {
8186            data.push(std::ffi::CString::new("VK_KHR_display_swapchain").unwrap());
8187        }
8188        if x.khr_draw_indirect_count {
8189            data.push(std::ffi::CString::new("VK_KHR_draw_indirect_count").unwrap());
8190        }
8191        if x.khr_driver_properties {
8192            data.push(std::ffi::CString::new("VK_KHR_driver_properties").unwrap());
8193        }
8194        if x.khr_dynamic_rendering {
8195            data.push(std::ffi::CString::new("VK_KHR_dynamic_rendering").unwrap());
8196        }
8197        if x.khr_dynamic_rendering_local_read {
8198            data.push(std::ffi::CString::new("VK_KHR_dynamic_rendering_local_read").unwrap());
8199        }
8200        if x.khr_external_fence {
8201            data.push(std::ffi::CString::new("VK_KHR_external_fence").unwrap());
8202        }
8203        if x.khr_external_fence_fd {
8204            data.push(std::ffi::CString::new("VK_KHR_external_fence_fd").unwrap());
8205        }
8206        if x.khr_external_fence_win32 {
8207            data.push(std::ffi::CString::new("VK_KHR_external_fence_win32").unwrap());
8208        }
8209        if x.khr_external_memory {
8210            data.push(std::ffi::CString::new("VK_KHR_external_memory").unwrap());
8211        }
8212        if x.khr_external_memory_fd {
8213            data.push(std::ffi::CString::new("VK_KHR_external_memory_fd").unwrap());
8214        }
8215        if x.khr_external_memory_win32 {
8216            data.push(std::ffi::CString::new("VK_KHR_external_memory_win32").unwrap());
8217        }
8218        if x.khr_external_semaphore {
8219            data.push(std::ffi::CString::new("VK_KHR_external_semaphore").unwrap());
8220        }
8221        if x.khr_external_semaphore_fd {
8222            data.push(std::ffi::CString::new("VK_KHR_external_semaphore_fd").unwrap());
8223        }
8224        if x.khr_external_semaphore_win32 {
8225            data.push(std::ffi::CString::new("VK_KHR_external_semaphore_win32").unwrap());
8226        }
8227        if x.khr_format_feature_flags2 {
8228            data.push(std::ffi::CString::new("VK_KHR_format_feature_flags2").unwrap());
8229        }
8230        if x.khr_fragment_shader_barycentric {
8231            data.push(std::ffi::CString::new("VK_KHR_fragment_shader_barycentric").unwrap());
8232        }
8233        if x.khr_fragment_shading_rate {
8234            data.push(std::ffi::CString::new("VK_KHR_fragment_shading_rate").unwrap());
8235        }
8236        if x.khr_get_memory_requirements2 {
8237            data.push(std::ffi::CString::new("VK_KHR_get_memory_requirements2").unwrap());
8238        }
8239        if x.khr_global_priority {
8240            data.push(std::ffi::CString::new("VK_KHR_global_priority").unwrap());
8241        }
8242        if x.khr_image_format_list {
8243            data.push(std::ffi::CString::new("VK_KHR_image_format_list").unwrap());
8244        }
8245        if x.khr_imageless_framebuffer {
8246            data.push(std::ffi::CString::new("VK_KHR_imageless_framebuffer").unwrap());
8247        }
8248        if x.khr_incremental_present {
8249            data.push(std::ffi::CString::new("VK_KHR_incremental_present").unwrap());
8250        }
8251        if x.khr_index_type_uint8 {
8252            data.push(std::ffi::CString::new("VK_KHR_index_type_uint8").unwrap());
8253        }
8254        if x.khr_line_rasterization {
8255            data.push(std::ffi::CString::new("VK_KHR_line_rasterization").unwrap());
8256        }
8257        if x.khr_load_store_op_none {
8258            data.push(std::ffi::CString::new("VK_KHR_load_store_op_none").unwrap());
8259        }
8260        if x.khr_maintenance1 {
8261            data.push(std::ffi::CString::new("VK_KHR_maintenance1").unwrap());
8262        }
8263        if x.khr_maintenance2 {
8264            data.push(std::ffi::CString::new("VK_KHR_maintenance2").unwrap());
8265        }
8266        if x.khr_maintenance3 {
8267            data.push(std::ffi::CString::new("VK_KHR_maintenance3").unwrap());
8268        }
8269        if x.khr_maintenance4 {
8270            data.push(std::ffi::CString::new("VK_KHR_maintenance4").unwrap());
8271        }
8272        if x.khr_maintenance5 {
8273            data.push(std::ffi::CString::new("VK_KHR_maintenance5").unwrap());
8274        }
8275        if x.khr_maintenance6 {
8276            data.push(std::ffi::CString::new("VK_KHR_maintenance6").unwrap());
8277        }
8278        if x.khr_map_memory2 {
8279            data.push(std::ffi::CString::new("VK_KHR_map_memory2").unwrap());
8280        }
8281        if x.khr_multiview {
8282            data.push(std::ffi::CString::new("VK_KHR_multiview").unwrap());
8283        }
8284        if x.khr_performance_query {
8285            data.push(std::ffi::CString::new("VK_KHR_performance_query").unwrap());
8286        }
8287        if x.khr_pipeline_executable_properties {
8288            data.push(std::ffi::CString::new("VK_KHR_pipeline_executable_properties").unwrap());
8289        }
8290        if x.khr_pipeline_library {
8291            data.push(std::ffi::CString::new("VK_KHR_pipeline_library").unwrap());
8292        }
8293        if x.khr_portability_subset {
8294            data.push(std::ffi::CString::new("VK_KHR_portability_subset").unwrap());
8295        }
8296        if x.khr_present_id {
8297            data.push(std::ffi::CString::new("VK_KHR_present_id").unwrap());
8298        }
8299        if x.khr_present_wait {
8300            data.push(std::ffi::CString::new("VK_KHR_present_wait").unwrap());
8301        }
8302        if x.khr_push_descriptor {
8303            data.push(std::ffi::CString::new("VK_KHR_push_descriptor").unwrap());
8304        }
8305        if x.khr_ray_query {
8306            data.push(std::ffi::CString::new("VK_KHR_ray_query").unwrap());
8307        }
8308        if x.khr_ray_tracing_maintenance1 {
8309            data.push(std::ffi::CString::new("VK_KHR_ray_tracing_maintenance1").unwrap());
8310        }
8311        if x.khr_ray_tracing_pipeline {
8312            data.push(std::ffi::CString::new("VK_KHR_ray_tracing_pipeline").unwrap());
8313        }
8314        if x.khr_ray_tracing_position_fetch {
8315            data.push(std::ffi::CString::new("VK_KHR_ray_tracing_position_fetch").unwrap());
8316        }
8317        if x.khr_relaxed_block_layout {
8318            data.push(std::ffi::CString::new("VK_KHR_relaxed_block_layout").unwrap());
8319        }
8320        if x.khr_sampler_mirror_clamp_to_edge {
8321            data.push(std::ffi::CString::new("VK_KHR_sampler_mirror_clamp_to_edge").unwrap());
8322        }
8323        if x.khr_sampler_ycbcr_conversion {
8324            data.push(std::ffi::CString::new("VK_KHR_sampler_ycbcr_conversion").unwrap());
8325        }
8326        if x.khr_separate_depth_stencil_layouts {
8327            data.push(std::ffi::CString::new("VK_KHR_separate_depth_stencil_layouts").unwrap());
8328        }
8329        if x.khr_shader_atomic_int64 {
8330            data.push(std::ffi::CString::new("VK_KHR_shader_atomic_int64").unwrap());
8331        }
8332        if x.khr_shader_clock {
8333            data.push(std::ffi::CString::new("VK_KHR_shader_clock").unwrap());
8334        }
8335        if x.khr_shader_draw_parameters {
8336            data.push(std::ffi::CString::new("VK_KHR_shader_draw_parameters").unwrap());
8337        }
8338        if x.khr_shader_expect_assume {
8339            data.push(std::ffi::CString::new("VK_KHR_shader_expect_assume").unwrap());
8340        }
8341        if x.khr_shader_float16_int8 {
8342            data.push(std::ffi::CString::new("VK_KHR_shader_float16_int8").unwrap());
8343        }
8344        if x.khr_shader_float_controls {
8345            data.push(std::ffi::CString::new("VK_KHR_shader_float_controls").unwrap());
8346        }
8347        if x.khr_shader_float_controls2 {
8348            data.push(std::ffi::CString::new("VK_KHR_shader_float_controls2").unwrap());
8349        }
8350        if x.khr_shader_integer_dot_product {
8351            data.push(std::ffi::CString::new("VK_KHR_shader_integer_dot_product").unwrap());
8352        }
8353        if x.khr_shader_maximal_reconvergence {
8354            data.push(std::ffi::CString::new("VK_KHR_shader_maximal_reconvergence").unwrap());
8355        }
8356        if x.khr_shader_non_semantic_info {
8357            data.push(std::ffi::CString::new("VK_KHR_shader_non_semantic_info").unwrap());
8358        }
8359        if x.khr_shader_quad_control {
8360            data.push(std::ffi::CString::new("VK_KHR_shader_quad_control").unwrap());
8361        }
8362        if x.khr_shader_subgroup_extended_types {
8363            data.push(std::ffi::CString::new("VK_KHR_shader_subgroup_extended_types").unwrap());
8364        }
8365        if x.khr_shader_subgroup_rotate {
8366            data.push(std::ffi::CString::new("VK_KHR_shader_subgroup_rotate").unwrap());
8367        }
8368        if x.khr_shader_subgroup_uniform_control_flow {
8369            data.push(
8370                std::ffi::CString::new("VK_KHR_shader_subgroup_uniform_control_flow").unwrap(),
8371            );
8372        }
8373        if x.khr_shader_terminate_invocation {
8374            data.push(std::ffi::CString::new("VK_KHR_shader_terminate_invocation").unwrap());
8375        }
8376        if x.khr_shared_presentable_image {
8377            data.push(std::ffi::CString::new("VK_KHR_shared_presentable_image").unwrap());
8378        }
8379        if x.khr_spirv_1_4 {
8380            data.push(std::ffi::CString::new("VK_KHR_spirv_1_4").unwrap());
8381        }
8382        if x.khr_storage_buffer_storage_class {
8383            data.push(std::ffi::CString::new("VK_KHR_storage_buffer_storage_class").unwrap());
8384        }
8385        if x.khr_swapchain {
8386            data.push(std::ffi::CString::new("VK_KHR_swapchain").unwrap());
8387        }
8388        if x.khr_swapchain_mutable_format {
8389            data.push(std::ffi::CString::new("VK_KHR_swapchain_mutable_format").unwrap());
8390        }
8391        if x.khr_synchronization2 {
8392            data.push(std::ffi::CString::new("VK_KHR_synchronization2").unwrap());
8393        }
8394        if x.khr_timeline_semaphore {
8395            data.push(std::ffi::CString::new("VK_KHR_timeline_semaphore").unwrap());
8396        }
8397        if x.khr_uniform_buffer_standard_layout {
8398            data.push(std::ffi::CString::new("VK_KHR_uniform_buffer_standard_layout").unwrap());
8399        }
8400        if x.khr_variable_pointers {
8401            data.push(std::ffi::CString::new("VK_KHR_variable_pointers").unwrap());
8402        }
8403        if x.khr_vertex_attribute_divisor {
8404            data.push(std::ffi::CString::new("VK_KHR_vertex_attribute_divisor").unwrap());
8405        }
8406        if x.khr_video_decode_av1 {
8407            data.push(std::ffi::CString::new("VK_KHR_video_decode_av1").unwrap());
8408        }
8409        if x.khr_video_decode_h264 {
8410            data.push(std::ffi::CString::new("VK_KHR_video_decode_h264").unwrap());
8411        }
8412        if x.khr_video_decode_h265 {
8413            data.push(std::ffi::CString::new("VK_KHR_video_decode_h265").unwrap());
8414        }
8415        if x.khr_video_decode_queue {
8416            data.push(std::ffi::CString::new("VK_KHR_video_decode_queue").unwrap());
8417        }
8418        if x.khr_video_encode_h264 {
8419            data.push(std::ffi::CString::new("VK_KHR_video_encode_h264").unwrap());
8420        }
8421        if x.khr_video_encode_h265 {
8422            data.push(std::ffi::CString::new("VK_KHR_video_encode_h265").unwrap());
8423        }
8424        if x.khr_video_encode_queue {
8425            data.push(std::ffi::CString::new("VK_KHR_video_encode_queue").unwrap());
8426        }
8427        if x.khr_video_maintenance1 {
8428            data.push(std::ffi::CString::new("VK_KHR_video_maintenance1").unwrap());
8429        }
8430        if x.khr_video_queue {
8431            data.push(std::ffi::CString::new("VK_KHR_video_queue").unwrap());
8432        }
8433        if x.khr_vulkan_memory_model {
8434            data.push(std::ffi::CString::new("VK_KHR_vulkan_memory_model").unwrap());
8435        }
8436        if x.khr_win32_keyed_mutex {
8437            data.push(std::ffi::CString::new("VK_KHR_win32_keyed_mutex").unwrap());
8438        }
8439        if x.khr_workgroup_memory_explicit_layout {
8440            data.push(std::ffi::CString::new("VK_KHR_workgroup_memory_explicit_layout").unwrap());
8441        }
8442        if x.khr_zero_initialize_workgroup_memory {
8443            data.push(std::ffi::CString::new("VK_KHR_zero_initialize_workgroup_memory").unwrap());
8444        }
8445        if x.ext_4444_formats {
8446            data.push(std::ffi::CString::new("VK_EXT_4444_formats").unwrap());
8447        }
8448        if x.ext_astc_decode_mode {
8449            data.push(std::ffi::CString::new("VK_EXT_astc_decode_mode").unwrap());
8450        }
8451        if x.ext_attachment_feedback_loop_dynamic_state {
8452            data.push(
8453                std::ffi::CString::new("VK_EXT_attachment_feedback_loop_dynamic_state").unwrap(),
8454            );
8455        }
8456        if x.ext_attachment_feedback_loop_layout {
8457            data.push(std::ffi::CString::new("VK_EXT_attachment_feedback_loop_layout").unwrap());
8458        }
8459        if x.ext_blend_operation_advanced {
8460            data.push(std::ffi::CString::new("VK_EXT_blend_operation_advanced").unwrap());
8461        }
8462        if x.ext_border_color_swizzle {
8463            data.push(std::ffi::CString::new("VK_EXT_border_color_swizzle").unwrap());
8464        }
8465        if x.ext_buffer_device_address {
8466            data.push(std::ffi::CString::new("VK_EXT_buffer_device_address").unwrap());
8467        }
8468        if x.ext_calibrated_timestamps {
8469            data.push(std::ffi::CString::new("VK_EXT_calibrated_timestamps").unwrap());
8470        }
8471        if x.ext_color_write_enable {
8472            data.push(std::ffi::CString::new("VK_EXT_color_write_enable").unwrap());
8473        }
8474        if x.ext_conditional_rendering {
8475            data.push(std::ffi::CString::new("VK_EXT_conditional_rendering").unwrap());
8476        }
8477        if x.ext_conservative_rasterization {
8478            data.push(std::ffi::CString::new("VK_EXT_conservative_rasterization").unwrap());
8479        }
8480        if x.ext_custom_border_color {
8481            data.push(std::ffi::CString::new("VK_EXT_custom_border_color").unwrap());
8482        }
8483        if x.ext_debug_marker {
8484            data.push(std::ffi::CString::new("VK_EXT_debug_marker").unwrap());
8485        }
8486        if x.ext_depth_bias_control {
8487            data.push(std::ffi::CString::new("VK_EXT_depth_bias_control").unwrap());
8488        }
8489        if x.ext_depth_clamp_zero_one {
8490            data.push(std::ffi::CString::new("VK_EXT_depth_clamp_zero_one").unwrap());
8491        }
8492        if x.ext_depth_clip_control {
8493            data.push(std::ffi::CString::new("VK_EXT_depth_clip_control").unwrap());
8494        }
8495        if x.ext_depth_clip_enable {
8496            data.push(std::ffi::CString::new("VK_EXT_depth_clip_enable").unwrap());
8497        }
8498        if x.ext_depth_range_unrestricted {
8499            data.push(std::ffi::CString::new("VK_EXT_depth_range_unrestricted").unwrap());
8500        }
8501        if x.ext_descriptor_buffer {
8502            data.push(std::ffi::CString::new("VK_EXT_descriptor_buffer").unwrap());
8503        }
8504        if x.ext_descriptor_indexing {
8505            data.push(std::ffi::CString::new("VK_EXT_descriptor_indexing").unwrap());
8506        }
8507        if x.ext_device_address_binding_report {
8508            data.push(std::ffi::CString::new("VK_EXT_device_address_binding_report").unwrap());
8509        }
8510        if x.ext_device_fault {
8511            data.push(std::ffi::CString::new("VK_EXT_device_fault").unwrap());
8512        }
8513        if x.ext_device_memory_report {
8514            data.push(std::ffi::CString::new("VK_EXT_device_memory_report").unwrap());
8515        }
8516        if x.ext_discard_rectangles {
8517            data.push(std::ffi::CString::new("VK_EXT_discard_rectangles").unwrap());
8518        }
8519        if x.ext_display_control {
8520            data.push(std::ffi::CString::new("VK_EXT_display_control").unwrap());
8521        }
8522        if x.ext_dynamic_rendering_unused_attachments {
8523            data.push(
8524                std::ffi::CString::new("VK_EXT_dynamic_rendering_unused_attachments").unwrap(),
8525            );
8526        }
8527        if x.ext_extended_dynamic_state {
8528            data.push(std::ffi::CString::new("VK_EXT_extended_dynamic_state").unwrap());
8529        }
8530        if x.ext_extended_dynamic_state2 {
8531            data.push(std::ffi::CString::new("VK_EXT_extended_dynamic_state2").unwrap());
8532        }
8533        if x.ext_extended_dynamic_state3 {
8534            data.push(std::ffi::CString::new("VK_EXT_extended_dynamic_state3").unwrap());
8535        }
8536        if x.ext_external_memory_acquire_unmodified {
8537            data.push(std::ffi::CString::new("VK_EXT_external_memory_acquire_unmodified").unwrap());
8538        }
8539        if x.ext_external_memory_dma_buf {
8540            data.push(std::ffi::CString::new("VK_EXT_external_memory_dma_buf").unwrap());
8541        }
8542        if x.ext_external_memory_host {
8543            data.push(std::ffi::CString::new("VK_EXT_external_memory_host").unwrap());
8544        }
8545        if x.ext_filter_cubic {
8546            data.push(std::ffi::CString::new("VK_EXT_filter_cubic").unwrap());
8547        }
8548        if x.ext_fragment_density_map {
8549            data.push(std::ffi::CString::new("VK_EXT_fragment_density_map").unwrap());
8550        }
8551        if x.ext_fragment_density_map2 {
8552            data.push(std::ffi::CString::new("VK_EXT_fragment_density_map2").unwrap());
8553        }
8554        if x.ext_fragment_shader_interlock {
8555            data.push(std::ffi::CString::new("VK_EXT_fragment_shader_interlock").unwrap());
8556        }
8557        if x.ext_frame_boundary {
8558            data.push(std::ffi::CString::new("VK_EXT_frame_boundary").unwrap());
8559        }
8560        if x.ext_full_screen_exclusive {
8561            data.push(std::ffi::CString::new("VK_EXT_full_screen_exclusive").unwrap());
8562        }
8563        if x.ext_global_priority {
8564            data.push(std::ffi::CString::new("VK_EXT_global_priority").unwrap());
8565        }
8566        if x.ext_global_priority_query {
8567            data.push(std::ffi::CString::new("VK_EXT_global_priority_query").unwrap());
8568        }
8569        if x.ext_graphics_pipeline_library {
8570            data.push(std::ffi::CString::new("VK_EXT_graphics_pipeline_library").unwrap());
8571        }
8572        if x.ext_hdr_metadata {
8573            data.push(std::ffi::CString::new("VK_EXT_hdr_metadata").unwrap());
8574        }
8575        if x.ext_host_image_copy {
8576            data.push(std::ffi::CString::new("VK_EXT_host_image_copy").unwrap());
8577        }
8578        if x.ext_host_query_reset {
8579            data.push(std::ffi::CString::new("VK_EXT_host_query_reset").unwrap());
8580        }
8581        if x.ext_image_2d_view_of_3d {
8582            data.push(std::ffi::CString::new("VK_EXT_image_2d_view_of_3d").unwrap());
8583        }
8584        if x.ext_image_compression_control {
8585            data.push(std::ffi::CString::new("VK_EXT_image_compression_control").unwrap());
8586        }
8587        if x.ext_image_compression_control_swapchain {
8588            data.push(
8589                std::ffi::CString::new("VK_EXT_image_compression_control_swapchain").unwrap(),
8590            );
8591        }
8592        if x.ext_image_drm_format_modifier {
8593            data.push(std::ffi::CString::new("VK_EXT_image_drm_format_modifier").unwrap());
8594        }
8595        if x.ext_image_robustness {
8596            data.push(std::ffi::CString::new("VK_EXT_image_robustness").unwrap());
8597        }
8598        if x.ext_image_sliced_view_of_3d {
8599            data.push(std::ffi::CString::new("VK_EXT_image_sliced_view_of_3d").unwrap());
8600        }
8601        if x.ext_image_view_min_lod {
8602            data.push(std::ffi::CString::new("VK_EXT_image_view_min_lod").unwrap());
8603        }
8604        if x.ext_index_type_uint8 {
8605            data.push(std::ffi::CString::new("VK_EXT_index_type_uint8").unwrap());
8606        }
8607        if x.ext_inline_uniform_block {
8608            data.push(std::ffi::CString::new("VK_EXT_inline_uniform_block").unwrap());
8609        }
8610        if x.ext_legacy_dithering {
8611            data.push(std::ffi::CString::new("VK_EXT_legacy_dithering").unwrap());
8612        }
8613        if x.ext_line_rasterization {
8614            data.push(std::ffi::CString::new("VK_EXT_line_rasterization").unwrap());
8615        }
8616        if x.ext_load_store_op_none {
8617            data.push(std::ffi::CString::new("VK_EXT_load_store_op_none").unwrap());
8618        }
8619        if x.ext_map_memory_placed {
8620            data.push(std::ffi::CString::new("VK_EXT_map_memory_placed").unwrap());
8621        }
8622        if x.ext_memory_budget {
8623            data.push(std::ffi::CString::new("VK_EXT_memory_budget").unwrap());
8624        }
8625        if x.ext_memory_priority {
8626            data.push(std::ffi::CString::new("VK_EXT_memory_priority").unwrap());
8627        }
8628        if x.ext_mesh_shader {
8629            data.push(std::ffi::CString::new("VK_EXT_mesh_shader").unwrap());
8630        }
8631        if x.ext_metal_objects {
8632            data.push(std::ffi::CString::new("VK_EXT_metal_objects").unwrap());
8633        }
8634        if x.ext_multi_draw {
8635            data.push(std::ffi::CString::new("VK_EXT_multi_draw").unwrap());
8636        }
8637        if x.ext_multisampled_render_to_single_sampled {
8638            data.push(
8639                std::ffi::CString::new("VK_EXT_multisampled_render_to_single_sampled").unwrap(),
8640            );
8641        }
8642        if x.ext_mutable_descriptor_type {
8643            data.push(std::ffi::CString::new("VK_EXT_mutable_descriptor_type").unwrap());
8644        }
8645        if x.ext_nested_command_buffer {
8646            data.push(std::ffi::CString::new("VK_EXT_nested_command_buffer").unwrap());
8647        }
8648        if x.ext_non_seamless_cube_map {
8649            data.push(std::ffi::CString::new("VK_EXT_non_seamless_cube_map").unwrap());
8650        }
8651        if x.ext_opacity_micromap {
8652            data.push(std::ffi::CString::new("VK_EXT_opacity_micromap").unwrap());
8653        }
8654        if x.ext_pageable_device_local_memory {
8655            data.push(std::ffi::CString::new("VK_EXT_pageable_device_local_memory").unwrap());
8656        }
8657        if x.ext_pci_bus_info {
8658            data.push(std::ffi::CString::new("VK_EXT_pci_bus_info").unwrap());
8659        }
8660        if x.ext_physical_device_drm {
8661            data.push(std::ffi::CString::new("VK_EXT_physical_device_drm").unwrap());
8662        }
8663        if x.ext_pipeline_creation_cache_control {
8664            data.push(std::ffi::CString::new("VK_EXT_pipeline_creation_cache_control").unwrap());
8665        }
8666        if x.ext_pipeline_creation_feedback {
8667            data.push(std::ffi::CString::new("VK_EXT_pipeline_creation_feedback").unwrap());
8668        }
8669        if x.ext_pipeline_library_group_handles {
8670            data.push(std::ffi::CString::new("VK_EXT_pipeline_library_group_handles").unwrap());
8671        }
8672        if x.ext_pipeline_properties {
8673            data.push(std::ffi::CString::new("VK_EXT_pipeline_properties").unwrap());
8674        }
8675        if x.ext_pipeline_protected_access {
8676            data.push(std::ffi::CString::new("VK_EXT_pipeline_protected_access").unwrap());
8677        }
8678        if x.ext_pipeline_robustness {
8679            data.push(std::ffi::CString::new("VK_EXT_pipeline_robustness").unwrap());
8680        }
8681        if x.ext_post_depth_coverage {
8682            data.push(std::ffi::CString::new("VK_EXT_post_depth_coverage").unwrap());
8683        }
8684        if x.ext_primitive_topology_list_restart {
8685            data.push(std::ffi::CString::new("VK_EXT_primitive_topology_list_restart").unwrap());
8686        }
8687        if x.ext_primitives_generated_query {
8688            data.push(std::ffi::CString::new("VK_EXT_primitives_generated_query").unwrap());
8689        }
8690        if x.ext_private_data {
8691            data.push(std::ffi::CString::new("VK_EXT_private_data").unwrap());
8692        }
8693        if x.ext_provoking_vertex {
8694            data.push(std::ffi::CString::new("VK_EXT_provoking_vertex").unwrap());
8695        }
8696        if x.ext_queue_family_foreign {
8697            data.push(std::ffi::CString::new("VK_EXT_queue_family_foreign").unwrap());
8698        }
8699        if x.ext_rasterization_order_attachment_access {
8700            data.push(
8701                std::ffi::CString::new("VK_EXT_rasterization_order_attachment_access").unwrap(),
8702            );
8703        }
8704        if x.ext_rgba10x6_formats {
8705            data.push(std::ffi::CString::new("VK_EXT_rgba10x6_formats").unwrap());
8706        }
8707        if x.ext_robustness2 {
8708            data.push(std::ffi::CString::new("VK_EXT_robustness2").unwrap());
8709        }
8710        if x.ext_sample_locations {
8711            data.push(std::ffi::CString::new("VK_EXT_sample_locations").unwrap());
8712        }
8713        if x.ext_sampler_filter_minmax {
8714            data.push(std::ffi::CString::new("VK_EXT_sampler_filter_minmax").unwrap());
8715        }
8716        if x.ext_scalar_block_layout {
8717            data.push(std::ffi::CString::new("VK_EXT_scalar_block_layout").unwrap());
8718        }
8719        if x.ext_separate_stencil_usage {
8720            data.push(std::ffi::CString::new("VK_EXT_separate_stencil_usage").unwrap());
8721        }
8722        if x.ext_shader_atomic_float {
8723            data.push(std::ffi::CString::new("VK_EXT_shader_atomic_float").unwrap());
8724        }
8725        if x.ext_shader_atomic_float2 {
8726            data.push(std::ffi::CString::new("VK_EXT_shader_atomic_float2").unwrap());
8727        }
8728        if x.ext_shader_demote_to_helper_invocation {
8729            data.push(std::ffi::CString::new("VK_EXT_shader_demote_to_helper_invocation").unwrap());
8730        }
8731        if x.ext_shader_image_atomic_int64 {
8732            data.push(std::ffi::CString::new("VK_EXT_shader_image_atomic_int64").unwrap());
8733        }
8734        if x.ext_shader_module_identifier {
8735            data.push(std::ffi::CString::new("VK_EXT_shader_module_identifier").unwrap());
8736        }
8737        if x.ext_shader_object {
8738            data.push(std::ffi::CString::new("VK_EXT_shader_object").unwrap());
8739        }
8740        if x.ext_shader_stencil_export {
8741            data.push(std::ffi::CString::new("VK_EXT_shader_stencil_export").unwrap());
8742        }
8743        if x.ext_shader_subgroup_ballot {
8744            data.push(std::ffi::CString::new("VK_EXT_shader_subgroup_ballot").unwrap());
8745        }
8746        if x.ext_shader_subgroup_vote {
8747            data.push(std::ffi::CString::new("VK_EXT_shader_subgroup_vote").unwrap());
8748        }
8749        if x.ext_shader_tile_image {
8750            data.push(std::ffi::CString::new("VK_EXT_shader_tile_image").unwrap());
8751        }
8752        if x.ext_shader_viewport_index_layer {
8753            data.push(std::ffi::CString::new("VK_EXT_shader_viewport_index_layer").unwrap());
8754        }
8755        if x.ext_subgroup_size_control {
8756            data.push(std::ffi::CString::new("VK_EXT_subgroup_size_control").unwrap());
8757        }
8758        if x.ext_subpass_merge_feedback {
8759            data.push(std::ffi::CString::new("VK_EXT_subpass_merge_feedback").unwrap());
8760        }
8761        if x.ext_swapchain_maintenance1 {
8762            data.push(std::ffi::CString::new("VK_EXT_swapchain_maintenance1").unwrap());
8763        }
8764        if x.ext_texel_buffer_alignment {
8765            data.push(std::ffi::CString::new("VK_EXT_texel_buffer_alignment").unwrap());
8766        }
8767        if x.ext_texture_compression_astc_hdr {
8768            data.push(std::ffi::CString::new("VK_EXT_texture_compression_astc_hdr").unwrap());
8769        }
8770        if x.ext_tooling_info {
8771            data.push(std::ffi::CString::new("VK_EXT_tooling_info").unwrap());
8772        }
8773        if x.ext_transform_feedback {
8774            data.push(std::ffi::CString::new("VK_EXT_transform_feedback").unwrap());
8775        }
8776        if x.ext_validation_cache {
8777            data.push(std::ffi::CString::new("VK_EXT_validation_cache").unwrap());
8778        }
8779        if x.ext_vertex_attribute_divisor {
8780            data.push(std::ffi::CString::new("VK_EXT_vertex_attribute_divisor").unwrap());
8781        }
8782        if x.ext_vertex_input_dynamic_state {
8783            data.push(std::ffi::CString::new("VK_EXT_vertex_input_dynamic_state").unwrap());
8784        }
8785        if x.ext_ycbcr_2plane_444_formats {
8786            data.push(std::ffi::CString::new("VK_EXT_ycbcr_2plane_444_formats").unwrap());
8787        }
8788        if x.ext_ycbcr_image_arrays {
8789            data.push(std::ffi::CString::new("VK_EXT_ycbcr_image_arrays").unwrap());
8790        }
8791        if x.amdx_shader_enqueue {
8792            data.push(std::ffi::CString::new("VK_AMDX_shader_enqueue").unwrap());
8793        }
8794        if x.amd_buffer_marker {
8795            data.push(std::ffi::CString::new("VK_AMD_buffer_marker").unwrap());
8796        }
8797        if x.amd_device_coherent_memory {
8798            data.push(std::ffi::CString::new("VK_AMD_device_coherent_memory").unwrap());
8799        }
8800        if x.amd_display_native_hdr {
8801            data.push(std::ffi::CString::new("VK_AMD_display_native_hdr").unwrap());
8802        }
8803        if x.amd_draw_indirect_count {
8804            data.push(std::ffi::CString::new("VK_AMD_draw_indirect_count").unwrap());
8805        }
8806        if x.amd_gcn_shader {
8807            data.push(std::ffi::CString::new("VK_AMD_gcn_shader").unwrap());
8808        }
8809        if x.amd_gpu_shader_half_float {
8810            data.push(std::ffi::CString::new("VK_AMD_gpu_shader_half_float").unwrap());
8811        }
8812        if x.amd_gpu_shader_int16 {
8813            data.push(std::ffi::CString::new("VK_AMD_gpu_shader_int16").unwrap());
8814        }
8815        if x.amd_memory_overallocation_behavior {
8816            data.push(std::ffi::CString::new("VK_AMD_memory_overallocation_behavior").unwrap());
8817        }
8818        if x.amd_mixed_attachment_samples {
8819            data.push(std::ffi::CString::new("VK_AMD_mixed_attachment_samples").unwrap());
8820        }
8821        if x.amd_pipeline_compiler_control {
8822            data.push(std::ffi::CString::new("VK_AMD_pipeline_compiler_control").unwrap());
8823        }
8824        if x.amd_rasterization_order {
8825            data.push(std::ffi::CString::new("VK_AMD_rasterization_order").unwrap());
8826        }
8827        if x.amd_shader_ballot {
8828            data.push(std::ffi::CString::new("VK_AMD_shader_ballot").unwrap());
8829        }
8830        if x.amd_shader_core_properties {
8831            data.push(std::ffi::CString::new("VK_AMD_shader_core_properties").unwrap());
8832        }
8833        if x.amd_shader_core_properties2 {
8834            data.push(std::ffi::CString::new("VK_AMD_shader_core_properties2").unwrap());
8835        }
8836        if x.amd_shader_early_and_late_fragment_tests {
8837            data.push(
8838                std::ffi::CString::new("VK_AMD_shader_early_and_late_fragment_tests").unwrap(),
8839            );
8840        }
8841        if x.amd_shader_explicit_vertex_parameter {
8842            data.push(std::ffi::CString::new("VK_AMD_shader_explicit_vertex_parameter").unwrap());
8843        }
8844        if x.amd_shader_fragment_mask {
8845            data.push(std::ffi::CString::new("VK_AMD_shader_fragment_mask").unwrap());
8846        }
8847        if x.amd_shader_image_load_store_lod {
8848            data.push(std::ffi::CString::new("VK_AMD_shader_image_load_store_lod").unwrap());
8849        }
8850        if x.amd_shader_info {
8851            data.push(std::ffi::CString::new("VK_AMD_shader_info").unwrap());
8852        }
8853        if x.amd_shader_trinary_minmax {
8854            data.push(std::ffi::CString::new("VK_AMD_shader_trinary_minmax").unwrap());
8855        }
8856        if x.amd_texture_gather_bias_lod {
8857            data.push(std::ffi::CString::new("VK_AMD_texture_gather_bias_lod").unwrap());
8858        }
8859        if x.android_external_format_resolve {
8860            data.push(std::ffi::CString::new("VK_ANDROID_external_format_resolve").unwrap());
8861        }
8862        if x.android_external_memory_android_hardware_buffer {
8863            data.push(
8864                std::ffi::CString::new("VK_ANDROID_external_memory_android_hardware_buffer")
8865                    .unwrap(),
8866            );
8867        }
8868        if x.arm_rasterization_order_attachment_access {
8869            data.push(
8870                std::ffi::CString::new("VK_ARM_rasterization_order_attachment_access").unwrap(),
8871            );
8872        }
8873        if x.arm_render_pass_striped {
8874            data.push(std::ffi::CString::new("VK_ARM_render_pass_striped").unwrap());
8875        }
8876        if x.arm_scheduling_controls {
8877            data.push(std::ffi::CString::new("VK_ARM_scheduling_controls").unwrap());
8878        }
8879        if x.arm_shader_core_builtins {
8880            data.push(std::ffi::CString::new("VK_ARM_shader_core_builtins").unwrap());
8881        }
8882        if x.arm_shader_core_properties {
8883            data.push(std::ffi::CString::new("VK_ARM_shader_core_properties").unwrap());
8884        }
8885        if x.fuchsia_buffer_collection {
8886            data.push(std::ffi::CString::new("VK_FUCHSIA_buffer_collection").unwrap());
8887        }
8888        if x.fuchsia_external_memory {
8889            data.push(std::ffi::CString::new("VK_FUCHSIA_external_memory").unwrap());
8890        }
8891        if x.fuchsia_external_semaphore {
8892            data.push(std::ffi::CString::new("VK_FUCHSIA_external_semaphore").unwrap());
8893        }
8894        if x.ggp_frame_token {
8895            data.push(std::ffi::CString::new("VK_GGP_frame_token").unwrap());
8896        }
8897        if x.google_decorate_string {
8898            data.push(std::ffi::CString::new("VK_GOOGLE_decorate_string").unwrap());
8899        }
8900        if x.google_display_timing {
8901            data.push(std::ffi::CString::new("VK_GOOGLE_display_timing").unwrap());
8902        }
8903        if x.google_hlsl_functionality1 {
8904            data.push(std::ffi::CString::new("VK_GOOGLE_hlsl_functionality1").unwrap());
8905        }
8906        if x.google_user_type {
8907            data.push(std::ffi::CString::new("VK_GOOGLE_user_type").unwrap());
8908        }
8909        if x.huawei_cluster_culling_shader {
8910            data.push(std::ffi::CString::new("VK_HUAWEI_cluster_culling_shader").unwrap());
8911        }
8912        if x.huawei_invocation_mask {
8913            data.push(std::ffi::CString::new("VK_HUAWEI_invocation_mask").unwrap());
8914        }
8915        if x.huawei_subpass_shading {
8916            data.push(std::ffi::CString::new("VK_HUAWEI_subpass_shading").unwrap());
8917        }
8918        if x.img_filter_cubic {
8919            data.push(std::ffi::CString::new("VK_IMG_filter_cubic").unwrap());
8920        }
8921        if x.img_format_pvrtc {
8922            data.push(std::ffi::CString::new("VK_IMG_format_pvrtc").unwrap());
8923        }
8924        if x.img_relaxed_line_rasterization {
8925            data.push(std::ffi::CString::new("VK_IMG_relaxed_line_rasterization").unwrap());
8926        }
8927        if x.intel_performance_query {
8928            data.push(std::ffi::CString::new("VK_INTEL_performance_query").unwrap());
8929        }
8930        if x.intel_shader_integer_functions2 {
8931            data.push(std::ffi::CString::new("VK_INTEL_shader_integer_functions2").unwrap());
8932        }
8933        if x.msft_layered_driver {
8934            data.push(std::ffi::CString::new("VK_MSFT_layered_driver").unwrap());
8935        }
8936        if x.nvx_binary_import {
8937            data.push(std::ffi::CString::new("VK_NVX_binary_import").unwrap());
8938        }
8939        if x.nvx_image_view_handle {
8940            data.push(std::ffi::CString::new("VK_NVX_image_view_handle").unwrap());
8941        }
8942        if x.nvx_multiview_per_view_attributes {
8943            data.push(std::ffi::CString::new("VK_NVX_multiview_per_view_attributes").unwrap());
8944        }
8945        if x.nv_acquire_winrt_display {
8946            data.push(std::ffi::CString::new("VK_NV_acquire_winrt_display").unwrap());
8947        }
8948        if x.nv_clip_space_w_scaling {
8949            data.push(std::ffi::CString::new("VK_NV_clip_space_w_scaling").unwrap());
8950        }
8951        if x.nv_compute_shader_derivatives {
8952            data.push(std::ffi::CString::new("VK_NV_compute_shader_derivatives").unwrap());
8953        }
8954        if x.nv_cooperative_matrix {
8955            data.push(std::ffi::CString::new("VK_NV_cooperative_matrix").unwrap());
8956        }
8957        if x.nv_copy_memory_indirect {
8958            data.push(std::ffi::CString::new("VK_NV_copy_memory_indirect").unwrap());
8959        }
8960        if x.nv_corner_sampled_image {
8961            data.push(std::ffi::CString::new("VK_NV_corner_sampled_image").unwrap());
8962        }
8963        if x.nv_coverage_reduction_mode {
8964            data.push(std::ffi::CString::new("VK_NV_coverage_reduction_mode").unwrap());
8965        }
8966        if x.nv_cuda_kernel_launch {
8967            data.push(std::ffi::CString::new("VK_NV_cuda_kernel_launch").unwrap());
8968        }
8969        if x.nv_dedicated_allocation {
8970            data.push(std::ffi::CString::new("VK_NV_dedicated_allocation").unwrap());
8971        }
8972        if x.nv_dedicated_allocation_image_aliasing {
8973            data.push(std::ffi::CString::new("VK_NV_dedicated_allocation_image_aliasing").unwrap());
8974        }
8975        if x.nv_descriptor_pool_overallocation {
8976            data.push(std::ffi::CString::new("VK_NV_descriptor_pool_overallocation").unwrap());
8977        }
8978        if x.nv_device_diagnostic_checkpoints {
8979            data.push(std::ffi::CString::new("VK_NV_device_diagnostic_checkpoints").unwrap());
8980        }
8981        if x.nv_device_diagnostics_config {
8982            data.push(std::ffi::CString::new("VK_NV_device_diagnostics_config").unwrap());
8983        }
8984        if x.nv_device_generated_commands {
8985            data.push(std::ffi::CString::new("VK_NV_device_generated_commands").unwrap());
8986        }
8987        if x.nv_device_generated_commands_compute {
8988            data.push(std::ffi::CString::new("VK_NV_device_generated_commands_compute").unwrap());
8989        }
8990        if x.nv_displacement_micromap {
8991            data.push(std::ffi::CString::new("VK_NV_displacement_micromap").unwrap());
8992        }
8993        if x.nv_extended_sparse_address_space {
8994            data.push(std::ffi::CString::new("VK_NV_extended_sparse_address_space").unwrap());
8995        }
8996        if x.nv_external_memory {
8997            data.push(std::ffi::CString::new("VK_NV_external_memory").unwrap());
8998        }
8999        if x.nv_external_memory_rdma {
9000            data.push(std::ffi::CString::new("VK_NV_external_memory_rdma").unwrap());
9001        }
9002        if x.nv_external_memory_win32 {
9003            data.push(std::ffi::CString::new("VK_NV_external_memory_win32").unwrap());
9004        }
9005        if x.nv_fill_rectangle {
9006            data.push(std::ffi::CString::new("VK_NV_fill_rectangle").unwrap());
9007        }
9008        if x.nv_fragment_coverage_to_color {
9009            data.push(std::ffi::CString::new("VK_NV_fragment_coverage_to_color").unwrap());
9010        }
9011        if x.nv_fragment_shader_barycentric {
9012            data.push(std::ffi::CString::new("VK_NV_fragment_shader_barycentric").unwrap());
9013        }
9014        if x.nv_fragment_shading_rate_enums {
9015            data.push(std::ffi::CString::new("VK_NV_fragment_shading_rate_enums").unwrap());
9016        }
9017        if x.nv_framebuffer_mixed_samples {
9018            data.push(std::ffi::CString::new("VK_NV_framebuffer_mixed_samples").unwrap());
9019        }
9020        if x.nv_geometry_shader_passthrough {
9021            data.push(std::ffi::CString::new("VK_NV_geometry_shader_passthrough").unwrap());
9022        }
9023        if x.nv_glsl_shader {
9024            data.push(std::ffi::CString::new("VK_NV_glsl_shader").unwrap());
9025        }
9026        if x.nv_inherited_viewport_scissor {
9027            data.push(std::ffi::CString::new("VK_NV_inherited_viewport_scissor").unwrap());
9028        }
9029        if x.nv_linear_color_attachment {
9030            data.push(std::ffi::CString::new("VK_NV_linear_color_attachment").unwrap());
9031        }
9032        if x.nv_low_latency {
9033            data.push(std::ffi::CString::new("VK_NV_low_latency").unwrap());
9034        }
9035        if x.nv_low_latency2 {
9036            data.push(std::ffi::CString::new("VK_NV_low_latency2").unwrap());
9037        }
9038        if x.nv_memory_decompression {
9039            data.push(std::ffi::CString::new("VK_NV_memory_decompression").unwrap());
9040        }
9041        if x.nv_mesh_shader {
9042            data.push(std::ffi::CString::new("VK_NV_mesh_shader").unwrap());
9043        }
9044        if x.nv_optical_flow {
9045            data.push(std::ffi::CString::new("VK_NV_optical_flow").unwrap());
9046        }
9047        if x.nv_per_stage_descriptor_set {
9048            data.push(std::ffi::CString::new("VK_NV_per_stage_descriptor_set").unwrap());
9049        }
9050        if x.nv_present_barrier {
9051            data.push(std::ffi::CString::new("VK_NV_present_barrier").unwrap());
9052        }
9053        if x.nv_raw_access_chains {
9054            data.push(std::ffi::CString::new("VK_NV_raw_access_chains").unwrap());
9055        }
9056        if x.nv_ray_tracing {
9057            data.push(std::ffi::CString::new("VK_NV_ray_tracing").unwrap());
9058        }
9059        if x.nv_ray_tracing_invocation_reorder {
9060            data.push(std::ffi::CString::new("VK_NV_ray_tracing_invocation_reorder").unwrap());
9061        }
9062        if x.nv_ray_tracing_motion_blur {
9063            data.push(std::ffi::CString::new("VK_NV_ray_tracing_motion_blur").unwrap());
9064        }
9065        if x.nv_ray_tracing_validation {
9066            data.push(std::ffi::CString::new("VK_NV_ray_tracing_validation").unwrap());
9067        }
9068        if x.nv_representative_fragment_test {
9069            data.push(std::ffi::CString::new("VK_NV_representative_fragment_test").unwrap());
9070        }
9071        if x.nv_sample_mask_override_coverage {
9072            data.push(std::ffi::CString::new("VK_NV_sample_mask_override_coverage").unwrap());
9073        }
9074        if x.nv_scissor_exclusive {
9075            data.push(std::ffi::CString::new("VK_NV_scissor_exclusive").unwrap());
9076        }
9077        if x.nv_shader_atomic_float16_vector {
9078            data.push(std::ffi::CString::new("VK_NV_shader_atomic_float16_vector").unwrap());
9079        }
9080        if x.nv_shader_image_footprint {
9081            data.push(std::ffi::CString::new("VK_NV_shader_image_footprint").unwrap());
9082        }
9083        if x.nv_shader_sm_builtins {
9084            data.push(std::ffi::CString::new("VK_NV_shader_sm_builtins").unwrap());
9085        }
9086        if x.nv_shader_subgroup_partitioned {
9087            data.push(std::ffi::CString::new("VK_NV_shader_subgroup_partitioned").unwrap());
9088        }
9089        if x.nv_shading_rate_image {
9090            data.push(std::ffi::CString::new("VK_NV_shading_rate_image").unwrap());
9091        }
9092        if x.nv_viewport_array2 {
9093            data.push(std::ffi::CString::new("VK_NV_viewport_array2").unwrap());
9094        }
9095        if x.nv_viewport_swizzle {
9096            data.push(std::ffi::CString::new("VK_NV_viewport_swizzle").unwrap());
9097        }
9098        if x.nv_win32_keyed_mutex {
9099            data.push(std::ffi::CString::new("VK_NV_win32_keyed_mutex").unwrap());
9100        }
9101        if x.qcom_filter_cubic_clamp {
9102            data.push(std::ffi::CString::new("VK_QCOM_filter_cubic_clamp").unwrap());
9103        }
9104        if x.qcom_filter_cubic_weights {
9105            data.push(std::ffi::CString::new("VK_QCOM_filter_cubic_weights").unwrap());
9106        }
9107        if x.qcom_fragment_density_map_offset {
9108            data.push(std::ffi::CString::new("VK_QCOM_fragment_density_map_offset").unwrap());
9109        }
9110        if x.qcom_image_processing {
9111            data.push(std::ffi::CString::new("VK_QCOM_image_processing").unwrap());
9112        }
9113        if x.qcom_image_processing2 {
9114            data.push(std::ffi::CString::new("VK_QCOM_image_processing2").unwrap());
9115        }
9116        if x.qcom_multiview_per_view_render_areas {
9117            data.push(std::ffi::CString::new("VK_QCOM_multiview_per_view_render_areas").unwrap());
9118        }
9119        if x.qcom_multiview_per_view_viewports {
9120            data.push(std::ffi::CString::new("VK_QCOM_multiview_per_view_viewports").unwrap());
9121        }
9122        if x.qcom_render_pass_shader_resolve {
9123            data.push(std::ffi::CString::new("VK_QCOM_render_pass_shader_resolve").unwrap());
9124        }
9125        if x.qcom_render_pass_store_ops {
9126            data.push(std::ffi::CString::new("VK_QCOM_render_pass_store_ops").unwrap());
9127        }
9128        if x.qcom_render_pass_transform {
9129            data.push(std::ffi::CString::new("VK_QCOM_render_pass_transform").unwrap());
9130        }
9131        if x.qcom_rotated_copy_commands {
9132            data.push(std::ffi::CString::new("VK_QCOM_rotated_copy_commands").unwrap());
9133        }
9134        if x.qcom_tile_properties {
9135            data.push(std::ffi::CString::new("VK_QCOM_tile_properties").unwrap());
9136        }
9137        if x.qcom_ycbcr_degamma {
9138            data.push(std::ffi::CString::new("VK_QCOM_ycbcr_degamma").unwrap());
9139        }
9140        if x.qnx_external_memory_screen_buffer {
9141            data.push(std::ffi::CString::new("VK_QNX_external_memory_screen_buffer").unwrap());
9142        }
9143        if x.sec_amigo_profiling {
9144            data.push(std::ffi::CString::new("VK_SEC_amigo_profiling").unwrap());
9145        }
9146        if x.valve_descriptor_set_host_mapping {
9147            data.push(std::ffi::CString::new("VK_VALVE_descriptor_set_host_mapping").unwrap());
9148        }
9149        if x.valve_mutable_descriptor_type {
9150            data.push(std::ffi::CString::new("VK_VALVE_mutable_descriptor_type").unwrap());
9151        }
9152        data
9153    }
9154}
9155impl IntoIterator for DeviceExtensions {
9156    type Item = (&'static str, bool);
9157    type IntoIter = std::array::IntoIter<Self::Item, 330usize>;
9158    #[inline]
9159    fn into_iter(self) -> Self::IntoIter {
9160        [
9161            ("VK_KHR_16bit_storage", self.khr_16bit_storage),
9162            ("VK_KHR_8bit_storage", self.khr_8bit_storage),
9163            (
9164                "VK_KHR_acceleration_structure",
9165                self.khr_acceleration_structure,
9166            ),
9167            ("VK_KHR_bind_memory2", self.khr_bind_memory2),
9168            (
9169                "VK_KHR_buffer_device_address",
9170                self.khr_buffer_device_address,
9171            ),
9172            (
9173                "VK_KHR_calibrated_timestamps",
9174                self.khr_calibrated_timestamps,
9175            ),
9176            ("VK_KHR_cooperative_matrix", self.khr_cooperative_matrix),
9177            ("VK_KHR_copy_commands2", self.khr_copy_commands2),
9178            ("VK_KHR_create_renderpass2", self.khr_create_renderpass2),
9179            ("VK_KHR_dedicated_allocation", self.khr_dedicated_allocation),
9180            (
9181                "VK_KHR_deferred_host_operations",
9182                self.khr_deferred_host_operations,
9183            ),
9184            (
9185                "VK_KHR_depth_stencil_resolve",
9186                self.khr_depth_stencil_resolve,
9187            ),
9188            (
9189                "VK_KHR_descriptor_update_template",
9190                self.khr_descriptor_update_template,
9191            ),
9192            ("VK_KHR_device_group", self.khr_device_group),
9193            ("VK_KHR_display_swapchain", self.khr_display_swapchain),
9194            ("VK_KHR_draw_indirect_count", self.khr_draw_indirect_count),
9195            ("VK_KHR_driver_properties", self.khr_driver_properties),
9196            ("VK_KHR_dynamic_rendering", self.khr_dynamic_rendering),
9197            (
9198                "VK_KHR_dynamic_rendering_local_read",
9199                self.khr_dynamic_rendering_local_read,
9200            ),
9201            ("VK_KHR_external_fence", self.khr_external_fence),
9202            ("VK_KHR_external_fence_fd", self.khr_external_fence_fd),
9203            ("VK_KHR_external_fence_win32", self.khr_external_fence_win32),
9204            ("VK_KHR_external_memory", self.khr_external_memory),
9205            ("VK_KHR_external_memory_fd", self.khr_external_memory_fd),
9206            (
9207                "VK_KHR_external_memory_win32",
9208                self.khr_external_memory_win32,
9209            ),
9210            ("VK_KHR_external_semaphore", self.khr_external_semaphore),
9211            (
9212                "VK_KHR_external_semaphore_fd",
9213                self.khr_external_semaphore_fd,
9214            ),
9215            (
9216                "VK_KHR_external_semaphore_win32",
9217                self.khr_external_semaphore_win32,
9218            ),
9219            (
9220                "VK_KHR_format_feature_flags2",
9221                self.khr_format_feature_flags2,
9222            ),
9223            (
9224                "VK_KHR_fragment_shader_barycentric",
9225                self.khr_fragment_shader_barycentric,
9226            ),
9227            (
9228                "VK_KHR_fragment_shading_rate",
9229                self.khr_fragment_shading_rate,
9230            ),
9231            (
9232                "VK_KHR_get_memory_requirements2",
9233                self.khr_get_memory_requirements2,
9234            ),
9235            ("VK_KHR_global_priority", self.khr_global_priority),
9236            ("VK_KHR_image_format_list", self.khr_image_format_list),
9237            (
9238                "VK_KHR_imageless_framebuffer",
9239                self.khr_imageless_framebuffer,
9240            ),
9241            ("VK_KHR_incremental_present", self.khr_incremental_present),
9242            ("VK_KHR_index_type_uint8", self.khr_index_type_uint8),
9243            ("VK_KHR_line_rasterization", self.khr_line_rasterization),
9244            ("VK_KHR_load_store_op_none", self.khr_load_store_op_none),
9245            ("VK_KHR_maintenance1", self.khr_maintenance1),
9246            ("VK_KHR_maintenance2", self.khr_maintenance2),
9247            ("VK_KHR_maintenance3", self.khr_maintenance3),
9248            ("VK_KHR_maintenance4", self.khr_maintenance4),
9249            ("VK_KHR_maintenance5", self.khr_maintenance5),
9250            ("VK_KHR_maintenance6", self.khr_maintenance6),
9251            ("VK_KHR_map_memory2", self.khr_map_memory2),
9252            ("VK_KHR_multiview", self.khr_multiview),
9253            ("VK_KHR_performance_query", self.khr_performance_query),
9254            (
9255                "VK_KHR_pipeline_executable_properties",
9256                self.khr_pipeline_executable_properties,
9257            ),
9258            ("VK_KHR_pipeline_library", self.khr_pipeline_library),
9259            ("VK_KHR_portability_subset", self.khr_portability_subset),
9260            ("VK_KHR_present_id", self.khr_present_id),
9261            ("VK_KHR_present_wait", self.khr_present_wait),
9262            ("VK_KHR_push_descriptor", self.khr_push_descriptor),
9263            ("VK_KHR_ray_query", self.khr_ray_query),
9264            (
9265                "VK_KHR_ray_tracing_maintenance1",
9266                self.khr_ray_tracing_maintenance1,
9267            ),
9268            ("VK_KHR_ray_tracing_pipeline", self.khr_ray_tracing_pipeline),
9269            (
9270                "VK_KHR_ray_tracing_position_fetch",
9271                self.khr_ray_tracing_position_fetch,
9272            ),
9273            ("VK_KHR_relaxed_block_layout", self.khr_relaxed_block_layout),
9274            (
9275                "VK_KHR_sampler_mirror_clamp_to_edge",
9276                self.khr_sampler_mirror_clamp_to_edge,
9277            ),
9278            (
9279                "VK_KHR_sampler_ycbcr_conversion",
9280                self.khr_sampler_ycbcr_conversion,
9281            ),
9282            (
9283                "VK_KHR_separate_depth_stencil_layouts",
9284                self.khr_separate_depth_stencil_layouts,
9285            ),
9286            ("VK_KHR_shader_atomic_int64", self.khr_shader_atomic_int64),
9287            ("VK_KHR_shader_clock", self.khr_shader_clock),
9288            (
9289                "VK_KHR_shader_draw_parameters",
9290                self.khr_shader_draw_parameters,
9291            ),
9292            ("VK_KHR_shader_expect_assume", self.khr_shader_expect_assume),
9293            ("VK_KHR_shader_float16_int8", self.khr_shader_float16_int8),
9294            (
9295                "VK_KHR_shader_float_controls",
9296                self.khr_shader_float_controls,
9297            ),
9298            (
9299                "VK_KHR_shader_float_controls2",
9300                self.khr_shader_float_controls2,
9301            ),
9302            (
9303                "VK_KHR_shader_integer_dot_product",
9304                self.khr_shader_integer_dot_product,
9305            ),
9306            (
9307                "VK_KHR_shader_maximal_reconvergence",
9308                self.khr_shader_maximal_reconvergence,
9309            ),
9310            (
9311                "VK_KHR_shader_non_semantic_info",
9312                self.khr_shader_non_semantic_info,
9313            ),
9314            ("VK_KHR_shader_quad_control", self.khr_shader_quad_control),
9315            (
9316                "VK_KHR_shader_subgroup_extended_types",
9317                self.khr_shader_subgroup_extended_types,
9318            ),
9319            (
9320                "VK_KHR_shader_subgroup_rotate",
9321                self.khr_shader_subgroup_rotate,
9322            ),
9323            (
9324                "VK_KHR_shader_subgroup_uniform_control_flow",
9325                self.khr_shader_subgroup_uniform_control_flow,
9326            ),
9327            (
9328                "VK_KHR_shader_terminate_invocation",
9329                self.khr_shader_terminate_invocation,
9330            ),
9331            (
9332                "VK_KHR_shared_presentable_image",
9333                self.khr_shared_presentable_image,
9334            ),
9335            ("VK_KHR_spirv_1_4", self.khr_spirv_1_4),
9336            (
9337                "VK_KHR_storage_buffer_storage_class",
9338                self.khr_storage_buffer_storage_class,
9339            ),
9340            ("VK_KHR_swapchain", self.khr_swapchain),
9341            (
9342                "VK_KHR_swapchain_mutable_format",
9343                self.khr_swapchain_mutable_format,
9344            ),
9345            ("VK_KHR_synchronization2", self.khr_synchronization2),
9346            ("VK_KHR_timeline_semaphore", self.khr_timeline_semaphore),
9347            (
9348                "VK_KHR_uniform_buffer_standard_layout",
9349                self.khr_uniform_buffer_standard_layout,
9350            ),
9351            ("VK_KHR_variable_pointers", self.khr_variable_pointers),
9352            (
9353                "VK_KHR_vertex_attribute_divisor",
9354                self.khr_vertex_attribute_divisor,
9355            ),
9356            ("VK_KHR_video_decode_av1", self.khr_video_decode_av1),
9357            ("VK_KHR_video_decode_h264", self.khr_video_decode_h264),
9358            ("VK_KHR_video_decode_h265", self.khr_video_decode_h265),
9359            ("VK_KHR_video_decode_queue", self.khr_video_decode_queue),
9360            ("VK_KHR_video_encode_h264", self.khr_video_encode_h264),
9361            ("VK_KHR_video_encode_h265", self.khr_video_encode_h265),
9362            ("VK_KHR_video_encode_queue", self.khr_video_encode_queue),
9363            ("VK_KHR_video_maintenance1", self.khr_video_maintenance1),
9364            ("VK_KHR_video_queue", self.khr_video_queue),
9365            ("VK_KHR_vulkan_memory_model", self.khr_vulkan_memory_model),
9366            ("VK_KHR_win32_keyed_mutex", self.khr_win32_keyed_mutex),
9367            (
9368                "VK_KHR_workgroup_memory_explicit_layout",
9369                self.khr_workgroup_memory_explicit_layout,
9370            ),
9371            (
9372                "VK_KHR_zero_initialize_workgroup_memory",
9373                self.khr_zero_initialize_workgroup_memory,
9374            ),
9375            ("VK_EXT_4444_formats", self.ext_4444_formats),
9376            ("VK_EXT_astc_decode_mode", self.ext_astc_decode_mode),
9377            (
9378                "VK_EXT_attachment_feedback_loop_dynamic_state",
9379                self.ext_attachment_feedback_loop_dynamic_state,
9380            ),
9381            (
9382                "VK_EXT_attachment_feedback_loop_layout",
9383                self.ext_attachment_feedback_loop_layout,
9384            ),
9385            (
9386                "VK_EXT_blend_operation_advanced",
9387                self.ext_blend_operation_advanced,
9388            ),
9389            ("VK_EXT_border_color_swizzle", self.ext_border_color_swizzle),
9390            (
9391                "VK_EXT_buffer_device_address",
9392                self.ext_buffer_device_address,
9393            ),
9394            (
9395                "VK_EXT_calibrated_timestamps",
9396                self.ext_calibrated_timestamps,
9397            ),
9398            ("VK_EXT_color_write_enable", self.ext_color_write_enable),
9399            (
9400                "VK_EXT_conditional_rendering",
9401                self.ext_conditional_rendering,
9402            ),
9403            (
9404                "VK_EXT_conservative_rasterization",
9405                self.ext_conservative_rasterization,
9406            ),
9407            ("VK_EXT_custom_border_color", self.ext_custom_border_color),
9408            ("VK_EXT_debug_marker", self.ext_debug_marker),
9409            ("VK_EXT_depth_bias_control", self.ext_depth_bias_control),
9410            ("VK_EXT_depth_clamp_zero_one", self.ext_depth_clamp_zero_one),
9411            ("VK_EXT_depth_clip_control", self.ext_depth_clip_control),
9412            ("VK_EXT_depth_clip_enable", self.ext_depth_clip_enable),
9413            (
9414                "VK_EXT_depth_range_unrestricted",
9415                self.ext_depth_range_unrestricted,
9416            ),
9417            ("VK_EXT_descriptor_buffer", self.ext_descriptor_buffer),
9418            ("VK_EXT_descriptor_indexing", self.ext_descriptor_indexing),
9419            (
9420                "VK_EXT_device_address_binding_report",
9421                self.ext_device_address_binding_report,
9422            ),
9423            ("VK_EXT_device_fault", self.ext_device_fault),
9424            ("VK_EXT_device_memory_report", self.ext_device_memory_report),
9425            ("VK_EXT_discard_rectangles", self.ext_discard_rectangles),
9426            ("VK_EXT_display_control", self.ext_display_control),
9427            (
9428                "VK_EXT_dynamic_rendering_unused_attachments",
9429                self.ext_dynamic_rendering_unused_attachments,
9430            ),
9431            (
9432                "VK_EXT_extended_dynamic_state",
9433                self.ext_extended_dynamic_state,
9434            ),
9435            (
9436                "VK_EXT_extended_dynamic_state2",
9437                self.ext_extended_dynamic_state2,
9438            ),
9439            (
9440                "VK_EXT_extended_dynamic_state3",
9441                self.ext_extended_dynamic_state3,
9442            ),
9443            (
9444                "VK_EXT_external_memory_acquire_unmodified",
9445                self.ext_external_memory_acquire_unmodified,
9446            ),
9447            (
9448                "VK_EXT_external_memory_dma_buf",
9449                self.ext_external_memory_dma_buf,
9450            ),
9451            ("VK_EXT_external_memory_host", self.ext_external_memory_host),
9452            ("VK_EXT_filter_cubic", self.ext_filter_cubic),
9453            ("VK_EXT_fragment_density_map", self.ext_fragment_density_map),
9454            (
9455                "VK_EXT_fragment_density_map2",
9456                self.ext_fragment_density_map2,
9457            ),
9458            (
9459                "VK_EXT_fragment_shader_interlock",
9460                self.ext_fragment_shader_interlock,
9461            ),
9462            ("VK_EXT_frame_boundary", self.ext_frame_boundary),
9463            (
9464                "VK_EXT_full_screen_exclusive",
9465                self.ext_full_screen_exclusive,
9466            ),
9467            ("VK_EXT_global_priority", self.ext_global_priority),
9468            (
9469                "VK_EXT_global_priority_query",
9470                self.ext_global_priority_query,
9471            ),
9472            (
9473                "VK_EXT_graphics_pipeline_library",
9474                self.ext_graphics_pipeline_library,
9475            ),
9476            ("VK_EXT_hdr_metadata", self.ext_hdr_metadata),
9477            ("VK_EXT_host_image_copy", self.ext_host_image_copy),
9478            ("VK_EXT_host_query_reset", self.ext_host_query_reset),
9479            ("VK_EXT_image_2d_view_of_3d", self.ext_image_2d_view_of_3d),
9480            (
9481                "VK_EXT_image_compression_control",
9482                self.ext_image_compression_control,
9483            ),
9484            (
9485                "VK_EXT_image_compression_control_swapchain",
9486                self.ext_image_compression_control_swapchain,
9487            ),
9488            (
9489                "VK_EXT_image_drm_format_modifier",
9490                self.ext_image_drm_format_modifier,
9491            ),
9492            ("VK_EXT_image_robustness", self.ext_image_robustness),
9493            (
9494                "VK_EXT_image_sliced_view_of_3d",
9495                self.ext_image_sliced_view_of_3d,
9496            ),
9497            ("VK_EXT_image_view_min_lod", self.ext_image_view_min_lod),
9498            ("VK_EXT_index_type_uint8", self.ext_index_type_uint8),
9499            ("VK_EXT_inline_uniform_block", self.ext_inline_uniform_block),
9500            ("VK_EXT_legacy_dithering", self.ext_legacy_dithering),
9501            ("VK_EXT_line_rasterization", self.ext_line_rasterization),
9502            ("VK_EXT_load_store_op_none", self.ext_load_store_op_none),
9503            ("VK_EXT_map_memory_placed", self.ext_map_memory_placed),
9504            ("VK_EXT_memory_budget", self.ext_memory_budget),
9505            ("VK_EXT_memory_priority", self.ext_memory_priority),
9506            ("VK_EXT_mesh_shader", self.ext_mesh_shader),
9507            ("VK_EXT_metal_objects", self.ext_metal_objects),
9508            ("VK_EXT_multi_draw", self.ext_multi_draw),
9509            (
9510                "VK_EXT_multisampled_render_to_single_sampled",
9511                self.ext_multisampled_render_to_single_sampled,
9512            ),
9513            (
9514                "VK_EXT_mutable_descriptor_type",
9515                self.ext_mutable_descriptor_type,
9516            ),
9517            (
9518                "VK_EXT_nested_command_buffer",
9519                self.ext_nested_command_buffer,
9520            ),
9521            (
9522                "VK_EXT_non_seamless_cube_map",
9523                self.ext_non_seamless_cube_map,
9524            ),
9525            ("VK_EXT_opacity_micromap", self.ext_opacity_micromap),
9526            (
9527                "VK_EXT_pageable_device_local_memory",
9528                self.ext_pageable_device_local_memory,
9529            ),
9530            ("VK_EXT_pci_bus_info", self.ext_pci_bus_info),
9531            ("VK_EXT_physical_device_drm", self.ext_physical_device_drm),
9532            (
9533                "VK_EXT_pipeline_creation_cache_control",
9534                self.ext_pipeline_creation_cache_control,
9535            ),
9536            (
9537                "VK_EXT_pipeline_creation_feedback",
9538                self.ext_pipeline_creation_feedback,
9539            ),
9540            (
9541                "VK_EXT_pipeline_library_group_handles",
9542                self.ext_pipeline_library_group_handles,
9543            ),
9544            ("VK_EXT_pipeline_properties", self.ext_pipeline_properties),
9545            (
9546                "VK_EXT_pipeline_protected_access",
9547                self.ext_pipeline_protected_access,
9548            ),
9549            ("VK_EXT_pipeline_robustness", self.ext_pipeline_robustness),
9550            ("VK_EXT_post_depth_coverage", self.ext_post_depth_coverage),
9551            (
9552                "VK_EXT_primitive_topology_list_restart",
9553                self.ext_primitive_topology_list_restart,
9554            ),
9555            (
9556                "VK_EXT_primitives_generated_query",
9557                self.ext_primitives_generated_query,
9558            ),
9559            ("VK_EXT_private_data", self.ext_private_data),
9560            ("VK_EXT_provoking_vertex", self.ext_provoking_vertex),
9561            ("VK_EXT_queue_family_foreign", self.ext_queue_family_foreign),
9562            (
9563                "VK_EXT_rasterization_order_attachment_access",
9564                self.ext_rasterization_order_attachment_access,
9565            ),
9566            ("VK_EXT_rgba10x6_formats", self.ext_rgba10x6_formats),
9567            ("VK_EXT_robustness2", self.ext_robustness2),
9568            ("VK_EXT_sample_locations", self.ext_sample_locations),
9569            (
9570                "VK_EXT_sampler_filter_minmax",
9571                self.ext_sampler_filter_minmax,
9572            ),
9573            ("VK_EXT_scalar_block_layout", self.ext_scalar_block_layout),
9574            (
9575                "VK_EXT_separate_stencil_usage",
9576                self.ext_separate_stencil_usage,
9577            ),
9578            ("VK_EXT_shader_atomic_float", self.ext_shader_atomic_float),
9579            ("VK_EXT_shader_atomic_float2", self.ext_shader_atomic_float2),
9580            (
9581                "VK_EXT_shader_demote_to_helper_invocation",
9582                self.ext_shader_demote_to_helper_invocation,
9583            ),
9584            (
9585                "VK_EXT_shader_image_atomic_int64",
9586                self.ext_shader_image_atomic_int64,
9587            ),
9588            (
9589                "VK_EXT_shader_module_identifier",
9590                self.ext_shader_module_identifier,
9591            ),
9592            ("VK_EXT_shader_object", self.ext_shader_object),
9593            (
9594                "VK_EXT_shader_stencil_export",
9595                self.ext_shader_stencil_export,
9596            ),
9597            (
9598                "VK_EXT_shader_subgroup_ballot",
9599                self.ext_shader_subgroup_ballot,
9600            ),
9601            ("VK_EXT_shader_subgroup_vote", self.ext_shader_subgroup_vote),
9602            ("VK_EXT_shader_tile_image", self.ext_shader_tile_image),
9603            (
9604                "VK_EXT_shader_viewport_index_layer",
9605                self.ext_shader_viewport_index_layer,
9606            ),
9607            (
9608                "VK_EXT_subgroup_size_control",
9609                self.ext_subgroup_size_control,
9610            ),
9611            (
9612                "VK_EXT_subpass_merge_feedback",
9613                self.ext_subpass_merge_feedback,
9614            ),
9615            (
9616                "VK_EXT_swapchain_maintenance1",
9617                self.ext_swapchain_maintenance1,
9618            ),
9619            (
9620                "VK_EXT_texel_buffer_alignment",
9621                self.ext_texel_buffer_alignment,
9622            ),
9623            (
9624                "VK_EXT_texture_compression_astc_hdr",
9625                self.ext_texture_compression_astc_hdr,
9626            ),
9627            ("VK_EXT_tooling_info", self.ext_tooling_info),
9628            ("VK_EXT_transform_feedback", self.ext_transform_feedback),
9629            ("VK_EXT_validation_cache", self.ext_validation_cache),
9630            (
9631                "VK_EXT_vertex_attribute_divisor",
9632                self.ext_vertex_attribute_divisor,
9633            ),
9634            (
9635                "VK_EXT_vertex_input_dynamic_state",
9636                self.ext_vertex_input_dynamic_state,
9637            ),
9638            (
9639                "VK_EXT_ycbcr_2plane_444_formats",
9640                self.ext_ycbcr_2plane_444_formats,
9641            ),
9642            ("VK_EXT_ycbcr_image_arrays", self.ext_ycbcr_image_arrays),
9643            ("VK_AMDX_shader_enqueue", self.amdx_shader_enqueue),
9644            ("VK_AMD_buffer_marker", self.amd_buffer_marker),
9645            (
9646                "VK_AMD_device_coherent_memory",
9647                self.amd_device_coherent_memory,
9648            ),
9649            ("VK_AMD_display_native_hdr", self.amd_display_native_hdr),
9650            ("VK_AMD_draw_indirect_count", self.amd_draw_indirect_count),
9651            ("VK_AMD_gcn_shader", self.amd_gcn_shader),
9652            (
9653                "VK_AMD_gpu_shader_half_float",
9654                self.amd_gpu_shader_half_float,
9655            ),
9656            ("VK_AMD_gpu_shader_int16", self.amd_gpu_shader_int16),
9657            (
9658                "VK_AMD_memory_overallocation_behavior",
9659                self.amd_memory_overallocation_behavior,
9660            ),
9661            (
9662                "VK_AMD_mixed_attachment_samples",
9663                self.amd_mixed_attachment_samples,
9664            ),
9665            (
9666                "VK_AMD_pipeline_compiler_control",
9667                self.amd_pipeline_compiler_control,
9668            ),
9669            ("VK_AMD_rasterization_order", self.amd_rasterization_order),
9670            ("VK_AMD_shader_ballot", self.amd_shader_ballot),
9671            (
9672                "VK_AMD_shader_core_properties",
9673                self.amd_shader_core_properties,
9674            ),
9675            (
9676                "VK_AMD_shader_core_properties2",
9677                self.amd_shader_core_properties2,
9678            ),
9679            (
9680                "VK_AMD_shader_early_and_late_fragment_tests",
9681                self.amd_shader_early_and_late_fragment_tests,
9682            ),
9683            (
9684                "VK_AMD_shader_explicit_vertex_parameter",
9685                self.amd_shader_explicit_vertex_parameter,
9686            ),
9687            ("VK_AMD_shader_fragment_mask", self.amd_shader_fragment_mask),
9688            (
9689                "VK_AMD_shader_image_load_store_lod",
9690                self.amd_shader_image_load_store_lod,
9691            ),
9692            ("VK_AMD_shader_info", self.amd_shader_info),
9693            (
9694                "VK_AMD_shader_trinary_minmax",
9695                self.amd_shader_trinary_minmax,
9696            ),
9697            (
9698                "VK_AMD_texture_gather_bias_lod",
9699                self.amd_texture_gather_bias_lod,
9700            ),
9701            (
9702                "VK_ANDROID_external_format_resolve",
9703                self.android_external_format_resolve,
9704            ),
9705            (
9706                "VK_ANDROID_external_memory_android_hardware_buffer",
9707                self.android_external_memory_android_hardware_buffer,
9708            ),
9709            (
9710                "VK_ARM_rasterization_order_attachment_access",
9711                self.arm_rasterization_order_attachment_access,
9712            ),
9713            ("VK_ARM_render_pass_striped", self.arm_render_pass_striped),
9714            ("VK_ARM_scheduling_controls", self.arm_scheduling_controls),
9715            ("VK_ARM_shader_core_builtins", self.arm_shader_core_builtins),
9716            (
9717                "VK_ARM_shader_core_properties",
9718                self.arm_shader_core_properties,
9719            ),
9720            (
9721                "VK_FUCHSIA_buffer_collection",
9722                self.fuchsia_buffer_collection,
9723            ),
9724            ("VK_FUCHSIA_external_memory", self.fuchsia_external_memory),
9725            (
9726                "VK_FUCHSIA_external_semaphore",
9727                self.fuchsia_external_semaphore,
9728            ),
9729            ("VK_GGP_frame_token", self.ggp_frame_token),
9730            ("VK_GOOGLE_decorate_string", self.google_decorate_string),
9731            ("VK_GOOGLE_display_timing", self.google_display_timing),
9732            (
9733                "VK_GOOGLE_hlsl_functionality1",
9734                self.google_hlsl_functionality1,
9735            ),
9736            ("VK_GOOGLE_user_type", self.google_user_type),
9737            (
9738                "VK_HUAWEI_cluster_culling_shader",
9739                self.huawei_cluster_culling_shader,
9740            ),
9741            ("VK_HUAWEI_invocation_mask", self.huawei_invocation_mask),
9742            ("VK_HUAWEI_subpass_shading", self.huawei_subpass_shading),
9743            ("VK_IMG_filter_cubic", self.img_filter_cubic),
9744            ("VK_IMG_format_pvrtc", self.img_format_pvrtc),
9745            (
9746                "VK_IMG_relaxed_line_rasterization",
9747                self.img_relaxed_line_rasterization,
9748            ),
9749            ("VK_INTEL_performance_query", self.intel_performance_query),
9750            (
9751                "VK_INTEL_shader_integer_functions2",
9752                self.intel_shader_integer_functions2,
9753            ),
9754            ("VK_MSFT_layered_driver", self.msft_layered_driver),
9755            ("VK_NVX_binary_import", self.nvx_binary_import),
9756            ("VK_NVX_image_view_handle", self.nvx_image_view_handle),
9757            (
9758                "VK_NVX_multiview_per_view_attributes",
9759                self.nvx_multiview_per_view_attributes,
9760            ),
9761            ("VK_NV_acquire_winrt_display", self.nv_acquire_winrt_display),
9762            ("VK_NV_clip_space_w_scaling", self.nv_clip_space_w_scaling),
9763            (
9764                "VK_NV_compute_shader_derivatives",
9765                self.nv_compute_shader_derivatives,
9766            ),
9767            ("VK_NV_cooperative_matrix", self.nv_cooperative_matrix),
9768            ("VK_NV_copy_memory_indirect", self.nv_copy_memory_indirect),
9769            ("VK_NV_corner_sampled_image", self.nv_corner_sampled_image),
9770            (
9771                "VK_NV_coverage_reduction_mode",
9772                self.nv_coverage_reduction_mode,
9773            ),
9774            ("VK_NV_cuda_kernel_launch", self.nv_cuda_kernel_launch),
9775            ("VK_NV_dedicated_allocation", self.nv_dedicated_allocation),
9776            (
9777                "VK_NV_dedicated_allocation_image_aliasing",
9778                self.nv_dedicated_allocation_image_aliasing,
9779            ),
9780            (
9781                "VK_NV_descriptor_pool_overallocation",
9782                self.nv_descriptor_pool_overallocation,
9783            ),
9784            (
9785                "VK_NV_device_diagnostic_checkpoints",
9786                self.nv_device_diagnostic_checkpoints,
9787            ),
9788            (
9789                "VK_NV_device_diagnostics_config",
9790                self.nv_device_diagnostics_config,
9791            ),
9792            (
9793                "VK_NV_device_generated_commands",
9794                self.nv_device_generated_commands,
9795            ),
9796            (
9797                "VK_NV_device_generated_commands_compute",
9798                self.nv_device_generated_commands_compute,
9799            ),
9800            ("VK_NV_displacement_micromap", self.nv_displacement_micromap),
9801            (
9802                "VK_NV_extended_sparse_address_space",
9803                self.nv_extended_sparse_address_space,
9804            ),
9805            ("VK_NV_external_memory", self.nv_external_memory),
9806            ("VK_NV_external_memory_rdma", self.nv_external_memory_rdma),
9807            ("VK_NV_external_memory_win32", self.nv_external_memory_win32),
9808            ("VK_NV_fill_rectangle", self.nv_fill_rectangle),
9809            (
9810                "VK_NV_fragment_coverage_to_color",
9811                self.nv_fragment_coverage_to_color,
9812            ),
9813            (
9814                "VK_NV_fragment_shader_barycentric",
9815                self.nv_fragment_shader_barycentric,
9816            ),
9817            (
9818                "VK_NV_fragment_shading_rate_enums",
9819                self.nv_fragment_shading_rate_enums,
9820            ),
9821            (
9822                "VK_NV_framebuffer_mixed_samples",
9823                self.nv_framebuffer_mixed_samples,
9824            ),
9825            (
9826                "VK_NV_geometry_shader_passthrough",
9827                self.nv_geometry_shader_passthrough,
9828            ),
9829            ("VK_NV_glsl_shader", self.nv_glsl_shader),
9830            (
9831                "VK_NV_inherited_viewport_scissor",
9832                self.nv_inherited_viewport_scissor,
9833            ),
9834            (
9835                "VK_NV_linear_color_attachment",
9836                self.nv_linear_color_attachment,
9837            ),
9838            ("VK_NV_low_latency", self.nv_low_latency),
9839            ("VK_NV_low_latency2", self.nv_low_latency2),
9840            ("VK_NV_memory_decompression", self.nv_memory_decompression),
9841            ("VK_NV_mesh_shader", self.nv_mesh_shader),
9842            ("VK_NV_optical_flow", self.nv_optical_flow),
9843            (
9844                "VK_NV_per_stage_descriptor_set",
9845                self.nv_per_stage_descriptor_set,
9846            ),
9847            ("VK_NV_present_barrier", self.nv_present_barrier),
9848            ("VK_NV_raw_access_chains", self.nv_raw_access_chains),
9849            ("VK_NV_ray_tracing", self.nv_ray_tracing),
9850            (
9851                "VK_NV_ray_tracing_invocation_reorder",
9852                self.nv_ray_tracing_invocation_reorder,
9853            ),
9854            (
9855                "VK_NV_ray_tracing_motion_blur",
9856                self.nv_ray_tracing_motion_blur,
9857            ),
9858            (
9859                "VK_NV_ray_tracing_validation",
9860                self.nv_ray_tracing_validation,
9861            ),
9862            (
9863                "VK_NV_representative_fragment_test",
9864                self.nv_representative_fragment_test,
9865            ),
9866            (
9867                "VK_NV_sample_mask_override_coverage",
9868                self.nv_sample_mask_override_coverage,
9869            ),
9870            ("VK_NV_scissor_exclusive", self.nv_scissor_exclusive),
9871            (
9872                "VK_NV_shader_atomic_float16_vector",
9873                self.nv_shader_atomic_float16_vector,
9874            ),
9875            (
9876                "VK_NV_shader_image_footprint",
9877                self.nv_shader_image_footprint,
9878            ),
9879            ("VK_NV_shader_sm_builtins", self.nv_shader_sm_builtins),
9880            (
9881                "VK_NV_shader_subgroup_partitioned",
9882                self.nv_shader_subgroup_partitioned,
9883            ),
9884            ("VK_NV_shading_rate_image", self.nv_shading_rate_image),
9885            ("VK_NV_viewport_array2", self.nv_viewport_array2),
9886            ("VK_NV_viewport_swizzle", self.nv_viewport_swizzle),
9887            ("VK_NV_win32_keyed_mutex", self.nv_win32_keyed_mutex),
9888            ("VK_QCOM_filter_cubic_clamp", self.qcom_filter_cubic_clamp),
9889            (
9890                "VK_QCOM_filter_cubic_weights",
9891                self.qcom_filter_cubic_weights,
9892            ),
9893            (
9894                "VK_QCOM_fragment_density_map_offset",
9895                self.qcom_fragment_density_map_offset,
9896            ),
9897            ("VK_QCOM_image_processing", self.qcom_image_processing),
9898            ("VK_QCOM_image_processing2", self.qcom_image_processing2),
9899            (
9900                "VK_QCOM_multiview_per_view_render_areas",
9901                self.qcom_multiview_per_view_render_areas,
9902            ),
9903            (
9904                "VK_QCOM_multiview_per_view_viewports",
9905                self.qcom_multiview_per_view_viewports,
9906            ),
9907            (
9908                "VK_QCOM_render_pass_shader_resolve",
9909                self.qcom_render_pass_shader_resolve,
9910            ),
9911            (
9912                "VK_QCOM_render_pass_store_ops",
9913                self.qcom_render_pass_store_ops,
9914            ),
9915            (
9916                "VK_QCOM_render_pass_transform",
9917                self.qcom_render_pass_transform,
9918            ),
9919            (
9920                "VK_QCOM_rotated_copy_commands",
9921                self.qcom_rotated_copy_commands,
9922            ),
9923            ("VK_QCOM_tile_properties", self.qcom_tile_properties),
9924            ("VK_QCOM_ycbcr_degamma", self.qcom_ycbcr_degamma),
9925            (
9926                "VK_QNX_external_memory_screen_buffer",
9927                self.qnx_external_memory_screen_buffer,
9928            ),
9929            ("VK_SEC_amigo_profiling", self.sec_amigo_profiling),
9930            (
9931                "VK_VALVE_descriptor_set_host_mapping",
9932                self.valve_descriptor_set_host_mapping,
9933            ),
9934            (
9935                "VK_VALVE_mutable_descriptor_type",
9936                self.valve_mutable_descriptor_type,
9937            ),
9938        ]
9939        .into_iter()
9940    }
9941}
9942impl DeviceExtensions {
9943    #[doc = r" Checks enabled extensions against the physical device support,"]
9944    #[doc = r" and checks for required API version and instance extensions."]
9945    pub(super) fn check_requirements(
9946        &self,
9947        supported: &DeviceExtensions,
9948        api_version: crate::Version,
9949        instance_extensions: &crate::instance::InstanceExtensions,
9950    ) -> Result<(), Box<crate::ValidationError>> {
9951        if self.khr_16bit_storage {
9952            if !supported.khr_16bit_storage {
9953                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_16bit_storage`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
9954            }
9955            if !(api_version >= crate::Version::V1_1
9956                || instance_extensions.khr_get_physical_device_properties2)
9957            {
9958                return Err(Box::new(crate::ValidationError {
9959                    problem: "contains `khr_16bit_storage`".into(),
9960                    requires_one_of: crate::RequiresOneOf(&[
9961                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
9962                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
9963                            "khr_get_physical_device_properties2",
9964                        )]),
9965                    ]),
9966                    ..Default::default()
9967                }));
9968            }
9969        }
9970        if self.khr_8bit_storage {
9971            if !supported.khr_8bit_storage {
9972                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_8bit_storage`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
9973            }
9974            if !(api_version >= crate::Version::V1_1
9975                || instance_extensions.khr_get_physical_device_properties2)
9976            {
9977                return Err(Box::new(crate::ValidationError {
9978                    problem: "contains `khr_8bit_storage`".into(),
9979                    requires_one_of: crate::RequiresOneOf(&[
9980                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
9981                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
9982                            "khr_get_physical_device_properties2",
9983                        )]),
9984                    ]),
9985                    ..Default::default()
9986                }));
9987            }
9988        }
9989        if self.khr_acceleration_structure {
9990            if !supported.khr_acceleration_structure {
9991                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_acceleration_structure`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
9992            }
9993            if !(api_version >= crate::Version::V1_1) {
9994                return Err(Box::new(crate::ValidationError {
9995                    problem: "contains `khr_acceleration_structure`".into(),
9996                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
9997                        crate::Requires::APIVersion(crate::Version::V1_1),
9998                    ])]),
9999                    ..Default::default()
10000                }));
10001            }
10002        }
10003        if self.khr_bind_memory2 {
10004            if !supported.khr_bind_memory2 {
10005                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_bind_memory2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10006            }
10007        }
10008        if self.khr_buffer_device_address {
10009            if !supported.khr_buffer_device_address {
10010                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_buffer_device_address`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10011            }
10012            if !(api_version >= crate::Version::V1_1
10013                || instance_extensions.khr_get_physical_device_properties2)
10014            {
10015                return Err(Box::new(crate::ValidationError {
10016                    problem: "contains `khr_buffer_device_address`".into(),
10017                    requires_one_of: crate::RequiresOneOf(&[
10018                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10019                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10020                            "khr_get_physical_device_properties2",
10021                        )]),
10022                    ]),
10023                    ..Default::default()
10024                }));
10025            }
10026        }
10027        if self.khr_calibrated_timestamps {
10028            if !supported.khr_calibrated_timestamps {
10029                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_calibrated_timestamps`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10030            }
10031            if !(api_version >= crate::Version::V1_1
10032                || instance_extensions.khr_get_physical_device_properties2)
10033            {
10034                return Err(Box::new(crate::ValidationError {
10035                    problem: "contains `khr_calibrated_timestamps`".into(),
10036                    requires_one_of: crate::RequiresOneOf(&[
10037                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10038                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10039                            "khr_get_physical_device_properties2",
10040                        )]),
10041                    ]),
10042                    ..Default::default()
10043                }));
10044            }
10045        }
10046        if self.khr_cooperative_matrix {
10047            if !supported.khr_cooperative_matrix {
10048                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_cooperative_matrix`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10049            }
10050            if !(api_version >= crate::Version::V1_1
10051                || instance_extensions.khr_get_physical_device_properties2)
10052            {
10053                return Err(Box::new(crate::ValidationError {
10054                    problem: "contains `khr_cooperative_matrix`".into(),
10055                    requires_one_of: crate::RequiresOneOf(&[
10056                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10057                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10058                            "khr_get_physical_device_properties2",
10059                        )]),
10060                    ]),
10061                    ..Default::default()
10062                }));
10063            }
10064        }
10065        if self.khr_copy_commands2 {
10066            if !supported.khr_copy_commands2 {
10067                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_copy_commands2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10068            }
10069            if !(api_version >= crate::Version::V1_1
10070                || instance_extensions.khr_get_physical_device_properties2)
10071            {
10072                return Err(Box::new(crate::ValidationError {
10073                    problem: "contains `khr_copy_commands2`".into(),
10074                    requires_one_of: crate::RequiresOneOf(&[
10075                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10076                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10077                            "khr_get_physical_device_properties2",
10078                        )]),
10079                    ]),
10080                    ..Default::default()
10081                }));
10082            }
10083        }
10084        if self.khr_create_renderpass2 {
10085            if !supported.khr_create_renderpass2 {
10086                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_create_renderpass2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10087            }
10088        }
10089        if self.khr_dedicated_allocation {
10090            if !supported.khr_dedicated_allocation {
10091                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_dedicated_allocation`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10092            }
10093        }
10094        if self.khr_deferred_host_operations {
10095            if !supported.khr_deferred_host_operations {
10096                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_deferred_host_operations`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10097            }
10098        }
10099        if self.khr_depth_stencil_resolve {
10100            if !supported.khr_depth_stencil_resolve {
10101                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_depth_stencil_resolve`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10102            }
10103        }
10104        if self.khr_descriptor_update_template {
10105            if !supported.khr_descriptor_update_template {
10106                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_descriptor_update_template`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10107            }
10108        }
10109        if self.khr_device_group {
10110            if !supported.khr_device_group {
10111                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_device_group`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10112            }
10113            if !(api_version >= crate::Version::V1_1
10114                || instance_extensions.khr_device_group_creation)
10115            {
10116                return Err(Box::new(crate::ValidationError {
10117                    problem: "contains `khr_device_group`".into(),
10118                    requires_one_of: crate::RequiresOneOf(&[
10119                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10120                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10121                            "khr_device_group_creation",
10122                        )]),
10123                    ]),
10124                    ..Default::default()
10125                }));
10126            }
10127        }
10128        if self.khr_display_swapchain {
10129            if !supported.khr_display_swapchain {
10130                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_display_swapchain`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10131            }
10132            if !(instance_extensions.khr_display) {
10133                return Err(Box::new(crate::ValidationError {
10134                    problem: "contains `khr_display_swapchain`".into(),
10135                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
10136                        crate::Requires::InstanceExtension("khr_display"),
10137                    ])]),
10138                    ..Default::default()
10139                }));
10140            }
10141        }
10142        if self.khr_draw_indirect_count {
10143            if !supported.khr_draw_indirect_count {
10144                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_draw_indirect_count`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10145            }
10146        }
10147        if self.khr_driver_properties {
10148            if !supported.khr_driver_properties {
10149                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_driver_properties`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10150            }
10151            if !(api_version >= crate::Version::V1_1
10152                || instance_extensions.khr_get_physical_device_properties2)
10153            {
10154                return Err(Box::new(crate::ValidationError {
10155                    problem: "contains `khr_driver_properties`".into(),
10156                    requires_one_of: crate::RequiresOneOf(&[
10157                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10158                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10159                            "khr_get_physical_device_properties2",
10160                        )]),
10161                    ]),
10162                    ..Default::default()
10163                }));
10164            }
10165        }
10166        if self.khr_dynamic_rendering {
10167            if !supported.khr_dynamic_rendering {
10168                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_dynamic_rendering`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10169            }
10170            if !(api_version >= crate::Version::V1_1
10171                || instance_extensions.khr_get_physical_device_properties2)
10172            {
10173                return Err(Box::new(crate::ValidationError {
10174                    problem: "contains `khr_dynamic_rendering`".into(),
10175                    requires_one_of: crate::RequiresOneOf(&[
10176                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10177                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10178                            "khr_get_physical_device_properties2",
10179                        )]),
10180                    ]),
10181                    ..Default::default()
10182                }));
10183            }
10184        }
10185        if self.khr_dynamic_rendering_local_read {
10186            if !supported.khr_dynamic_rendering_local_read {
10187                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_dynamic_rendering_local_read`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10188            }
10189        }
10190        if self.khr_external_fence {
10191            if !supported.khr_external_fence {
10192                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_external_fence`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10193            }
10194            if !(api_version >= crate::Version::V1_1
10195                || instance_extensions.khr_external_fence_capabilities)
10196            {
10197                return Err(Box::new(crate::ValidationError {
10198                    problem: "contains `khr_external_fence`".into(),
10199                    requires_one_of: crate::RequiresOneOf(&[
10200                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10201                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10202                            "khr_external_fence_capabilities",
10203                        )]),
10204                    ]),
10205                    ..Default::default()
10206                }));
10207            }
10208        }
10209        if self.khr_external_fence_fd {
10210            if !supported.khr_external_fence_fd {
10211                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_external_fence_fd`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10212            }
10213        }
10214        if self.khr_external_fence_win32 {
10215            if !supported.khr_external_fence_win32 {
10216                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_external_fence_win32`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10217            }
10218        }
10219        if self.khr_external_memory {
10220            if !supported.khr_external_memory {
10221                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_external_memory`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10222            }
10223            if !(api_version >= crate::Version::V1_1
10224                || instance_extensions.khr_external_memory_capabilities)
10225            {
10226                return Err(Box::new(crate::ValidationError {
10227                    problem: "contains `khr_external_memory`".into(),
10228                    requires_one_of: crate::RequiresOneOf(&[
10229                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10230                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10231                            "khr_external_memory_capabilities",
10232                        )]),
10233                    ]),
10234                    ..Default::default()
10235                }));
10236            }
10237        }
10238        if self.khr_external_memory_fd {
10239            if !supported.khr_external_memory_fd {
10240                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_external_memory_fd`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10241            }
10242        }
10243        if self.khr_external_memory_win32 {
10244            if !supported.khr_external_memory_win32 {
10245                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_external_memory_win32`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10246            }
10247        }
10248        if self.khr_external_semaphore {
10249            if !supported.khr_external_semaphore {
10250                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_external_semaphore`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10251            }
10252            if !(api_version >= crate::Version::V1_1
10253                || instance_extensions.khr_external_semaphore_capabilities)
10254            {
10255                return Err(Box::new(crate::ValidationError {
10256                    problem: "contains `khr_external_semaphore`".into(),
10257                    requires_one_of: crate::RequiresOneOf(&[
10258                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10259                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10260                            "khr_external_semaphore_capabilities",
10261                        )]),
10262                    ]),
10263                    ..Default::default()
10264                }));
10265            }
10266        }
10267        if self.khr_external_semaphore_fd {
10268            if !supported.khr_external_semaphore_fd {
10269                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_external_semaphore_fd`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10270            }
10271        }
10272        if self.khr_external_semaphore_win32 {
10273            if !supported.khr_external_semaphore_win32 {
10274                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_external_semaphore_win32`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10275            }
10276        }
10277        if self.khr_format_feature_flags2 {
10278            if !supported.khr_format_feature_flags2 {
10279                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_format_feature_flags2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10280            }
10281            if !(api_version >= crate::Version::V1_1
10282                || instance_extensions.khr_get_physical_device_properties2)
10283            {
10284                return Err(Box::new(crate::ValidationError {
10285                    problem: "contains `khr_format_feature_flags2`".into(),
10286                    requires_one_of: crate::RequiresOneOf(&[
10287                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10288                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10289                            "khr_get_physical_device_properties2",
10290                        )]),
10291                    ]),
10292                    ..Default::default()
10293                }));
10294            }
10295        }
10296        if self.khr_fragment_shader_barycentric {
10297            if !supported.khr_fragment_shader_barycentric {
10298                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_fragment_shader_barycentric`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10299            }
10300            if !(api_version >= crate::Version::V1_1
10301                || instance_extensions.khr_get_physical_device_properties2)
10302            {
10303                return Err(Box::new(crate::ValidationError {
10304                    problem: "contains `khr_fragment_shader_barycentric`".into(),
10305                    requires_one_of: crate::RequiresOneOf(&[
10306                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10307                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10308                            "khr_get_physical_device_properties2",
10309                        )]),
10310                    ]),
10311                    ..Default::default()
10312                }));
10313            }
10314        }
10315        if self.khr_fragment_shading_rate {
10316            if !supported.khr_fragment_shading_rate {
10317                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_fragment_shading_rate`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10318            }
10319            if !(api_version >= crate::Version::V1_1
10320                || instance_extensions.khr_get_physical_device_properties2)
10321            {
10322                return Err(Box::new(crate::ValidationError {
10323                    problem: "contains `khr_fragment_shading_rate`".into(),
10324                    requires_one_of: crate::RequiresOneOf(&[
10325                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10326                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10327                            "khr_get_physical_device_properties2",
10328                        )]),
10329                    ]),
10330                    ..Default::default()
10331                }));
10332            }
10333        }
10334        if self.khr_get_memory_requirements2 {
10335            if !supported.khr_get_memory_requirements2 {
10336                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_get_memory_requirements2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10337            }
10338        }
10339        if self.khr_global_priority {
10340            if !supported.khr_global_priority {
10341                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_global_priority`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10342            }
10343            if !(api_version >= crate::Version::V1_1
10344                || instance_extensions.khr_get_physical_device_properties2)
10345            {
10346                return Err(Box::new(crate::ValidationError {
10347                    problem: "contains `khr_global_priority`".into(),
10348                    requires_one_of: crate::RequiresOneOf(&[
10349                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10350                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10351                            "khr_get_physical_device_properties2",
10352                        )]),
10353                    ]),
10354                    ..Default::default()
10355                }));
10356            }
10357        }
10358        if self.khr_image_format_list {
10359            if !supported.khr_image_format_list {
10360                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_image_format_list`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10361            }
10362        }
10363        if self.khr_imageless_framebuffer {
10364            if !supported.khr_imageless_framebuffer {
10365                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_imageless_framebuffer`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10366            }
10367            if !(api_version >= crate::Version::V1_1
10368                || instance_extensions.khr_get_physical_device_properties2)
10369            {
10370                return Err(Box::new(crate::ValidationError {
10371                    problem: "contains `khr_imageless_framebuffer`".into(),
10372                    requires_one_of: crate::RequiresOneOf(&[
10373                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10374                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10375                            "khr_get_physical_device_properties2",
10376                        )]),
10377                    ]),
10378                    ..Default::default()
10379                }));
10380            }
10381        }
10382        if self.khr_incremental_present {
10383            if !supported.khr_incremental_present {
10384                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_incremental_present`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10385            }
10386        }
10387        if self.khr_index_type_uint8 {
10388            if !supported.khr_index_type_uint8 {
10389                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_index_type_uint8`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10390            }
10391            if !(api_version >= crate::Version::V1_1
10392                || instance_extensions.khr_get_physical_device_properties2)
10393            {
10394                return Err(Box::new(crate::ValidationError {
10395                    problem: "contains `khr_index_type_uint8`".into(),
10396                    requires_one_of: crate::RequiresOneOf(&[
10397                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10398                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10399                            "khr_get_physical_device_properties2",
10400                        )]),
10401                    ]),
10402                    ..Default::default()
10403                }));
10404            }
10405        }
10406        if self.khr_line_rasterization {
10407            if !supported.khr_line_rasterization {
10408                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_line_rasterization`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10409            }
10410            if !(api_version >= crate::Version::V1_1
10411                || instance_extensions.khr_get_physical_device_properties2)
10412            {
10413                return Err(Box::new(crate::ValidationError {
10414                    problem: "contains `khr_line_rasterization`".into(),
10415                    requires_one_of: crate::RequiresOneOf(&[
10416                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10417                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10418                            "khr_get_physical_device_properties2",
10419                        )]),
10420                    ]),
10421                    ..Default::default()
10422                }));
10423            }
10424        }
10425        if self.khr_load_store_op_none {
10426            if !supported.khr_load_store_op_none {
10427                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_load_store_op_none`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10428            }
10429        }
10430        if self.khr_maintenance1 {
10431            if !supported.khr_maintenance1 {
10432                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_maintenance1`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10433            }
10434        }
10435        if self.khr_maintenance2 {
10436            if !supported.khr_maintenance2 {
10437                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_maintenance2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10438            }
10439        }
10440        if self.khr_maintenance3 {
10441            if !supported.khr_maintenance3 {
10442                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_maintenance3`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10443            }
10444            if !(api_version >= crate::Version::V1_1
10445                || instance_extensions.khr_get_physical_device_properties2)
10446            {
10447                return Err(Box::new(crate::ValidationError {
10448                    problem: "contains `khr_maintenance3`".into(),
10449                    requires_one_of: crate::RequiresOneOf(&[
10450                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10451                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10452                            "khr_get_physical_device_properties2",
10453                        )]),
10454                    ]),
10455                    ..Default::default()
10456                }));
10457            }
10458        }
10459        if self.khr_maintenance4 {
10460            if !supported.khr_maintenance4 {
10461                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_maintenance4`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10462            }
10463            if !(api_version >= crate::Version::V1_1) {
10464                return Err(Box::new(crate::ValidationError {
10465                    problem: "contains `khr_maintenance4`".into(),
10466                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
10467                        crate::Requires::APIVersion(crate::Version::V1_1),
10468                    ])]),
10469                    ..Default::default()
10470                }));
10471            }
10472        }
10473        if self.khr_maintenance5 {
10474            if !supported.khr_maintenance5 {
10475                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_maintenance5`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10476            }
10477            if !(api_version >= crate::Version::V1_1) {
10478                return Err(Box::new(crate::ValidationError {
10479                    problem: "contains `khr_maintenance5`".into(),
10480                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
10481                        crate::Requires::APIVersion(crate::Version::V1_1),
10482                    ])]),
10483                    ..Default::default()
10484                }));
10485            }
10486        }
10487        if self.khr_maintenance6 {
10488            if !supported.khr_maintenance6 {
10489                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_maintenance6`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10490            }
10491            if !(api_version >= crate::Version::V1_1) {
10492                return Err(Box::new(crate::ValidationError {
10493                    problem: "contains `khr_maintenance6`".into(),
10494                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
10495                        crate::Requires::APIVersion(crate::Version::V1_1),
10496                    ])]),
10497                    ..Default::default()
10498                }));
10499            }
10500        }
10501        if self.khr_map_memory2 {
10502            if !supported.khr_map_memory2 {
10503                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_map_memory2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10504            }
10505        }
10506        if self.khr_multiview {
10507            if !supported.khr_multiview {
10508                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_multiview`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10509            }
10510            if !(api_version >= crate::Version::V1_1
10511                || instance_extensions.khr_get_physical_device_properties2)
10512            {
10513                return Err(Box::new(crate::ValidationError {
10514                    problem: "contains `khr_multiview`".into(),
10515                    requires_one_of: crate::RequiresOneOf(&[
10516                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10517                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10518                            "khr_get_physical_device_properties2",
10519                        )]),
10520                    ]),
10521                    ..Default::default()
10522                }));
10523            }
10524        }
10525        if self.khr_performance_query {
10526            if !supported.khr_performance_query {
10527                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_performance_query`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10528            }
10529            if !(api_version >= crate::Version::V1_1
10530                || instance_extensions.khr_get_physical_device_properties2)
10531            {
10532                return Err(Box::new(crate::ValidationError {
10533                    problem: "contains `khr_performance_query`".into(),
10534                    requires_one_of: crate::RequiresOneOf(&[
10535                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10536                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10537                            "khr_get_physical_device_properties2",
10538                        )]),
10539                    ]),
10540                    ..Default::default()
10541                }));
10542            }
10543        }
10544        if self.khr_pipeline_executable_properties {
10545            if !supported.khr_pipeline_executable_properties {
10546                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_pipeline_executable_properties`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10547            }
10548            if !(api_version >= crate::Version::V1_1
10549                || instance_extensions.khr_get_physical_device_properties2)
10550            {
10551                return Err(Box::new(crate::ValidationError {
10552                    problem: "contains `khr_pipeline_executable_properties`".into(),
10553                    requires_one_of: crate::RequiresOneOf(&[
10554                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10555                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10556                            "khr_get_physical_device_properties2",
10557                        )]),
10558                    ]),
10559                    ..Default::default()
10560                }));
10561            }
10562        }
10563        if self.khr_pipeline_library {
10564            if !supported.khr_pipeline_library {
10565                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_pipeline_library`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10566            }
10567        }
10568        if self.khr_portability_subset {
10569            if !supported.khr_portability_subset {
10570                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_portability_subset`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10571            }
10572            if !(api_version >= crate::Version::V1_1
10573                || instance_extensions.khr_get_physical_device_properties2)
10574            {
10575                return Err(Box::new(crate::ValidationError {
10576                    problem: "contains `khr_portability_subset`".into(),
10577                    requires_one_of: crate::RequiresOneOf(&[
10578                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10579                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10580                            "khr_get_physical_device_properties2",
10581                        )]),
10582                    ]),
10583                    ..Default::default()
10584                }));
10585            }
10586        }
10587        if self.khr_present_id {
10588            if !supported.khr_present_id {
10589                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_present_id`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10590            }
10591            if !(api_version >= crate::Version::V1_1
10592                || instance_extensions.khr_get_physical_device_properties2)
10593            {
10594                return Err(Box::new(crate::ValidationError {
10595                    problem: "contains `khr_present_id`".into(),
10596                    requires_one_of: crate::RequiresOneOf(&[
10597                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10598                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10599                            "khr_get_physical_device_properties2",
10600                        )]),
10601                    ]),
10602                    ..Default::default()
10603                }));
10604            }
10605        }
10606        if self.khr_present_wait {
10607            if !supported.khr_present_wait {
10608                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_present_wait`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10609            }
10610        }
10611        if self.khr_push_descriptor {
10612            if !supported.khr_push_descriptor {
10613                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_push_descriptor`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10614            }
10615            if !(api_version >= crate::Version::V1_1
10616                || instance_extensions.khr_get_physical_device_properties2)
10617            {
10618                return Err(Box::new(crate::ValidationError {
10619                    problem: "contains `khr_push_descriptor`".into(),
10620                    requires_one_of: crate::RequiresOneOf(&[
10621                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10622                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10623                            "khr_get_physical_device_properties2",
10624                        )]),
10625                    ]),
10626                    ..Default::default()
10627                }));
10628            }
10629        }
10630        if self.khr_ray_query {
10631            if !supported.khr_ray_query {
10632                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_ray_query`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10633            }
10634        }
10635        if self.khr_ray_tracing_maintenance1 {
10636            if !supported.khr_ray_tracing_maintenance1 {
10637                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_ray_tracing_maintenance1`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10638            }
10639        }
10640        if self.khr_ray_tracing_pipeline {
10641            if !supported.khr_ray_tracing_pipeline {
10642                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_ray_tracing_pipeline`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10643            }
10644        }
10645        if self.khr_ray_tracing_position_fetch {
10646            if !supported.khr_ray_tracing_position_fetch {
10647                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_ray_tracing_position_fetch`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10648            }
10649        }
10650        if self.khr_relaxed_block_layout {
10651            if !supported.khr_relaxed_block_layout {
10652                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_relaxed_block_layout`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10653            }
10654        }
10655        if self.khr_sampler_mirror_clamp_to_edge {
10656            if !supported.khr_sampler_mirror_clamp_to_edge {
10657                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_sampler_mirror_clamp_to_edge`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10658            }
10659        }
10660        if self.khr_sampler_ycbcr_conversion {
10661            if !supported.khr_sampler_ycbcr_conversion {
10662                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_sampler_ycbcr_conversion`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10663            }
10664            if !(api_version >= crate::Version::V1_1
10665                || instance_extensions.khr_get_physical_device_properties2)
10666            {
10667                return Err(Box::new(crate::ValidationError {
10668                    problem: "contains `khr_sampler_ycbcr_conversion`".into(),
10669                    requires_one_of: crate::RequiresOneOf(&[
10670                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10671                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10672                            "khr_get_physical_device_properties2",
10673                        )]),
10674                    ]),
10675                    ..Default::default()
10676                }));
10677            }
10678        }
10679        if self.khr_separate_depth_stencil_layouts {
10680            if !supported.khr_separate_depth_stencil_layouts {
10681                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_separate_depth_stencil_layouts`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10682            }
10683            if !(api_version >= crate::Version::V1_1
10684                || instance_extensions.khr_get_physical_device_properties2)
10685            {
10686                return Err(Box::new(crate::ValidationError {
10687                    problem: "contains `khr_separate_depth_stencil_layouts`".into(),
10688                    requires_one_of: crate::RequiresOneOf(&[
10689                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10690                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10691                            "khr_get_physical_device_properties2",
10692                        )]),
10693                    ]),
10694                    ..Default::default()
10695                }));
10696            }
10697        }
10698        if self.khr_shader_atomic_int64 {
10699            if !supported.khr_shader_atomic_int64 {
10700                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_atomic_int64`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10701            }
10702            if !(api_version >= crate::Version::V1_1
10703                || instance_extensions.khr_get_physical_device_properties2)
10704            {
10705                return Err(Box::new(crate::ValidationError {
10706                    problem: "contains `khr_shader_atomic_int64`".into(),
10707                    requires_one_of: crate::RequiresOneOf(&[
10708                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10709                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10710                            "khr_get_physical_device_properties2",
10711                        )]),
10712                    ]),
10713                    ..Default::default()
10714                }));
10715            }
10716        }
10717        if self.khr_shader_clock {
10718            if !supported.khr_shader_clock {
10719                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_clock`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10720            }
10721            if !(api_version >= crate::Version::V1_1
10722                || instance_extensions.khr_get_physical_device_properties2)
10723            {
10724                return Err(Box::new(crate::ValidationError {
10725                    problem: "contains `khr_shader_clock`".into(),
10726                    requires_one_of: crate::RequiresOneOf(&[
10727                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10728                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10729                            "khr_get_physical_device_properties2",
10730                        )]),
10731                    ]),
10732                    ..Default::default()
10733                }));
10734            }
10735        }
10736        if self.khr_shader_draw_parameters {
10737            if !supported.khr_shader_draw_parameters {
10738                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_draw_parameters`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10739            }
10740        }
10741        if self.khr_shader_expect_assume {
10742            if !supported.khr_shader_expect_assume {
10743                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_expect_assume`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10744            }
10745            if !(api_version >= crate::Version::V1_1
10746                || instance_extensions.khr_get_physical_device_properties2)
10747            {
10748                return Err(Box::new(crate::ValidationError {
10749                    problem: "contains `khr_shader_expect_assume`".into(),
10750                    requires_one_of: crate::RequiresOneOf(&[
10751                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10752                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10753                            "khr_get_physical_device_properties2",
10754                        )]),
10755                    ]),
10756                    ..Default::default()
10757                }));
10758            }
10759        }
10760        if self.khr_shader_float16_int8 {
10761            if !supported.khr_shader_float16_int8 {
10762                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_float16_int8`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10763            }
10764            if !(api_version >= crate::Version::V1_1
10765                || instance_extensions.khr_get_physical_device_properties2)
10766            {
10767                return Err(Box::new(crate::ValidationError {
10768                    problem: "contains `khr_shader_float16_int8`".into(),
10769                    requires_one_of: crate::RequiresOneOf(&[
10770                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10771                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10772                            "khr_get_physical_device_properties2",
10773                        )]),
10774                    ]),
10775                    ..Default::default()
10776                }));
10777            }
10778        }
10779        if self.khr_shader_float_controls {
10780            if !supported.khr_shader_float_controls {
10781                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_float_controls`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10782            }
10783            if !(api_version >= crate::Version::V1_1
10784                || instance_extensions.khr_get_physical_device_properties2)
10785            {
10786                return Err(Box::new(crate::ValidationError {
10787                    problem: "contains `khr_shader_float_controls`".into(),
10788                    requires_one_of: crate::RequiresOneOf(&[
10789                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10790                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10791                            "khr_get_physical_device_properties2",
10792                        )]),
10793                    ]),
10794                    ..Default::default()
10795                }));
10796            }
10797        }
10798        if self.khr_shader_float_controls2 {
10799            if !supported.khr_shader_float_controls2 {
10800                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_float_controls2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10801            }
10802            if !(api_version >= crate::Version::V1_1) {
10803                return Err(Box::new(crate::ValidationError {
10804                    problem: "contains `khr_shader_float_controls2`".into(),
10805                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
10806                        crate::Requires::APIVersion(crate::Version::V1_1),
10807                    ])]),
10808                    ..Default::default()
10809                }));
10810            }
10811        }
10812        if self.khr_shader_integer_dot_product {
10813            if !supported.khr_shader_integer_dot_product {
10814                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_integer_dot_product`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10815            }
10816            if !(api_version >= crate::Version::V1_1
10817                || instance_extensions.khr_get_physical_device_properties2)
10818            {
10819                return Err(Box::new(crate::ValidationError {
10820                    problem: "contains `khr_shader_integer_dot_product`".into(),
10821                    requires_one_of: crate::RequiresOneOf(&[
10822                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10823                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10824                            "khr_get_physical_device_properties2",
10825                        )]),
10826                    ]),
10827                    ..Default::default()
10828                }));
10829            }
10830        }
10831        if self.khr_shader_maximal_reconvergence {
10832            if !supported.khr_shader_maximal_reconvergence {
10833                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_maximal_reconvergence`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10834            }
10835            if !(api_version >= crate::Version::V1_1) {
10836                return Err(Box::new(crate::ValidationError {
10837                    problem: "contains `khr_shader_maximal_reconvergence`".into(),
10838                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
10839                        crate::Requires::APIVersion(crate::Version::V1_1),
10840                    ])]),
10841                    ..Default::default()
10842                }));
10843            }
10844        }
10845        if self.khr_shader_non_semantic_info {
10846            if !supported.khr_shader_non_semantic_info {
10847                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_non_semantic_info`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10848            }
10849        }
10850        if self.khr_shader_quad_control {
10851            if !supported.khr_shader_quad_control {
10852                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_quad_control`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10853            }
10854            if !(api_version >= crate::Version::V1_1) {
10855                return Err(Box::new(crate::ValidationError {
10856                    problem: "contains `khr_shader_quad_control`".into(),
10857                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
10858                        crate::Requires::APIVersion(crate::Version::V1_1),
10859                    ])]),
10860                    ..Default::default()
10861                }));
10862            }
10863        }
10864        if self.khr_shader_subgroup_extended_types {
10865            if !supported.khr_shader_subgroup_extended_types {
10866                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_subgroup_extended_types`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10867            }
10868            if !(api_version >= crate::Version::V1_1) {
10869                return Err(Box::new(crate::ValidationError {
10870                    problem: "contains `khr_shader_subgroup_extended_types`".into(),
10871                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
10872                        crate::Requires::APIVersion(crate::Version::V1_1),
10873                    ])]),
10874                    ..Default::default()
10875                }));
10876            }
10877        }
10878        if self.khr_shader_subgroup_rotate {
10879            if !supported.khr_shader_subgroup_rotate {
10880                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_subgroup_rotate`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10881            }
10882        }
10883        if self.khr_shader_subgroup_uniform_control_flow {
10884            if !supported.khr_shader_subgroup_uniform_control_flow {
10885                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_subgroup_uniform_control_flow`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10886            }
10887            if !(api_version >= crate::Version::V1_1) {
10888                return Err(Box::new(crate::ValidationError {
10889                    problem: "contains `khr_shader_subgroup_uniform_control_flow`".into(),
10890                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
10891                        crate::Requires::APIVersion(crate::Version::V1_1),
10892                    ])]),
10893                    ..Default::default()
10894                }));
10895            }
10896        }
10897        if self.khr_shader_terminate_invocation {
10898            if !supported.khr_shader_terminate_invocation {
10899                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shader_terminate_invocation`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10900            }
10901            if !(api_version >= crate::Version::V1_1
10902                || instance_extensions.khr_get_physical_device_properties2)
10903            {
10904                return Err(Box::new(crate::ValidationError {
10905                    problem: "contains `khr_shader_terminate_invocation`".into(),
10906                    requires_one_of: crate::RequiresOneOf(&[
10907                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10908                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10909                            "khr_get_physical_device_properties2",
10910                        )]),
10911                    ]),
10912                    ..Default::default()
10913                }));
10914            }
10915        }
10916        if self.khr_shared_presentable_image {
10917            if !supported.khr_shared_presentable_image {
10918                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_shared_presentable_image`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10919            }
10920            if !(instance_extensions.khr_get_surface_capabilities2) {
10921                return Err(Box::new(crate::ValidationError {
10922                    problem: "contains `khr_shared_presentable_image`".into(),
10923                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
10924                        crate::Requires::InstanceExtension("khr_get_surface_capabilities2"),
10925                    ])]),
10926                    ..Default::default()
10927                }));
10928            }
10929            if !(api_version >= crate::Version::V1_1
10930                || instance_extensions.khr_get_physical_device_properties2)
10931            {
10932                return Err(Box::new(crate::ValidationError {
10933                    problem: "contains `khr_shared_presentable_image`".into(),
10934                    requires_one_of: crate::RequiresOneOf(&[
10935                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10936                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10937                            "khr_get_physical_device_properties2",
10938                        )]),
10939                    ]),
10940                    ..Default::default()
10941                }));
10942            }
10943        }
10944        if self.khr_spirv_1_4 {
10945            if !supported.khr_spirv_1_4 {
10946                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_spirv_1_4`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10947            }
10948            if !(api_version >= crate::Version::V1_1) {
10949                return Err(Box::new(crate::ValidationError {
10950                    problem: "contains `khr_spirv_1_4`".into(),
10951                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
10952                        crate::Requires::APIVersion(crate::Version::V1_1),
10953                    ])]),
10954                    ..Default::default()
10955                }));
10956            }
10957        }
10958        if self.khr_storage_buffer_storage_class {
10959            if !supported.khr_storage_buffer_storage_class {
10960                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_storage_buffer_storage_class`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10961            }
10962        }
10963        if self.khr_swapchain {
10964            if !supported.khr_swapchain {
10965                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_swapchain`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10966            }
10967            if !(instance_extensions.khr_surface) {
10968                return Err(Box::new(crate::ValidationError {
10969                    problem: "contains `khr_swapchain`".into(),
10970                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
10971                        crate::Requires::InstanceExtension("khr_surface"),
10972                    ])]),
10973                    ..Default::default()
10974                }));
10975            }
10976        }
10977        if self.khr_swapchain_mutable_format {
10978            if !supported.khr_swapchain_mutable_format {
10979                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_swapchain_mutable_format`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10980            }
10981        }
10982        if self.khr_synchronization2 {
10983            if !supported.khr_synchronization2 {
10984                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_synchronization2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
10985            }
10986            if !(api_version >= crate::Version::V1_1
10987                || instance_extensions.khr_get_physical_device_properties2)
10988            {
10989                return Err(Box::new(crate::ValidationError {
10990                    problem: "contains `khr_synchronization2`".into(),
10991                    requires_one_of: crate::RequiresOneOf(&[
10992                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
10993                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
10994                            "khr_get_physical_device_properties2",
10995                        )]),
10996                    ]),
10997                    ..Default::default()
10998                }));
10999            }
11000        }
11001        if self.khr_timeline_semaphore {
11002            if !supported.khr_timeline_semaphore {
11003                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_timeline_semaphore`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11004            }
11005            if !(api_version >= crate::Version::V1_1
11006                || instance_extensions.khr_get_physical_device_properties2)
11007            {
11008                return Err(Box::new(crate::ValidationError {
11009                    problem: "contains `khr_timeline_semaphore`".into(),
11010                    requires_one_of: crate::RequiresOneOf(&[
11011                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11012                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11013                            "khr_get_physical_device_properties2",
11014                        )]),
11015                    ]),
11016                    ..Default::default()
11017                }));
11018            }
11019        }
11020        if self.khr_uniform_buffer_standard_layout {
11021            if !supported.khr_uniform_buffer_standard_layout {
11022                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_uniform_buffer_standard_layout`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11023            }
11024            if !(api_version >= crate::Version::V1_1
11025                || instance_extensions.khr_get_physical_device_properties2)
11026            {
11027                return Err(Box::new(crate::ValidationError {
11028                    problem: "contains `khr_uniform_buffer_standard_layout`".into(),
11029                    requires_one_of: crate::RequiresOneOf(&[
11030                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11031                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11032                            "khr_get_physical_device_properties2",
11033                        )]),
11034                    ]),
11035                    ..Default::default()
11036                }));
11037            }
11038        }
11039        if self.khr_variable_pointers {
11040            if !supported.khr_variable_pointers {
11041                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_variable_pointers`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11042            }
11043            if !(api_version >= crate::Version::V1_1
11044                || instance_extensions.khr_get_physical_device_properties2)
11045            {
11046                return Err(Box::new(crate::ValidationError {
11047                    problem: "contains `khr_variable_pointers`".into(),
11048                    requires_one_of: crate::RequiresOneOf(&[
11049                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11050                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11051                            "khr_get_physical_device_properties2",
11052                        )]),
11053                    ]),
11054                    ..Default::default()
11055                }));
11056            }
11057        }
11058        if self.khr_vertex_attribute_divisor {
11059            if !supported.khr_vertex_attribute_divisor {
11060                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_vertex_attribute_divisor`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11061            }
11062            if !(api_version >= crate::Version::V1_1
11063                || instance_extensions.khr_get_physical_device_properties2)
11064            {
11065                return Err(Box::new(crate::ValidationError {
11066                    problem: "contains `khr_vertex_attribute_divisor`".into(),
11067                    requires_one_of: crate::RequiresOneOf(&[
11068                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11069                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11070                            "khr_get_physical_device_properties2",
11071                        )]),
11072                    ]),
11073                    ..Default::default()
11074                }));
11075            }
11076        }
11077        if self.khr_video_decode_av1 {
11078            if !supported.khr_video_decode_av1 {
11079                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_video_decode_av1`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11080            }
11081        }
11082        if self.khr_video_decode_h264 {
11083            if !supported.khr_video_decode_h264 {
11084                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_video_decode_h264`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11085            }
11086        }
11087        if self.khr_video_decode_h265 {
11088            if !supported.khr_video_decode_h265 {
11089                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_video_decode_h265`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11090            }
11091        }
11092        if self.khr_video_decode_queue {
11093            if !supported.khr_video_decode_queue {
11094                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_video_decode_queue`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11095            }
11096        }
11097        if self.khr_video_encode_h264 {
11098            if !supported.khr_video_encode_h264 {
11099                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_video_encode_h264`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11100            }
11101        }
11102        if self.khr_video_encode_h265 {
11103            if !supported.khr_video_encode_h265 {
11104                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_video_encode_h265`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11105            }
11106        }
11107        if self.khr_video_encode_queue {
11108            if !supported.khr_video_encode_queue {
11109                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_video_encode_queue`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11110            }
11111        }
11112        if self.khr_video_maintenance1 {
11113            if !supported.khr_video_maintenance1 {
11114                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_video_maintenance1`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11115            }
11116        }
11117        if self.khr_video_queue {
11118            if !supported.khr_video_queue {
11119                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_video_queue`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11120            }
11121            if !(api_version >= crate::Version::V1_1) {
11122                return Err(Box::new(crate::ValidationError {
11123                    problem: "contains `khr_video_queue`".into(),
11124                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
11125                        crate::Requires::APIVersion(crate::Version::V1_1),
11126                    ])]),
11127                    ..Default::default()
11128                }));
11129            }
11130        }
11131        if self.khr_vulkan_memory_model {
11132            if !supported.khr_vulkan_memory_model {
11133                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_vulkan_memory_model`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11134            }
11135            if !(api_version >= crate::Version::V1_1
11136                || instance_extensions.khr_get_physical_device_properties2)
11137            {
11138                return Err(Box::new(crate::ValidationError {
11139                    problem: "contains `khr_vulkan_memory_model`".into(),
11140                    requires_one_of: crate::RequiresOneOf(&[
11141                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11142                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11143                            "khr_get_physical_device_properties2",
11144                        )]),
11145                    ]),
11146                    ..Default::default()
11147                }));
11148            }
11149        }
11150        if self.khr_win32_keyed_mutex {
11151            if !supported.khr_win32_keyed_mutex {
11152                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_win32_keyed_mutex`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11153            }
11154        }
11155        if self.khr_workgroup_memory_explicit_layout {
11156            if !supported.khr_workgroup_memory_explicit_layout {
11157                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_workgroup_memory_explicit_layout`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11158            }
11159            if !(api_version >= crate::Version::V1_1
11160                || instance_extensions.khr_get_physical_device_properties2)
11161            {
11162                return Err(Box::new(crate::ValidationError {
11163                    problem: "contains `khr_workgroup_memory_explicit_layout`".into(),
11164                    requires_one_of: crate::RequiresOneOf(&[
11165                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11166                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11167                            "khr_get_physical_device_properties2",
11168                        )]),
11169                    ]),
11170                    ..Default::default()
11171                }));
11172            }
11173        }
11174        if self.khr_zero_initialize_workgroup_memory {
11175            if !supported.khr_zero_initialize_workgroup_memory {
11176                return Err (Box :: new (crate :: ValidationError { problem : "contains `khr_zero_initialize_workgroup_memory`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11177            }
11178            if !(api_version >= crate::Version::V1_1
11179                || instance_extensions.khr_get_physical_device_properties2)
11180            {
11181                return Err(Box::new(crate::ValidationError {
11182                    problem: "contains `khr_zero_initialize_workgroup_memory`".into(),
11183                    requires_one_of: crate::RequiresOneOf(&[
11184                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11185                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11186                            "khr_get_physical_device_properties2",
11187                        )]),
11188                    ]),
11189                    ..Default::default()
11190                }));
11191            }
11192        }
11193        if self.ext_4444_formats {
11194            if !supported.ext_4444_formats {
11195                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_4444_formats`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11196            }
11197            if !(api_version >= crate::Version::V1_1
11198                || instance_extensions.khr_get_physical_device_properties2)
11199            {
11200                return Err(Box::new(crate::ValidationError {
11201                    problem: "contains `ext_4444_formats`".into(),
11202                    requires_one_of: crate::RequiresOneOf(&[
11203                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11204                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11205                            "khr_get_physical_device_properties2",
11206                        )]),
11207                    ]),
11208                    ..Default::default()
11209                }));
11210            }
11211        }
11212        if self.ext_astc_decode_mode {
11213            if !supported.ext_astc_decode_mode {
11214                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_astc_decode_mode`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11215            }
11216            if !(api_version >= crate::Version::V1_1
11217                || instance_extensions.khr_get_physical_device_properties2)
11218            {
11219                return Err(Box::new(crate::ValidationError {
11220                    problem: "contains `ext_astc_decode_mode`".into(),
11221                    requires_one_of: crate::RequiresOneOf(&[
11222                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11223                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11224                            "khr_get_physical_device_properties2",
11225                        )]),
11226                    ]),
11227                    ..Default::default()
11228                }));
11229            }
11230        }
11231        if self.ext_attachment_feedback_loop_dynamic_state {
11232            if !supported.ext_attachment_feedback_loop_dynamic_state {
11233                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_attachment_feedback_loop_dynamic_state`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11234            }
11235            if !(api_version >= crate::Version::V1_1
11236                || instance_extensions.khr_get_physical_device_properties2)
11237            {
11238                return Err(Box::new(crate::ValidationError {
11239                    problem: "contains `ext_attachment_feedback_loop_dynamic_state`".into(),
11240                    requires_one_of: crate::RequiresOneOf(&[
11241                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11242                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11243                            "khr_get_physical_device_properties2",
11244                        )]),
11245                    ]),
11246                    ..Default::default()
11247                }));
11248            }
11249        }
11250        if self.ext_attachment_feedback_loop_layout {
11251            if !supported.ext_attachment_feedback_loop_layout {
11252                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_attachment_feedback_loop_layout`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11253            }
11254            if !(api_version >= crate::Version::V1_1
11255                || instance_extensions.khr_get_physical_device_properties2)
11256            {
11257                return Err(Box::new(crate::ValidationError {
11258                    problem: "contains `ext_attachment_feedback_loop_layout`".into(),
11259                    requires_one_of: crate::RequiresOneOf(&[
11260                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11261                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11262                            "khr_get_physical_device_properties2",
11263                        )]),
11264                    ]),
11265                    ..Default::default()
11266                }));
11267            }
11268        }
11269        if self.ext_blend_operation_advanced {
11270            if !supported.ext_blend_operation_advanced {
11271                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_blend_operation_advanced`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11272            }
11273            if !(api_version >= crate::Version::V1_1
11274                || instance_extensions.khr_get_physical_device_properties2)
11275            {
11276                return Err(Box::new(crate::ValidationError {
11277                    problem: "contains `ext_blend_operation_advanced`".into(),
11278                    requires_one_of: crate::RequiresOneOf(&[
11279                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11280                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11281                            "khr_get_physical_device_properties2",
11282                        )]),
11283                    ]),
11284                    ..Default::default()
11285                }));
11286            }
11287        }
11288        if self.ext_border_color_swizzle {
11289            if !supported.ext_border_color_swizzle {
11290                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_border_color_swizzle`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11291            }
11292        }
11293        if self.ext_buffer_device_address {
11294            if !supported.ext_buffer_device_address {
11295                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_buffer_device_address`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11296            }
11297            if !(api_version >= crate::Version::V1_1
11298                || instance_extensions.khr_get_physical_device_properties2)
11299            {
11300                return Err(Box::new(crate::ValidationError {
11301                    problem: "contains `ext_buffer_device_address`".into(),
11302                    requires_one_of: crate::RequiresOneOf(&[
11303                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11304                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11305                            "khr_get_physical_device_properties2",
11306                        )]),
11307                    ]),
11308                    ..Default::default()
11309                }));
11310            }
11311        }
11312        if self.ext_calibrated_timestamps {
11313            if !supported.ext_calibrated_timestamps {
11314                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_calibrated_timestamps`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11315            }
11316            if !(api_version >= crate::Version::V1_1
11317                || instance_extensions.khr_get_physical_device_properties2)
11318            {
11319                return Err(Box::new(crate::ValidationError {
11320                    problem: "contains `ext_calibrated_timestamps`".into(),
11321                    requires_one_of: crate::RequiresOneOf(&[
11322                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11323                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11324                            "khr_get_physical_device_properties2",
11325                        )]),
11326                    ]),
11327                    ..Default::default()
11328                }));
11329            }
11330        }
11331        if self.ext_color_write_enable {
11332            if !supported.ext_color_write_enable {
11333                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_color_write_enable`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11334            }
11335            if !(api_version >= crate::Version::V1_1
11336                || instance_extensions.khr_get_physical_device_properties2)
11337            {
11338                return Err(Box::new(crate::ValidationError {
11339                    problem: "contains `ext_color_write_enable`".into(),
11340                    requires_one_of: crate::RequiresOneOf(&[
11341                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11342                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11343                            "khr_get_physical_device_properties2",
11344                        )]),
11345                    ]),
11346                    ..Default::default()
11347                }));
11348            }
11349        }
11350        if self.ext_conditional_rendering {
11351            if !supported.ext_conditional_rendering {
11352                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_conditional_rendering`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11353            }
11354            if !(api_version >= crate::Version::V1_1
11355                || instance_extensions.khr_get_physical_device_properties2)
11356            {
11357                return Err(Box::new(crate::ValidationError {
11358                    problem: "contains `ext_conditional_rendering`".into(),
11359                    requires_one_of: crate::RequiresOneOf(&[
11360                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11361                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11362                            "khr_get_physical_device_properties2",
11363                        )]),
11364                    ]),
11365                    ..Default::default()
11366                }));
11367            }
11368        }
11369        if self.ext_conservative_rasterization {
11370            if !supported.ext_conservative_rasterization {
11371                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_conservative_rasterization`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11372            }
11373            if !(api_version >= crate::Version::V1_1
11374                || instance_extensions.khr_get_physical_device_properties2)
11375            {
11376                return Err(Box::new(crate::ValidationError {
11377                    problem: "contains `ext_conservative_rasterization`".into(),
11378                    requires_one_of: crate::RequiresOneOf(&[
11379                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11380                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11381                            "khr_get_physical_device_properties2",
11382                        )]),
11383                    ]),
11384                    ..Default::default()
11385                }));
11386            }
11387        }
11388        if self.ext_custom_border_color {
11389            if !supported.ext_custom_border_color {
11390                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_custom_border_color`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11391            }
11392            if !(api_version >= crate::Version::V1_1
11393                || instance_extensions.khr_get_physical_device_properties2)
11394            {
11395                return Err(Box::new(crate::ValidationError {
11396                    problem: "contains `ext_custom_border_color`".into(),
11397                    requires_one_of: crate::RequiresOneOf(&[
11398                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11399                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11400                            "khr_get_physical_device_properties2",
11401                        )]),
11402                    ]),
11403                    ..Default::default()
11404                }));
11405            }
11406        }
11407        if self.ext_debug_marker {
11408            if !supported.ext_debug_marker {
11409                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_debug_marker`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11410            }
11411            if !(instance_extensions.ext_debug_report) {
11412                return Err(Box::new(crate::ValidationError {
11413                    problem: "contains `ext_debug_marker`".into(),
11414                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
11415                        crate::Requires::InstanceExtension("ext_debug_report"),
11416                    ])]),
11417                    ..Default::default()
11418                }));
11419            }
11420        }
11421        if self.ext_depth_bias_control {
11422            if !supported.ext_depth_bias_control {
11423                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_depth_bias_control`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11424            }
11425            if !(api_version >= crate::Version::V1_1
11426                || instance_extensions.khr_get_physical_device_properties2)
11427            {
11428                return Err(Box::new(crate::ValidationError {
11429                    problem: "contains `ext_depth_bias_control`".into(),
11430                    requires_one_of: crate::RequiresOneOf(&[
11431                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11432                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11433                            "khr_get_physical_device_properties2",
11434                        )]),
11435                    ]),
11436                    ..Default::default()
11437                }));
11438            }
11439        }
11440        if self.ext_depth_clamp_zero_one {
11441            if !supported.ext_depth_clamp_zero_one {
11442                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_depth_clamp_zero_one`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11443            }
11444            if !(api_version >= crate::Version::V1_1
11445                || instance_extensions.khr_get_physical_device_properties2)
11446            {
11447                return Err(Box::new(crate::ValidationError {
11448                    problem: "contains `ext_depth_clamp_zero_one`".into(),
11449                    requires_one_of: crate::RequiresOneOf(&[
11450                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11451                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11452                            "khr_get_physical_device_properties2",
11453                        )]),
11454                    ]),
11455                    ..Default::default()
11456                }));
11457            }
11458        }
11459        if self.ext_depth_clip_control {
11460            if !supported.ext_depth_clip_control {
11461                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_depth_clip_control`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11462            }
11463            if !(api_version >= crate::Version::V1_1
11464                || instance_extensions.khr_get_physical_device_properties2)
11465            {
11466                return Err(Box::new(crate::ValidationError {
11467                    problem: "contains `ext_depth_clip_control`".into(),
11468                    requires_one_of: crate::RequiresOneOf(&[
11469                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11470                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11471                            "khr_get_physical_device_properties2",
11472                        )]),
11473                    ]),
11474                    ..Default::default()
11475                }));
11476            }
11477        }
11478        if self.ext_depth_clip_enable {
11479            if !supported.ext_depth_clip_enable {
11480                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_depth_clip_enable`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11481            }
11482            if !(api_version >= crate::Version::V1_1
11483                || instance_extensions.khr_get_physical_device_properties2)
11484            {
11485                return Err(Box::new(crate::ValidationError {
11486                    problem: "contains `ext_depth_clip_enable`".into(),
11487                    requires_one_of: crate::RequiresOneOf(&[
11488                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11489                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11490                            "khr_get_physical_device_properties2",
11491                        )]),
11492                    ]),
11493                    ..Default::default()
11494                }));
11495            }
11496        }
11497        if self.ext_depth_range_unrestricted {
11498            if !supported.ext_depth_range_unrestricted {
11499                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_depth_range_unrestricted`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11500            }
11501        }
11502        if self.ext_descriptor_buffer {
11503            if !supported.ext_descriptor_buffer {
11504                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_descriptor_buffer`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11505            }
11506            if !(api_version >= crate::Version::V1_1
11507                || instance_extensions.khr_get_physical_device_properties2)
11508            {
11509                return Err(Box::new(crate::ValidationError {
11510                    problem: "contains `ext_descriptor_buffer`".into(),
11511                    requires_one_of: crate::RequiresOneOf(&[
11512                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11513                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11514                            "khr_get_physical_device_properties2",
11515                        )]),
11516                    ]),
11517                    ..Default::default()
11518                }));
11519            }
11520        }
11521        if self.ext_descriptor_indexing {
11522            if !supported.ext_descriptor_indexing {
11523                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_descriptor_indexing`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11524            }
11525            if !(api_version >= crate::Version::V1_1
11526                || instance_extensions.khr_get_physical_device_properties2)
11527            {
11528                return Err(Box::new(crate::ValidationError {
11529                    problem: "contains `ext_descriptor_indexing`".into(),
11530                    requires_one_of: crate::RequiresOneOf(&[
11531                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11532                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11533                            "khr_get_physical_device_properties2",
11534                        )]),
11535                    ]),
11536                    ..Default::default()
11537                }));
11538            }
11539        }
11540        if self.ext_device_address_binding_report {
11541            if !supported.ext_device_address_binding_report {
11542                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_device_address_binding_report`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11543            }
11544            if !(api_version >= crate::Version::V1_1
11545                || instance_extensions.khr_get_physical_device_properties2)
11546            {
11547                return Err(Box::new(crate::ValidationError {
11548                    problem: "contains `ext_device_address_binding_report`".into(),
11549                    requires_one_of: crate::RequiresOneOf(&[
11550                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11551                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11552                            "khr_get_physical_device_properties2",
11553                        )]),
11554                    ]),
11555                    ..Default::default()
11556                }));
11557            }
11558            if !(instance_extensions.ext_debug_utils) {
11559                return Err(Box::new(crate::ValidationError {
11560                    problem: "contains `ext_device_address_binding_report`".into(),
11561                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
11562                        crate::Requires::InstanceExtension("ext_debug_utils"),
11563                    ])]),
11564                    ..Default::default()
11565                }));
11566            }
11567        }
11568        if self.ext_device_fault {
11569            if !supported.ext_device_fault {
11570                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_device_fault`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11571            }
11572            if !(api_version >= crate::Version::V1_1
11573                || instance_extensions.khr_get_physical_device_properties2)
11574            {
11575                return Err(Box::new(crate::ValidationError {
11576                    problem: "contains `ext_device_fault`".into(),
11577                    requires_one_of: crate::RequiresOneOf(&[
11578                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11579                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11580                            "khr_get_physical_device_properties2",
11581                        )]),
11582                    ]),
11583                    ..Default::default()
11584                }));
11585            }
11586        }
11587        if self.ext_device_memory_report {
11588            if !supported.ext_device_memory_report {
11589                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_device_memory_report`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11590            }
11591            if !(api_version >= crate::Version::V1_1
11592                || instance_extensions.khr_get_physical_device_properties2)
11593            {
11594                return Err(Box::new(crate::ValidationError {
11595                    problem: "contains `ext_device_memory_report`".into(),
11596                    requires_one_of: crate::RequiresOneOf(&[
11597                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11598                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11599                            "khr_get_physical_device_properties2",
11600                        )]),
11601                    ]),
11602                    ..Default::default()
11603                }));
11604            }
11605        }
11606        if self.ext_discard_rectangles {
11607            if !supported.ext_discard_rectangles {
11608                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_discard_rectangles`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11609            }
11610            if !(api_version >= crate::Version::V1_1
11611                || instance_extensions.khr_get_physical_device_properties2)
11612            {
11613                return Err(Box::new(crate::ValidationError {
11614                    problem: "contains `ext_discard_rectangles`".into(),
11615                    requires_one_of: crate::RequiresOneOf(&[
11616                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11617                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11618                            "khr_get_physical_device_properties2",
11619                        )]),
11620                    ]),
11621                    ..Default::default()
11622                }));
11623            }
11624        }
11625        if self.ext_display_control {
11626            if !supported.ext_display_control {
11627                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_display_control`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11628            }
11629            if !(instance_extensions.ext_display_surface_counter) {
11630                return Err(Box::new(crate::ValidationError {
11631                    problem: "contains `ext_display_control`".into(),
11632                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
11633                        crate::Requires::InstanceExtension("ext_display_surface_counter"),
11634                    ])]),
11635                    ..Default::default()
11636                }));
11637            }
11638        }
11639        if self.ext_dynamic_rendering_unused_attachments {
11640            if !supported.ext_dynamic_rendering_unused_attachments {
11641                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_dynamic_rendering_unused_attachments`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11642            }
11643            if !(api_version >= crate::Version::V1_1
11644                || instance_extensions.khr_get_physical_device_properties2)
11645            {
11646                return Err(Box::new(crate::ValidationError {
11647                    problem: "contains `ext_dynamic_rendering_unused_attachments`".into(),
11648                    requires_one_of: crate::RequiresOneOf(&[
11649                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11650                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11651                            "khr_get_physical_device_properties2",
11652                        )]),
11653                    ]),
11654                    ..Default::default()
11655                }));
11656            }
11657        }
11658        if self.ext_extended_dynamic_state {
11659            if !supported.ext_extended_dynamic_state {
11660                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_extended_dynamic_state`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11661            }
11662            if !(api_version >= crate::Version::V1_1
11663                || instance_extensions.khr_get_physical_device_properties2)
11664            {
11665                return Err(Box::new(crate::ValidationError {
11666                    problem: "contains `ext_extended_dynamic_state`".into(),
11667                    requires_one_of: crate::RequiresOneOf(&[
11668                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11669                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11670                            "khr_get_physical_device_properties2",
11671                        )]),
11672                    ]),
11673                    ..Default::default()
11674                }));
11675            }
11676        }
11677        if self.ext_extended_dynamic_state2 {
11678            if !supported.ext_extended_dynamic_state2 {
11679                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_extended_dynamic_state2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11680            }
11681            if !(api_version >= crate::Version::V1_1
11682                || instance_extensions.khr_get_physical_device_properties2)
11683            {
11684                return Err(Box::new(crate::ValidationError {
11685                    problem: "contains `ext_extended_dynamic_state2`".into(),
11686                    requires_one_of: crate::RequiresOneOf(&[
11687                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11688                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11689                            "khr_get_physical_device_properties2",
11690                        )]),
11691                    ]),
11692                    ..Default::default()
11693                }));
11694            }
11695        }
11696        if self.ext_extended_dynamic_state3 {
11697            if !supported.ext_extended_dynamic_state3 {
11698                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_extended_dynamic_state3`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11699            }
11700            if !(api_version >= crate::Version::V1_1
11701                || instance_extensions.khr_get_physical_device_properties2)
11702            {
11703                return Err(Box::new(crate::ValidationError {
11704                    problem: "contains `ext_extended_dynamic_state3`".into(),
11705                    requires_one_of: crate::RequiresOneOf(&[
11706                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11707                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11708                            "khr_get_physical_device_properties2",
11709                        )]),
11710                    ]),
11711                    ..Default::default()
11712                }));
11713            }
11714        }
11715        if self.ext_external_memory_acquire_unmodified {
11716            if !supported.ext_external_memory_acquire_unmodified {
11717                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_external_memory_acquire_unmodified`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11718            }
11719        }
11720        if self.ext_external_memory_dma_buf {
11721            if !supported.ext_external_memory_dma_buf {
11722                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_external_memory_dma_buf`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11723            }
11724        }
11725        if self.ext_external_memory_host {
11726            if !supported.ext_external_memory_host {
11727                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_external_memory_host`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11728            }
11729        }
11730        if self.ext_filter_cubic {
11731            if !supported.ext_filter_cubic {
11732                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_filter_cubic`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11733            }
11734        }
11735        if self.ext_fragment_density_map {
11736            if !supported.ext_fragment_density_map {
11737                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_fragment_density_map`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11738            }
11739            if !(api_version >= crate::Version::V1_1
11740                || instance_extensions.khr_get_physical_device_properties2)
11741            {
11742                return Err(Box::new(crate::ValidationError {
11743                    problem: "contains `ext_fragment_density_map`".into(),
11744                    requires_one_of: crate::RequiresOneOf(&[
11745                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11746                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11747                            "khr_get_physical_device_properties2",
11748                        )]),
11749                    ]),
11750                    ..Default::default()
11751                }));
11752            }
11753        }
11754        if self.ext_fragment_density_map2 {
11755            if !supported.ext_fragment_density_map2 {
11756                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_fragment_density_map2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11757            }
11758        }
11759        if self.ext_fragment_shader_interlock {
11760            if !supported.ext_fragment_shader_interlock {
11761                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_fragment_shader_interlock`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11762            }
11763            if !(api_version >= crate::Version::V1_1
11764                || instance_extensions.khr_get_physical_device_properties2)
11765            {
11766                return Err(Box::new(crate::ValidationError {
11767                    problem: "contains `ext_fragment_shader_interlock`".into(),
11768                    requires_one_of: crate::RequiresOneOf(&[
11769                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11770                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11771                            "khr_get_physical_device_properties2",
11772                        )]),
11773                    ]),
11774                    ..Default::default()
11775                }));
11776            }
11777        }
11778        if self.ext_frame_boundary {
11779            if !supported.ext_frame_boundary {
11780                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_frame_boundary`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11781            }
11782        }
11783        if self.ext_full_screen_exclusive {
11784            if !supported.ext_full_screen_exclusive {
11785                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_full_screen_exclusive`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11786            }
11787            if !(api_version >= crate::Version::V1_1
11788                || instance_extensions.khr_get_physical_device_properties2)
11789            {
11790                return Err(Box::new(crate::ValidationError {
11791                    problem: "contains `ext_full_screen_exclusive`".into(),
11792                    requires_one_of: crate::RequiresOneOf(&[
11793                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11794                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11795                            "khr_get_physical_device_properties2",
11796                        )]),
11797                    ]),
11798                    ..Default::default()
11799                }));
11800            }
11801            if !(instance_extensions.khr_surface) {
11802                return Err(Box::new(crate::ValidationError {
11803                    problem: "contains `ext_full_screen_exclusive`".into(),
11804                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
11805                        crate::Requires::InstanceExtension("khr_surface"),
11806                    ])]),
11807                    ..Default::default()
11808                }));
11809            }
11810            if !(instance_extensions.khr_get_surface_capabilities2) {
11811                return Err(Box::new(crate::ValidationError {
11812                    problem: "contains `ext_full_screen_exclusive`".into(),
11813                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
11814                        crate::Requires::InstanceExtension("khr_get_surface_capabilities2"),
11815                    ])]),
11816                    ..Default::default()
11817                }));
11818            }
11819        }
11820        if self.ext_global_priority {
11821            if !supported.ext_global_priority {
11822                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_global_priority`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11823            }
11824        }
11825        if self.ext_global_priority_query {
11826            if !supported.ext_global_priority_query {
11827                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_global_priority_query`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11828            }
11829            if !(api_version >= crate::Version::V1_1
11830                || instance_extensions.khr_get_physical_device_properties2)
11831            {
11832                return Err(Box::new(crate::ValidationError {
11833                    problem: "contains `ext_global_priority_query`".into(),
11834                    requires_one_of: crate::RequiresOneOf(&[
11835                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11836                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11837                            "khr_get_physical_device_properties2",
11838                        )]),
11839                    ]),
11840                    ..Default::default()
11841                }));
11842            }
11843        }
11844        if self.ext_graphics_pipeline_library {
11845            if !supported.ext_graphics_pipeline_library {
11846                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_graphics_pipeline_library`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11847            }
11848            if !(api_version >= crate::Version::V1_1
11849                || instance_extensions.khr_get_physical_device_properties2)
11850            {
11851                return Err(Box::new(crate::ValidationError {
11852                    problem: "contains `ext_graphics_pipeline_library`".into(),
11853                    requires_one_of: crate::RequiresOneOf(&[
11854                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11855                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11856                            "khr_get_physical_device_properties2",
11857                        )]),
11858                    ]),
11859                    ..Default::default()
11860                }));
11861            }
11862        }
11863        if self.ext_hdr_metadata {
11864            if !supported.ext_hdr_metadata {
11865                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_hdr_metadata`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11866            }
11867        }
11868        if self.ext_host_image_copy {
11869            if !supported.ext_host_image_copy {
11870                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_host_image_copy`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11871            }
11872            if !(api_version >= crate::Version::V1_1
11873                || instance_extensions.khr_get_physical_device_properties2)
11874            {
11875                return Err(Box::new(crate::ValidationError {
11876                    problem: "contains `ext_host_image_copy`".into(),
11877                    requires_one_of: crate::RequiresOneOf(&[
11878                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11879                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11880                            "khr_get_physical_device_properties2",
11881                        )]),
11882                    ]),
11883                    ..Default::default()
11884                }));
11885            }
11886        }
11887        if self.ext_host_query_reset {
11888            if !supported.ext_host_query_reset {
11889                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_host_query_reset`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11890            }
11891            if !(api_version >= crate::Version::V1_1
11892                || instance_extensions.khr_get_physical_device_properties2)
11893            {
11894                return Err(Box::new(crate::ValidationError {
11895                    problem: "contains `ext_host_query_reset`".into(),
11896                    requires_one_of: crate::RequiresOneOf(&[
11897                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11898                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11899                            "khr_get_physical_device_properties2",
11900                        )]),
11901                    ]),
11902                    ..Default::default()
11903                }));
11904            }
11905        }
11906        if self.ext_image_2d_view_of_3d {
11907            if !supported.ext_image_2d_view_of_3d {
11908                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_image_2d_view_of_3d`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11909            }
11910            if !(api_version >= crate::Version::V1_1
11911                || instance_extensions.khr_get_physical_device_properties2)
11912            {
11913                return Err(Box::new(crate::ValidationError {
11914                    problem: "contains `ext_image_2d_view_of_3d`".into(),
11915                    requires_one_of: crate::RequiresOneOf(&[
11916                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11917                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11918                            "khr_get_physical_device_properties2",
11919                        )]),
11920                    ]),
11921                    ..Default::default()
11922                }));
11923            }
11924        }
11925        if self.ext_image_compression_control {
11926            if !supported.ext_image_compression_control {
11927                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_image_compression_control`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11928            }
11929            if !(api_version >= crate::Version::V1_1
11930                || instance_extensions.khr_get_physical_device_properties2)
11931            {
11932                return Err(Box::new(crate::ValidationError {
11933                    problem: "contains `ext_image_compression_control`".into(),
11934                    requires_one_of: crate::RequiresOneOf(&[
11935                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11936                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11937                            "khr_get_physical_device_properties2",
11938                        )]),
11939                    ]),
11940                    ..Default::default()
11941                }));
11942            }
11943        }
11944        if self.ext_image_compression_control_swapchain {
11945            if !supported.ext_image_compression_control_swapchain {
11946                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_image_compression_control_swapchain`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11947            }
11948        }
11949        if self.ext_image_drm_format_modifier {
11950            if !supported.ext_image_drm_format_modifier {
11951                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_image_drm_format_modifier`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11952            }
11953            if !(api_version >= crate::Version::V1_1
11954                || instance_extensions.khr_get_physical_device_properties2)
11955            {
11956                return Err(Box::new(crate::ValidationError {
11957                    problem: "contains `ext_image_drm_format_modifier`".into(),
11958                    requires_one_of: crate::RequiresOneOf(&[
11959                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11960                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11961                            "khr_get_physical_device_properties2",
11962                        )]),
11963                    ]),
11964                    ..Default::default()
11965                }));
11966            }
11967        }
11968        if self.ext_image_robustness {
11969            if !supported.ext_image_robustness {
11970                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_image_robustness`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11971            }
11972            if !(api_version >= crate::Version::V1_1
11973                || instance_extensions.khr_get_physical_device_properties2)
11974            {
11975                return Err(Box::new(crate::ValidationError {
11976                    problem: "contains `ext_image_robustness`".into(),
11977                    requires_one_of: crate::RequiresOneOf(&[
11978                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11979                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11980                            "khr_get_physical_device_properties2",
11981                        )]),
11982                    ]),
11983                    ..Default::default()
11984                }));
11985            }
11986        }
11987        if self.ext_image_sliced_view_of_3d {
11988            if !supported.ext_image_sliced_view_of_3d {
11989                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_image_sliced_view_of_3d`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
11990            }
11991            if !(api_version >= crate::Version::V1_1
11992                || instance_extensions.khr_get_physical_device_properties2)
11993            {
11994                return Err(Box::new(crate::ValidationError {
11995                    problem: "contains `ext_image_sliced_view_of_3d`".into(),
11996                    requires_one_of: crate::RequiresOneOf(&[
11997                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
11998                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
11999                            "khr_get_physical_device_properties2",
12000                        )]),
12001                    ]),
12002                    ..Default::default()
12003                }));
12004            }
12005        }
12006        if self.ext_image_view_min_lod {
12007            if !supported.ext_image_view_min_lod {
12008                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_image_view_min_lod`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12009            }
12010            if !(api_version >= crate::Version::V1_1
12011                || instance_extensions.khr_get_physical_device_properties2)
12012            {
12013                return Err(Box::new(crate::ValidationError {
12014                    problem: "contains `ext_image_view_min_lod`".into(),
12015                    requires_one_of: crate::RequiresOneOf(&[
12016                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12017                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12018                            "khr_get_physical_device_properties2",
12019                        )]),
12020                    ]),
12021                    ..Default::default()
12022                }));
12023            }
12024        }
12025        if self.ext_index_type_uint8 {
12026            if !supported.ext_index_type_uint8 {
12027                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_index_type_uint8`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12028            }
12029            if !(api_version >= crate::Version::V1_1
12030                || instance_extensions.khr_get_physical_device_properties2)
12031            {
12032                return Err(Box::new(crate::ValidationError {
12033                    problem: "contains `ext_index_type_uint8`".into(),
12034                    requires_one_of: crate::RequiresOneOf(&[
12035                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12036                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12037                            "khr_get_physical_device_properties2",
12038                        )]),
12039                    ]),
12040                    ..Default::default()
12041                }));
12042            }
12043        }
12044        if self.ext_inline_uniform_block {
12045            if !supported.ext_inline_uniform_block {
12046                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_inline_uniform_block`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12047            }
12048            if !(api_version >= crate::Version::V1_1
12049                || instance_extensions.khr_get_physical_device_properties2)
12050            {
12051                return Err(Box::new(crate::ValidationError {
12052                    problem: "contains `ext_inline_uniform_block`".into(),
12053                    requires_one_of: crate::RequiresOneOf(&[
12054                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12055                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12056                            "khr_get_physical_device_properties2",
12057                        )]),
12058                    ]),
12059                    ..Default::default()
12060                }));
12061            }
12062        }
12063        if self.ext_legacy_dithering {
12064            if !supported.ext_legacy_dithering {
12065                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_legacy_dithering`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12066            }
12067            if !(api_version >= crate::Version::V1_1
12068                || instance_extensions.khr_get_physical_device_properties2)
12069            {
12070                return Err(Box::new(crate::ValidationError {
12071                    problem: "contains `ext_legacy_dithering`".into(),
12072                    requires_one_of: crate::RequiresOneOf(&[
12073                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12074                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12075                            "khr_get_physical_device_properties2",
12076                        )]),
12077                    ]),
12078                    ..Default::default()
12079                }));
12080            }
12081        }
12082        if self.ext_line_rasterization {
12083            if !supported.ext_line_rasterization {
12084                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_line_rasterization`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12085            }
12086            if !(api_version >= crate::Version::V1_1
12087                || instance_extensions.khr_get_physical_device_properties2)
12088            {
12089                return Err(Box::new(crate::ValidationError {
12090                    problem: "contains `ext_line_rasterization`".into(),
12091                    requires_one_of: crate::RequiresOneOf(&[
12092                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12093                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12094                            "khr_get_physical_device_properties2",
12095                        )]),
12096                    ]),
12097                    ..Default::default()
12098                }));
12099            }
12100        }
12101        if self.ext_load_store_op_none {
12102            if !supported.ext_load_store_op_none {
12103                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_load_store_op_none`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12104            }
12105        }
12106        if self.ext_map_memory_placed {
12107            if !supported.ext_map_memory_placed {
12108                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_map_memory_placed`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12109            }
12110        }
12111        if self.ext_memory_budget {
12112            if !supported.ext_memory_budget {
12113                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_memory_budget`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12114            }
12115            if !(api_version >= crate::Version::V1_1
12116                || instance_extensions.khr_get_physical_device_properties2)
12117            {
12118                return Err(Box::new(crate::ValidationError {
12119                    problem: "contains `ext_memory_budget`".into(),
12120                    requires_one_of: crate::RequiresOneOf(&[
12121                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12122                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12123                            "khr_get_physical_device_properties2",
12124                        )]),
12125                    ]),
12126                    ..Default::default()
12127                }));
12128            }
12129        }
12130        if self.ext_memory_priority {
12131            if !supported.ext_memory_priority {
12132                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_memory_priority`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12133            }
12134            if !(api_version >= crate::Version::V1_1
12135                || instance_extensions.khr_get_physical_device_properties2)
12136            {
12137                return Err(Box::new(crate::ValidationError {
12138                    problem: "contains `ext_memory_priority`".into(),
12139                    requires_one_of: crate::RequiresOneOf(&[
12140                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12141                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12142                            "khr_get_physical_device_properties2",
12143                        )]),
12144                    ]),
12145                    ..Default::default()
12146                }));
12147            }
12148        }
12149        if self.ext_mesh_shader {
12150            if !supported.ext_mesh_shader {
12151                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_mesh_shader`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12152            }
12153        }
12154        if self.ext_metal_objects {
12155            if !supported.ext_metal_objects {
12156                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_metal_objects`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12157            }
12158        }
12159        if self.ext_multi_draw {
12160            if !supported.ext_multi_draw {
12161                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_multi_draw`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12162            }
12163            if !(api_version >= crate::Version::V1_1
12164                || instance_extensions.khr_get_physical_device_properties2)
12165            {
12166                return Err(Box::new(crate::ValidationError {
12167                    problem: "contains `ext_multi_draw`".into(),
12168                    requires_one_of: crate::RequiresOneOf(&[
12169                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12170                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12171                            "khr_get_physical_device_properties2",
12172                        )]),
12173                    ]),
12174                    ..Default::default()
12175                }));
12176            }
12177        }
12178        if self.ext_multisampled_render_to_single_sampled {
12179            if !supported.ext_multisampled_render_to_single_sampled {
12180                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_multisampled_render_to_single_sampled`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12181            }
12182        }
12183        if self.ext_mutable_descriptor_type {
12184            if !supported.ext_mutable_descriptor_type {
12185                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_mutable_descriptor_type`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12186            }
12187        }
12188        if self.ext_nested_command_buffer {
12189            if !supported.ext_nested_command_buffer {
12190                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_nested_command_buffer`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12191            }
12192            if !(api_version >= crate::Version::V1_1
12193                || instance_extensions.khr_get_physical_device_properties2)
12194            {
12195                return Err(Box::new(crate::ValidationError {
12196                    problem: "contains `ext_nested_command_buffer`".into(),
12197                    requires_one_of: crate::RequiresOneOf(&[
12198                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12199                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12200                            "khr_get_physical_device_properties2",
12201                        )]),
12202                    ]),
12203                    ..Default::default()
12204                }));
12205            }
12206        }
12207        if self.ext_non_seamless_cube_map {
12208            if !supported.ext_non_seamless_cube_map {
12209                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_non_seamless_cube_map`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12210            }
12211            if !(api_version >= crate::Version::V1_1
12212                || instance_extensions.khr_get_physical_device_properties2)
12213            {
12214                return Err(Box::new(crate::ValidationError {
12215                    problem: "contains `ext_non_seamless_cube_map`".into(),
12216                    requires_one_of: crate::RequiresOneOf(&[
12217                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12218                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12219                            "khr_get_physical_device_properties2",
12220                        )]),
12221                    ]),
12222                    ..Default::default()
12223                }));
12224            }
12225        }
12226        if self.ext_opacity_micromap {
12227            if !supported.ext_opacity_micromap {
12228                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_opacity_micromap`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12229            }
12230        }
12231        if self.ext_pageable_device_local_memory {
12232            if !supported.ext_pageable_device_local_memory {
12233                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_pageable_device_local_memory`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12234            }
12235        }
12236        if self.ext_pci_bus_info {
12237            if !supported.ext_pci_bus_info {
12238                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_pci_bus_info`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12239            }
12240            if !(api_version >= crate::Version::V1_1
12241                || instance_extensions.khr_get_physical_device_properties2)
12242            {
12243                return Err(Box::new(crate::ValidationError {
12244                    problem: "contains `ext_pci_bus_info`".into(),
12245                    requires_one_of: crate::RequiresOneOf(&[
12246                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12247                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12248                            "khr_get_physical_device_properties2",
12249                        )]),
12250                    ]),
12251                    ..Default::default()
12252                }));
12253            }
12254        }
12255        if self.ext_physical_device_drm {
12256            if !supported.ext_physical_device_drm {
12257                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_physical_device_drm`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12258            }
12259            if !(api_version >= crate::Version::V1_1
12260                || instance_extensions.khr_get_physical_device_properties2)
12261            {
12262                return Err(Box::new(crate::ValidationError {
12263                    problem: "contains `ext_physical_device_drm`".into(),
12264                    requires_one_of: crate::RequiresOneOf(&[
12265                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12266                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12267                            "khr_get_physical_device_properties2",
12268                        )]),
12269                    ]),
12270                    ..Default::default()
12271                }));
12272            }
12273        }
12274        if self.ext_pipeline_creation_cache_control {
12275            if !supported.ext_pipeline_creation_cache_control {
12276                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_pipeline_creation_cache_control`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12277            }
12278            if !(api_version >= crate::Version::V1_1
12279                || instance_extensions.khr_get_physical_device_properties2)
12280            {
12281                return Err(Box::new(crate::ValidationError {
12282                    problem: "contains `ext_pipeline_creation_cache_control`".into(),
12283                    requires_one_of: crate::RequiresOneOf(&[
12284                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12285                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12286                            "khr_get_physical_device_properties2",
12287                        )]),
12288                    ]),
12289                    ..Default::default()
12290                }));
12291            }
12292        }
12293        if self.ext_pipeline_creation_feedback {
12294            if !supported.ext_pipeline_creation_feedback {
12295                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_pipeline_creation_feedback`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12296            }
12297        }
12298        if self.ext_pipeline_library_group_handles {
12299            if !supported.ext_pipeline_library_group_handles {
12300                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_pipeline_library_group_handles`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12301            }
12302        }
12303        if self.ext_pipeline_properties {
12304            if !supported.ext_pipeline_properties {
12305                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_pipeline_properties`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12306            }
12307            if !(api_version >= crate::Version::V1_1
12308                || instance_extensions.khr_get_physical_device_properties2)
12309            {
12310                return Err(Box::new(crate::ValidationError {
12311                    problem: "contains `ext_pipeline_properties`".into(),
12312                    requires_one_of: crate::RequiresOneOf(&[
12313                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12314                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12315                            "khr_get_physical_device_properties2",
12316                        )]),
12317                    ]),
12318                    ..Default::default()
12319                }));
12320            }
12321        }
12322        if self.ext_pipeline_protected_access {
12323            if !supported.ext_pipeline_protected_access {
12324                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_pipeline_protected_access`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12325            }
12326            if !(api_version >= crate::Version::V1_1
12327                || instance_extensions.khr_get_physical_device_properties2)
12328            {
12329                return Err(Box::new(crate::ValidationError {
12330                    problem: "contains `ext_pipeline_protected_access`".into(),
12331                    requires_one_of: crate::RequiresOneOf(&[
12332                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12333                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12334                            "khr_get_physical_device_properties2",
12335                        )]),
12336                    ]),
12337                    ..Default::default()
12338                }));
12339            }
12340        }
12341        if self.ext_pipeline_robustness {
12342            if !supported.ext_pipeline_robustness {
12343                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_pipeline_robustness`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12344            }
12345            if !(api_version >= crate::Version::V1_1
12346                || instance_extensions.khr_get_physical_device_properties2)
12347            {
12348                return Err(Box::new(crate::ValidationError {
12349                    problem: "contains `ext_pipeline_robustness`".into(),
12350                    requires_one_of: crate::RequiresOneOf(&[
12351                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12352                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12353                            "khr_get_physical_device_properties2",
12354                        )]),
12355                    ]),
12356                    ..Default::default()
12357                }));
12358            }
12359        }
12360        if self.ext_post_depth_coverage {
12361            if !supported.ext_post_depth_coverage {
12362                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_post_depth_coverage`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12363            }
12364        }
12365        if self.ext_primitive_topology_list_restart {
12366            if !supported.ext_primitive_topology_list_restart {
12367                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_primitive_topology_list_restart`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12368            }
12369            if !(api_version >= crate::Version::V1_1
12370                || instance_extensions.khr_get_physical_device_properties2)
12371            {
12372                return Err(Box::new(crate::ValidationError {
12373                    problem: "contains `ext_primitive_topology_list_restart`".into(),
12374                    requires_one_of: crate::RequiresOneOf(&[
12375                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12376                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12377                            "khr_get_physical_device_properties2",
12378                        )]),
12379                    ]),
12380                    ..Default::default()
12381                }));
12382            }
12383        }
12384        if self.ext_primitives_generated_query {
12385            if !supported.ext_primitives_generated_query {
12386                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_primitives_generated_query`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12387            }
12388        }
12389        if self.ext_private_data {
12390            if !supported.ext_private_data {
12391                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_private_data`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12392            }
12393            if !(api_version >= crate::Version::V1_1
12394                || instance_extensions.khr_get_physical_device_properties2)
12395            {
12396                return Err(Box::new(crate::ValidationError {
12397                    problem: "contains `ext_private_data`".into(),
12398                    requires_one_of: crate::RequiresOneOf(&[
12399                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12400                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12401                            "khr_get_physical_device_properties2",
12402                        )]),
12403                    ]),
12404                    ..Default::default()
12405                }));
12406            }
12407        }
12408        if self.ext_provoking_vertex {
12409            if !supported.ext_provoking_vertex {
12410                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_provoking_vertex`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12411            }
12412            if !(api_version >= crate::Version::V1_1
12413                || instance_extensions.khr_get_physical_device_properties2)
12414            {
12415                return Err(Box::new(crate::ValidationError {
12416                    problem: "contains `ext_provoking_vertex`".into(),
12417                    requires_one_of: crate::RequiresOneOf(&[
12418                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12419                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12420                            "khr_get_physical_device_properties2",
12421                        )]),
12422                    ]),
12423                    ..Default::default()
12424                }));
12425            }
12426        }
12427        if self.ext_queue_family_foreign {
12428            if !supported.ext_queue_family_foreign {
12429                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_queue_family_foreign`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12430            }
12431        }
12432        if self.ext_rasterization_order_attachment_access {
12433            if !supported.ext_rasterization_order_attachment_access {
12434                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_rasterization_order_attachment_access`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12435            }
12436            if !(api_version >= crate::Version::V1_1
12437                || instance_extensions.khr_get_physical_device_properties2)
12438            {
12439                return Err(Box::new(crate::ValidationError {
12440                    problem: "contains `ext_rasterization_order_attachment_access`".into(),
12441                    requires_one_of: crate::RequiresOneOf(&[
12442                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12443                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12444                            "khr_get_physical_device_properties2",
12445                        )]),
12446                    ]),
12447                    ..Default::default()
12448                }));
12449            }
12450        }
12451        if self.ext_rgba10x6_formats {
12452            if !supported.ext_rgba10x6_formats {
12453                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_rgba10x6_formats`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12454            }
12455        }
12456        if self.ext_robustness2 {
12457            if !supported.ext_robustness2 {
12458                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_robustness2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12459            }
12460            if !(api_version >= crate::Version::V1_1
12461                || instance_extensions.khr_get_physical_device_properties2)
12462            {
12463                return Err(Box::new(crate::ValidationError {
12464                    problem: "contains `ext_robustness2`".into(),
12465                    requires_one_of: crate::RequiresOneOf(&[
12466                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12467                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12468                            "khr_get_physical_device_properties2",
12469                        )]),
12470                    ]),
12471                    ..Default::default()
12472                }));
12473            }
12474        }
12475        if self.ext_sample_locations {
12476            if !supported.ext_sample_locations {
12477                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_sample_locations`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12478            }
12479            if !(api_version >= crate::Version::V1_1
12480                || instance_extensions.khr_get_physical_device_properties2)
12481            {
12482                return Err(Box::new(crate::ValidationError {
12483                    problem: "contains `ext_sample_locations`".into(),
12484                    requires_one_of: crate::RequiresOneOf(&[
12485                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12486                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12487                            "khr_get_physical_device_properties2",
12488                        )]),
12489                    ]),
12490                    ..Default::default()
12491                }));
12492            }
12493        }
12494        if self.ext_sampler_filter_minmax {
12495            if !supported.ext_sampler_filter_minmax {
12496                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_sampler_filter_minmax`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12497            }
12498            if !(api_version >= crate::Version::V1_1
12499                || instance_extensions.khr_get_physical_device_properties2)
12500            {
12501                return Err(Box::new(crate::ValidationError {
12502                    problem: "contains `ext_sampler_filter_minmax`".into(),
12503                    requires_one_of: crate::RequiresOneOf(&[
12504                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12505                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12506                            "khr_get_physical_device_properties2",
12507                        )]),
12508                    ]),
12509                    ..Default::default()
12510                }));
12511            }
12512        }
12513        if self.ext_scalar_block_layout {
12514            if !supported.ext_scalar_block_layout {
12515                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_scalar_block_layout`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12516            }
12517            if !(api_version >= crate::Version::V1_1
12518                || instance_extensions.khr_get_physical_device_properties2)
12519            {
12520                return Err(Box::new(crate::ValidationError {
12521                    problem: "contains `ext_scalar_block_layout`".into(),
12522                    requires_one_of: crate::RequiresOneOf(&[
12523                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12524                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12525                            "khr_get_physical_device_properties2",
12526                        )]),
12527                    ]),
12528                    ..Default::default()
12529                }));
12530            }
12531        }
12532        if self.ext_separate_stencil_usage {
12533            if !supported.ext_separate_stencil_usage {
12534                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_separate_stencil_usage`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12535            }
12536        }
12537        if self.ext_shader_atomic_float {
12538            if !supported.ext_shader_atomic_float {
12539                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_shader_atomic_float`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12540            }
12541            if !(api_version >= crate::Version::V1_1
12542                || instance_extensions.khr_get_physical_device_properties2)
12543            {
12544                return Err(Box::new(crate::ValidationError {
12545                    problem: "contains `ext_shader_atomic_float`".into(),
12546                    requires_one_of: crate::RequiresOneOf(&[
12547                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12548                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12549                            "khr_get_physical_device_properties2",
12550                        )]),
12551                    ]),
12552                    ..Default::default()
12553                }));
12554            }
12555        }
12556        if self.ext_shader_atomic_float2 {
12557            if !supported.ext_shader_atomic_float2 {
12558                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_shader_atomic_float2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12559            }
12560        }
12561        if self.ext_shader_demote_to_helper_invocation {
12562            if !supported.ext_shader_demote_to_helper_invocation {
12563                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_shader_demote_to_helper_invocation`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12564            }
12565            if !(api_version >= crate::Version::V1_1
12566                || instance_extensions.khr_get_physical_device_properties2)
12567            {
12568                return Err(Box::new(crate::ValidationError {
12569                    problem: "contains `ext_shader_demote_to_helper_invocation`".into(),
12570                    requires_one_of: crate::RequiresOneOf(&[
12571                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12572                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12573                            "khr_get_physical_device_properties2",
12574                        )]),
12575                    ]),
12576                    ..Default::default()
12577                }));
12578            }
12579        }
12580        if self.ext_shader_image_atomic_int64 {
12581            if !supported.ext_shader_image_atomic_int64 {
12582                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_shader_image_atomic_int64`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12583            }
12584            if !(api_version >= crate::Version::V1_1
12585                || instance_extensions.khr_get_physical_device_properties2)
12586            {
12587                return Err(Box::new(crate::ValidationError {
12588                    problem: "contains `ext_shader_image_atomic_int64`".into(),
12589                    requires_one_of: crate::RequiresOneOf(&[
12590                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12591                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12592                            "khr_get_physical_device_properties2",
12593                        )]),
12594                    ]),
12595                    ..Default::default()
12596                }));
12597            }
12598        }
12599        if self.ext_shader_module_identifier {
12600            if !supported.ext_shader_module_identifier {
12601                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_shader_module_identifier`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12602            }
12603            if !(api_version >= crate::Version::V1_1
12604                || instance_extensions.khr_get_physical_device_properties2)
12605            {
12606                return Err(Box::new(crate::ValidationError {
12607                    problem: "contains `ext_shader_module_identifier`".into(),
12608                    requires_one_of: crate::RequiresOneOf(&[
12609                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12610                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12611                            "khr_get_physical_device_properties2",
12612                        )]),
12613                    ]),
12614                    ..Default::default()
12615                }));
12616            }
12617        }
12618        if self.ext_shader_object {
12619            if !supported.ext_shader_object {
12620                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_shader_object`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12621            }
12622            if !(api_version >= crate::Version::V1_1
12623                || instance_extensions.khr_get_physical_device_properties2)
12624            {
12625                return Err(Box::new(crate::ValidationError {
12626                    problem: "contains `ext_shader_object`".into(),
12627                    requires_one_of: crate::RequiresOneOf(&[
12628                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12629                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12630                            "khr_get_physical_device_properties2",
12631                        )]),
12632                    ]),
12633                    ..Default::default()
12634                }));
12635            }
12636        }
12637        if self.ext_shader_stencil_export {
12638            if !supported.ext_shader_stencil_export {
12639                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_shader_stencil_export`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12640            }
12641        }
12642        if self.ext_shader_subgroup_ballot {
12643            if !supported.ext_shader_subgroup_ballot {
12644                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_shader_subgroup_ballot`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12645            }
12646        }
12647        if self.ext_shader_subgroup_vote {
12648            if !supported.ext_shader_subgroup_vote {
12649                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_shader_subgroup_vote`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12650            }
12651        }
12652        if self.ext_shader_tile_image {
12653            if !supported.ext_shader_tile_image {
12654                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_shader_tile_image`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12655            }
12656            if !(api_version >= crate::Version::V1_3) {
12657                return Err(Box::new(crate::ValidationError {
12658                    problem: "contains `ext_shader_tile_image`".into(),
12659                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
12660                        crate::Requires::APIVersion(crate::Version::V1_3),
12661                    ])]),
12662                    ..Default::default()
12663                }));
12664            }
12665        }
12666        if self.ext_shader_viewport_index_layer {
12667            if !supported.ext_shader_viewport_index_layer {
12668                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_shader_viewport_index_layer`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12669            }
12670        }
12671        if self.ext_subgroup_size_control {
12672            if !supported.ext_subgroup_size_control {
12673                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_subgroup_size_control`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12674            }
12675            if !(api_version >= crate::Version::V1_1) {
12676                return Err(Box::new(crate::ValidationError {
12677                    problem: "contains `ext_subgroup_size_control`".into(),
12678                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
12679                        crate::Requires::APIVersion(crate::Version::V1_1),
12680                    ])]),
12681                    ..Default::default()
12682                }));
12683            }
12684        }
12685        if self.ext_subpass_merge_feedback {
12686            if !supported.ext_subpass_merge_feedback {
12687                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_subpass_merge_feedback`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12688            }
12689            if !(api_version >= crate::Version::V1_1
12690                || instance_extensions.khr_get_physical_device_properties2)
12691            {
12692                return Err(Box::new(crate::ValidationError {
12693                    problem: "contains `ext_subpass_merge_feedback`".into(),
12694                    requires_one_of: crate::RequiresOneOf(&[
12695                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12696                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12697                            "khr_get_physical_device_properties2",
12698                        )]),
12699                    ]),
12700                    ..Default::default()
12701                }));
12702            }
12703        }
12704        if self.ext_swapchain_maintenance1 {
12705            if !supported.ext_swapchain_maintenance1 {
12706                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_swapchain_maintenance1`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12707            }
12708            if !(instance_extensions.ext_surface_maintenance1) {
12709                return Err(Box::new(crate::ValidationError {
12710                    problem: "contains `ext_swapchain_maintenance1`".into(),
12711                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
12712                        crate::Requires::InstanceExtension("ext_surface_maintenance1"),
12713                    ])]),
12714                    ..Default::default()
12715                }));
12716            }
12717            if !(api_version >= crate::Version::V1_1
12718                || instance_extensions.khr_get_physical_device_properties2)
12719            {
12720                return Err(Box::new(crate::ValidationError {
12721                    problem: "contains `ext_swapchain_maintenance1`".into(),
12722                    requires_one_of: crate::RequiresOneOf(&[
12723                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12724                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12725                            "khr_get_physical_device_properties2",
12726                        )]),
12727                    ]),
12728                    ..Default::default()
12729                }));
12730            }
12731        }
12732        if self.ext_texel_buffer_alignment {
12733            if !supported.ext_texel_buffer_alignment {
12734                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_texel_buffer_alignment`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12735            }
12736            if !(api_version >= crate::Version::V1_1
12737                || instance_extensions.khr_get_physical_device_properties2)
12738            {
12739                return Err(Box::new(crate::ValidationError {
12740                    problem: "contains `ext_texel_buffer_alignment`".into(),
12741                    requires_one_of: crate::RequiresOneOf(&[
12742                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12743                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12744                            "khr_get_physical_device_properties2",
12745                        )]),
12746                    ]),
12747                    ..Default::default()
12748                }));
12749            }
12750        }
12751        if self.ext_texture_compression_astc_hdr {
12752            if !supported.ext_texture_compression_astc_hdr {
12753                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_texture_compression_astc_hdr`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12754            }
12755            if !(api_version >= crate::Version::V1_1
12756                || instance_extensions.khr_get_physical_device_properties2)
12757            {
12758                return Err(Box::new(crate::ValidationError {
12759                    problem: "contains `ext_texture_compression_astc_hdr`".into(),
12760                    requires_one_of: crate::RequiresOneOf(&[
12761                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12762                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12763                            "khr_get_physical_device_properties2",
12764                        )]),
12765                    ]),
12766                    ..Default::default()
12767                }));
12768            }
12769        }
12770        if self.ext_tooling_info {
12771            if !supported.ext_tooling_info {
12772                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_tooling_info`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12773            }
12774        }
12775        if self.ext_transform_feedback {
12776            if !supported.ext_transform_feedback {
12777                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_transform_feedback`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12778            }
12779            if !(api_version >= crate::Version::V1_1
12780                || instance_extensions.khr_get_physical_device_properties2)
12781            {
12782                return Err(Box::new(crate::ValidationError {
12783                    problem: "contains `ext_transform_feedback`".into(),
12784                    requires_one_of: crate::RequiresOneOf(&[
12785                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12786                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12787                            "khr_get_physical_device_properties2",
12788                        )]),
12789                    ]),
12790                    ..Default::default()
12791                }));
12792            }
12793        }
12794        if self.ext_validation_cache {
12795            if !supported.ext_validation_cache {
12796                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_validation_cache`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12797            }
12798        }
12799        if self.ext_vertex_attribute_divisor {
12800            if !supported.ext_vertex_attribute_divisor {
12801                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_vertex_attribute_divisor`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12802            }
12803            if !(api_version >= crate::Version::V1_1
12804                || instance_extensions.khr_get_physical_device_properties2)
12805            {
12806                return Err(Box::new(crate::ValidationError {
12807                    problem: "contains `ext_vertex_attribute_divisor`".into(),
12808                    requires_one_of: crate::RequiresOneOf(&[
12809                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12810                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12811                            "khr_get_physical_device_properties2",
12812                        )]),
12813                    ]),
12814                    ..Default::default()
12815                }));
12816            }
12817        }
12818        if self.ext_vertex_input_dynamic_state {
12819            if !supported.ext_vertex_input_dynamic_state {
12820                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_vertex_input_dynamic_state`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12821            }
12822            if !(api_version >= crate::Version::V1_1
12823                || instance_extensions.khr_get_physical_device_properties2)
12824            {
12825                return Err(Box::new(crate::ValidationError {
12826                    problem: "contains `ext_vertex_input_dynamic_state`".into(),
12827                    requires_one_of: crate::RequiresOneOf(&[
12828                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12829                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12830                            "khr_get_physical_device_properties2",
12831                        )]),
12832                    ]),
12833                    ..Default::default()
12834                }));
12835            }
12836        }
12837        if self.ext_ycbcr_2plane_444_formats {
12838            if !supported.ext_ycbcr_2plane_444_formats {
12839                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_ycbcr_2plane_444_formats`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12840            }
12841        }
12842        if self.ext_ycbcr_image_arrays {
12843            if !supported.ext_ycbcr_image_arrays {
12844                return Err (Box :: new (crate :: ValidationError { problem : "contains `ext_ycbcr_image_arrays`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12845            }
12846        }
12847        if self.amdx_shader_enqueue {
12848            if !supported.amdx_shader_enqueue {
12849                return Err (Box :: new (crate :: ValidationError { problem : "contains `amdx_shader_enqueue`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12850            }
12851            if !(api_version >= crate::Version::V1_1
12852                || instance_extensions.khr_get_physical_device_properties2)
12853            {
12854                return Err(Box::new(crate::ValidationError {
12855                    problem: "contains `amdx_shader_enqueue`".into(),
12856                    requires_one_of: crate::RequiresOneOf(&[
12857                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12858                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12859                            "khr_get_physical_device_properties2",
12860                        )]),
12861                    ]),
12862                    ..Default::default()
12863                }));
12864            }
12865        }
12866        if self.amd_buffer_marker {
12867            if !supported.amd_buffer_marker {
12868                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_buffer_marker`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12869            }
12870        }
12871        if self.amd_device_coherent_memory {
12872            if !supported.amd_device_coherent_memory {
12873                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_device_coherent_memory`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12874            }
12875            if !(api_version >= crate::Version::V1_1
12876                || instance_extensions.khr_get_physical_device_properties2)
12877            {
12878                return Err(Box::new(crate::ValidationError {
12879                    problem: "contains `amd_device_coherent_memory`".into(),
12880                    requires_one_of: crate::RequiresOneOf(&[
12881                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12882                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12883                            "khr_get_physical_device_properties2",
12884                        )]),
12885                    ]),
12886                    ..Default::default()
12887                }));
12888            }
12889        }
12890        if self.amd_display_native_hdr {
12891            if !supported.amd_display_native_hdr {
12892                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_display_native_hdr`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12893            }
12894            if !(api_version >= crate::Version::V1_1
12895                || instance_extensions.khr_get_physical_device_properties2)
12896            {
12897                return Err(Box::new(crate::ValidationError {
12898                    problem: "contains `amd_display_native_hdr`".into(),
12899                    requires_one_of: crate::RequiresOneOf(&[
12900                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12901                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12902                            "khr_get_physical_device_properties2",
12903                        )]),
12904                    ]),
12905                    ..Default::default()
12906                }));
12907            }
12908            if !(instance_extensions.khr_get_surface_capabilities2) {
12909                return Err(Box::new(crate::ValidationError {
12910                    problem: "contains `amd_display_native_hdr`".into(),
12911                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
12912                        crate::Requires::InstanceExtension("khr_get_surface_capabilities2"),
12913                    ])]),
12914                    ..Default::default()
12915                }));
12916            }
12917        }
12918        if self.amd_draw_indirect_count {
12919            if !supported.amd_draw_indirect_count {
12920                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_draw_indirect_count`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12921            }
12922        }
12923        if self.amd_gcn_shader {
12924            if !supported.amd_gcn_shader {
12925                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_gcn_shader`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12926            }
12927        }
12928        if self.amd_gpu_shader_half_float {
12929            if !supported.amd_gpu_shader_half_float {
12930                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_gpu_shader_half_float`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12931            }
12932        }
12933        if self.amd_gpu_shader_int16 {
12934            if !supported.amd_gpu_shader_int16 {
12935                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_gpu_shader_int16`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12936            }
12937        }
12938        if self.amd_memory_overallocation_behavior {
12939            if !supported.amd_memory_overallocation_behavior {
12940                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_memory_overallocation_behavior`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12941            }
12942        }
12943        if self.amd_mixed_attachment_samples {
12944            if !supported.amd_mixed_attachment_samples {
12945                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_mixed_attachment_samples`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12946            }
12947        }
12948        if self.amd_pipeline_compiler_control {
12949            if !supported.amd_pipeline_compiler_control {
12950                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_pipeline_compiler_control`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12951            }
12952        }
12953        if self.amd_rasterization_order {
12954            if !supported.amd_rasterization_order {
12955                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_rasterization_order`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12956            }
12957        }
12958        if self.amd_shader_ballot {
12959            if !supported.amd_shader_ballot {
12960                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_shader_ballot`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12961            }
12962        }
12963        if self.amd_shader_core_properties {
12964            if !supported.amd_shader_core_properties {
12965                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_shader_core_properties`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12966            }
12967            if !(api_version >= crate::Version::V1_1
12968                || instance_extensions.khr_get_physical_device_properties2)
12969            {
12970                return Err(Box::new(crate::ValidationError {
12971                    problem: "contains `amd_shader_core_properties`".into(),
12972                    requires_one_of: crate::RequiresOneOf(&[
12973                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12974                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12975                            "khr_get_physical_device_properties2",
12976                        )]),
12977                    ]),
12978                    ..Default::default()
12979                }));
12980            }
12981        }
12982        if self.amd_shader_core_properties2 {
12983            if !supported.amd_shader_core_properties2 {
12984                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_shader_core_properties2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12985            }
12986        }
12987        if self.amd_shader_early_and_late_fragment_tests {
12988            if !supported.amd_shader_early_and_late_fragment_tests {
12989                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_shader_early_and_late_fragment_tests`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
12990            }
12991            if !(api_version >= crate::Version::V1_1
12992                || instance_extensions.khr_get_physical_device_properties2)
12993            {
12994                return Err(Box::new(crate::ValidationError {
12995                    problem: "contains `amd_shader_early_and_late_fragment_tests`".into(),
12996                    requires_one_of: crate::RequiresOneOf(&[
12997                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
12998                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
12999                            "khr_get_physical_device_properties2",
13000                        )]),
13001                    ]),
13002                    ..Default::default()
13003                }));
13004            }
13005        }
13006        if self.amd_shader_explicit_vertex_parameter {
13007            if !supported.amd_shader_explicit_vertex_parameter {
13008                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_shader_explicit_vertex_parameter`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13009            }
13010        }
13011        if self.amd_shader_fragment_mask {
13012            if !supported.amd_shader_fragment_mask {
13013                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_shader_fragment_mask`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13014            }
13015        }
13016        if self.amd_shader_image_load_store_lod {
13017            if !supported.amd_shader_image_load_store_lod {
13018                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_shader_image_load_store_lod`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13019            }
13020        }
13021        if self.amd_shader_info {
13022            if !supported.amd_shader_info {
13023                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_shader_info`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13024            }
13025        }
13026        if self.amd_shader_trinary_minmax {
13027            if !supported.amd_shader_trinary_minmax {
13028                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_shader_trinary_minmax`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13029            }
13030        }
13031        if self.amd_texture_gather_bias_lod {
13032            if !supported.amd_texture_gather_bias_lod {
13033                return Err (Box :: new (crate :: ValidationError { problem : "contains `amd_texture_gather_bias_lod`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13034            }
13035            if !(api_version >= crate::Version::V1_1
13036                || instance_extensions.khr_get_physical_device_properties2)
13037            {
13038                return Err(Box::new(crate::ValidationError {
13039                    problem: "contains `amd_texture_gather_bias_lod`".into(),
13040                    requires_one_of: crate::RequiresOneOf(&[
13041                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13042                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13043                            "khr_get_physical_device_properties2",
13044                        )]),
13045                    ]),
13046                    ..Default::default()
13047                }));
13048            }
13049        }
13050        if self.android_external_format_resolve {
13051            if !supported.android_external_format_resolve {
13052                return Err (Box :: new (crate :: ValidationError { problem : "contains `android_external_format_resolve`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13053            }
13054        }
13055        if self.android_external_memory_android_hardware_buffer {
13056            if !supported.android_external_memory_android_hardware_buffer {
13057                return Err (Box :: new (crate :: ValidationError { problem : "contains `android_external_memory_android_hardware_buffer`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13058            }
13059        }
13060        if self.arm_rasterization_order_attachment_access {
13061            if !supported.arm_rasterization_order_attachment_access {
13062                return Err (Box :: new (crate :: ValidationError { problem : "contains `arm_rasterization_order_attachment_access`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13063            }
13064            if !(api_version >= crate::Version::V1_1
13065                || instance_extensions.khr_get_physical_device_properties2)
13066            {
13067                return Err(Box::new(crate::ValidationError {
13068                    problem: "contains `arm_rasterization_order_attachment_access`".into(),
13069                    requires_one_of: crate::RequiresOneOf(&[
13070                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13071                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13072                            "khr_get_physical_device_properties2",
13073                        )]),
13074                    ]),
13075                    ..Default::default()
13076                }));
13077            }
13078        }
13079        if self.arm_render_pass_striped {
13080            if !supported.arm_render_pass_striped {
13081                return Err (Box :: new (crate :: ValidationError { problem : "contains `arm_render_pass_striped`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13082            }
13083            if !(api_version >= crate::Version::V1_1
13084                || instance_extensions.khr_get_physical_device_properties2)
13085            {
13086                return Err(Box::new(crate::ValidationError {
13087                    problem: "contains `arm_render_pass_striped`".into(),
13088                    requires_one_of: crate::RequiresOneOf(&[
13089                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13090                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13091                            "khr_get_physical_device_properties2",
13092                        )]),
13093                    ]),
13094                    ..Default::default()
13095                }));
13096            }
13097        }
13098        if self.arm_scheduling_controls {
13099            if !supported.arm_scheduling_controls {
13100                return Err (Box :: new (crate :: ValidationError { problem : "contains `arm_scheduling_controls`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13101            }
13102        }
13103        if self.arm_shader_core_builtins {
13104            if !supported.arm_shader_core_builtins {
13105                return Err (Box :: new (crate :: ValidationError { problem : "contains `arm_shader_core_builtins`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13106            }
13107            if !(api_version >= crate::Version::V1_1
13108                || instance_extensions.khr_get_physical_device_properties2)
13109            {
13110                return Err(Box::new(crate::ValidationError {
13111                    problem: "contains `arm_shader_core_builtins`".into(),
13112                    requires_one_of: crate::RequiresOneOf(&[
13113                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13114                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13115                            "khr_get_physical_device_properties2",
13116                        )]),
13117                    ]),
13118                    ..Default::default()
13119                }));
13120            }
13121        }
13122        if self.arm_shader_core_properties {
13123            if !supported.arm_shader_core_properties {
13124                return Err (Box :: new (crate :: ValidationError { problem : "contains `arm_shader_core_properties`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13125            }
13126            if !(api_version >= crate::Version::V1_1) {
13127                return Err(Box::new(crate::ValidationError {
13128                    problem: "contains `arm_shader_core_properties`".into(),
13129                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
13130                        crate::Requires::APIVersion(crate::Version::V1_1),
13131                    ])]),
13132                    ..Default::default()
13133                }));
13134            }
13135        }
13136        if self.fuchsia_buffer_collection {
13137            if !supported.fuchsia_buffer_collection {
13138                return Err (Box :: new (crate :: ValidationError { problem : "contains `fuchsia_buffer_collection`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13139            }
13140        }
13141        if self.fuchsia_external_memory {
13142            if !supported.fuchsia_external_memory {
13143                return Err (Box :: new (crate :: ValidationError { problem : "contains `fuchsia_external_memory`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13144            }
13145            if !(api_version >= crate::Version::V1_1
13146                || instance_extensions.khr_external_memory_capabilities)
13147            {
13148                return Err(Box::new(crate::ValidationError {
13149                    problem: "contains `fuchsia_external_memory`".into(),
13150                    requires_one_of: crate::RequiresOneOf(&[
13151                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13152                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13153                            "khr_external_memory_capabilities",
13154                        )]),
13155                    ]),
13156                    ..Default::default()
13157                }));
13158            }
13159        }
13160        if self.fuchsia_external_semaphore {
13161            if !supported.fuchsia_external_semaphore {
13162                return Err (Box :: new (crate :: ValidationError { problem : "contains `fuchsia_external_semaphore`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13163            }
13164            if !(api_version >= crate::Version::V1_1
13165                || instance_extensions.khr_external_semaphore_capabilities)
13166            {
13167                return Err(Box::new(crate::ValidationError {
13168                    problem: "contains `fuchsia_external_semaphore`".into(),
13169                    requires_one_of: crate::RequiresOneOf(&[
13170                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13171                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13172                            "khr_external_semaphore_capabilities",
13173                        )]),
13174                    ]),
13175                    ..Default::default()
13176                }));
13177            }
13178        }
13179        if self.ggp_frame_token {
13180            if !supported.ggp_frame_token {
13181                return Err (Box :: new (crate :: ValidationError { problem : "contains `ggp_frame_token`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13182            }
13183            if !(instance_extensions.ggp_stream_descriptor_surface) {
13184                return Err(Box::new(crate::ValidationError {
13185                    problem: "contains `ggp_frame_token`".into(),
13186                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
13187                        crate::Requires::InstanceExtension("ggp_stream_descriptor_surface"),
13188                    ])]),
13189                    ..Default::default()
13190                }));
13191            }
13192        }
13193        if self.google_decorate_string {
13194            if !supported.google_decorate_string {
13195                return Err (Box :: new (crate :: ValidationError { problem : "contains `google_decorate_string`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13196            }
13197        }
13198        if self.google_display_timing {
13199            if !supported.google_display_timing {
13200                return Err (Box :: new (crate :: ValidationError { problem : "contains `google_display_timing`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13201            }
13202        }
13203        if self.google_hlsl_functionality1 {
13204            if !supported.google_hlsl_functionality1 {
13205                return Err (Box :: new (crate :: ValidationError { problem : "contains `google_hlsl_functionality1`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13206            }
13207        }
13208        if self.google_user_type {
13209            if !supported.google_user_type {
13210                return Err (Box :: new (crate :: ValidationError { problem : "contains `google_user_type`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13211            }
13212        }
13213        if self.huawei_cluster_culling_shader {
13214            if !supported.huawei_cluster_culling_shader {
13215                return Err (Box :: new (crate :: ValidationError { problem : "contains `huawei_cluster_culling_shader`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13216            }
13217            if !(api_version >= crate::Version::V1_1
13218                || instance_extensions.khr_get_physical_device_properties2)
13219            {
13220                return Err(Box::new(crate::ValidationError {
13221                    problem: "contains `huawei_cluster_culling_shader`".into(),
13222                    requires_one_of: crate::RequiresOneOf(&[
13223                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13224                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13225                            "khr_get_physical_device_properties2",
13226                        )]),
13227                    ]),
13228                    ..Default::default()
13229                }));
13230            }
13231        }
13232        if self.huawei_invocation_mask {
13233            if !supported.huawei_invocation_mask {
13234                return Err (Box :: new (crate :: ValidationError { problem : "contains `huawei_invocation_mask`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13235            }
13236        }
13237        if self.huawei_subpass_shading {
13238            if !supported.huawei_subpass_shading {
13239                return Err (Box :: new (crate :: ValidationError { problem : "contains `huawei_subpass_shading`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13240            }
13241        }
13242        if self.img_filter_cubic {
13243            if !supported.img_filter_cubic {
13244                return Err (Box :: new (crate :: ValidationError { problem : "contains `img_filter_cubic`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13245            }
13246        }
13247        if self.img_format_pvrtc {
13248            if !supported.img_format_pvrtc {
13249                return Err (Box :: new (crate :: ValidationError { problem : "contains `img_format_pvrtc`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13250            }
13251        }
13252        if self.img_relaxed_line_rasterization {
13253            if !supported.img_relaxed_line_rasterization {
13254                return Err (Box :: new (crate :: ValidationError { problem : "contains `img_relaxed_line_rasterization`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13255            }
13256            if !(api_version >= crate::Version::V1_1
13257                || instance_extensions.khr_get_physical_device_properties2)
13258            {
13259                return Err(Box::new(crate::ValidationError {
13260                    problem: "contains `img_relaxed_line_rasterization`".into(),
13261                    requires_one_of: crate::RequiresOneOf(&[
13262                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13263                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13264                            "khr_get_physical_device_properties2",
13265                        )]),
13266                    ]),
13267                    ..Default::default()
13268                }));
13269            }
13270        }
13271        if self.intel_performance_query {
13272            if !supported.intel_performance_query {
13273                return Err (Box :: new (crate :: ValidationError { problem : "contains `intel_performance_query`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13274            }
13275        }
13276        if self.intel_shader_integer_functions2 {
13277            if !supported.intel_shader_integer_functions2 {
13278                return Err (Box :: new (crate :: ValidationError { problem : "contains `intel_shader_integer_functions2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13279            }
13280            if !(api_version >= crate::Version::V1_1
13281                || instance_extensions.khr_get_physical_device_properties2)
13282            {
13283                return Err(Box::new(crate::ValidationError {
13284                    problem: "contains `intel_shader_integer_functions2`".into(),
13285                    requires_one_of: crate::RequiresOneOf(&[
13286                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13287                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13288                            "khr_get_physical_device_properties2",
13289                        )]),
13290                    ]),
13291                    ..Default::default()
13292                }));
13293            }
13294        }
13295        if self.msft_layered_driver {
13296            if !supported.msft_layered_driver {
13297                return Err (Box :: new (crate :: ValidationError { problem : "contains `msft_layered_driver`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13298            }
13299            if !(api_version >= crate::Version::V1_1
13300                || instance_extensions.khr_get_physical_device_properties2)
13301            {
13302                return Err(Box::new(crate::ValidationError {
13303                    problem: "contains `msft_layered_driver`".into(),
13304                    requires_one_of: crate::RequiresOneOf(&[
13305                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13306                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13307                            "khr_get_physical_device_properties2",
13308                        )]),
13309                    ]),
13310                    ..Default::default()
13311                }));
13312            }
13313        }
13314        if self.nvx_binary_import {
13315            if !supported.nvx_binary_import {
13316                return Err (Box :: new (crate :: ValidationError { problem : "contains `nvx_binary_import`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13317            }
13318        }
13319        if self.nvx_image_view_handle {
13320            if !supported.nvx_image_view_handle {
13321                return Err (Box :: new (crate :: ValidationError { problem : "contains `nvx_image_view_handle`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13322            }
13323        }
13324        if self.nvx_multiview_per_view_attributes {
13325            if !supported.nvx_multiview_per_view_attributes {
13326                return Err (Box :: new (crate :: ValidationError { problem : "contains `nvx_multiview_per_view_attributes`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13327            }
13328        }
13329        if self.nv_acquire_winrt_display {
13330            if !supported.nv_acquire_winrt_display {
13331                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_acquire_winrt_display`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13332            }
13333            if !(instance_extensions.ext_direct_mode_display) {
13334                return Err(Box::new(crate::ValidationError {
13335                    problem: "contains `nv_acquire_winrt_display`".into(),
13336                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
13337                        crate::Requires::InstanceExtension("ext_direct_mode_display"),
13338                    ])]),
13339                    ..Default::default()
13340                }));
13341            }
13342        }
13343        if self.nv_clip_space_w_scaling {
13344            if !supported.nv_clip_space_w_scaling {
13345                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_clip_space_w_scaling`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13346            }
13347        }
13348        if self.nv_compute_shader_derivatives {
13349            if !supported.nv_compute_shader_derivatives {
13350                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_compute_shader_derivatives`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13351            }
13352            if !(api_version >= crate::Version::V1_1
13353                || instance_extensions.khr_get_physical_device_properties2)
13354            {
13355                return Err(Box::new(crate::ValidationError {
13356                    problem: "contains `nv_compute_shader_derivatives`".into(),
13357                    requires_one_of: crate::RequiresOneOf(&[
13358                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13359                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13360                            "khr_get_physical_device_properties2",
13361                        )]),
13362                    ]),
13363                    ..Default::default()
13364                }));
13365            }
13366        }
13367        if self.nv_cooperative_matrix {
13368            if !supported.nv_cooperative_matrix {
13369                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_cooperative_matrix`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13370            }
13371            if !(api_version >= crate::Version::V1_1
13372                || instance_extensions.khr_get_physical_device_properties2)
13373            {
13374                return Err(Box::new(crate::ValidationError {
13375                    problem: "contains `nv_cooperative_matrix`".into(),
13376                    requires_one_of: crate::RequiresOneOf(&[
13377                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13378                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13379                            "khr_get_physical_device_properties2",
13380                        )]),
13381                    ]),
13382                    ..Default::default()
13383                }));
13384            }
13385        }
13386        if self.nv_copy_memory_indirect {
13387            if !supported.nv_copy_memory_indirect {
13388                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_copy_memory_indirect`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13389            }
13390            if !(api_version >= crate::Version::V1_1
13391                || instance_extensions.khr_get_physical_device_properties2)
13392            {
13393                return Err(Box::new(crate::ValidationError {
13394                    problem: "contains `nv_copy_memory_indirect`".into(),
13395                    requires_one_of: crate::RequiresOneOf(&[
13396                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13397                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13398                            "khr_get_physical_device_properties2",
13399                        )]),
13400                    ]),
13401                    ..Default::default()
13402                }));
13403            }
13404        }
13405        if self.nv_corner_sampled_image {
13406            if !supported.nv_corner_sampled_image {
13407                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_corner_sampled_image`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13408            }
13409            if !(api_version >= crate::Version::V1_1
13410                || instance_extensions.khr_get_physical_device_properties2)
13411            {
13412                return Err(Box::new(crate::ValidationError {
13413                    problem: "contains `nv_corner_sampled_image`".into(),
13414                    requires_one_of: crate::RequiresOneOf(&[
13415                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13416                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13417                            "khr_get_physical_device_properties2",
13418                        )]),
13419                    ]),
13420                    ..Default::default()
13421                }));
13422            }
13423        }
13424        if self.nv_coverage_reduction_mode {
13425            if !supported.nv_coverage_reduction_mode {
13426                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_coverage_reduction_mode`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13427            }
13428            if !(api_version >= crate::Version::V1_1
13429                || instance_extensions.khr_get_physical_device_properties2)
13430            {
13431                return Err(Box::new(crate::ValidationError {
13432                    problem: "contains `nv_coverage_reduction_mode`".into(),
13433                    requires_one_of: crate::RequiresOneOf(&[
13434                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13435                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13436                            "khr_get_physical_device_properties2",
13437                        )]),
13438                    ]),
13439                    ..Default::default()
13440                }));
13441            }
13442        }
13443        if self.nv_cuda_kernel_launch {
13444            if !supported.nv_cuda_kernel_launch {
13445                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_cuda_kernel_launch`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13446            }
13447        }
13448        if self.nv_dedicated_allocation {
13449            if !supported.nv_dedicated_allocation {
13450                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_dedicated_allocation`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13451            }
13452        }
13453        if self.nv_dedicated_allocation_image_aliasing {
13454            if !supported.nv_dedicated_allocation_image_aliasing {
13455                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_dedicated_allocation_image_aliasing`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13456            }
13457            if !(api_version >= crate::Version::V1_1
13458                || instance_extensions.khr_get_physical_device_properties2)
13459            {
13460                return Err(Box::new(crate::ValidationError {
13461                    problem: "contains `nv_dedicated_allocation_image_aliasing`".into(),
13462                    requires_one_of: crate::RequiresOneOf(&[
13463                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13464                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13465                            "khr_get_physical_device_properties2",
13466                        )]),
13467                    ]),
13468                    ..Default::default()
13469                }));
13470            }
13471        }
13472        if self.nv_descriptor_pool_overallocation {
13473            if !supported.nv_descriptor_pool_overallocation {
13474                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_descriptor_pool_overallocation`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13475            }
13476            if !(api_version >= crate::Version::V1_1) {
13477                return Err(Box::new(crate::ValidationError {
13478                    problem: "contains `nv_descriptor_pool_overallocation`".into(),
13479                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
13480                        crate::Requires::APIVersion(crate::Version::V1_1),
13481                    ])]),
13482                    ..Default::default()
13483                }));
13484            }
13485        }
13486        if self.nv_device_diagnostic_checkpoints {
13487            if !supported.nv_device_diagnostic_checkpoints {
13488                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_device_diagnostic_checkpoints`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13489            }
13490            if !(api_version >= crate::Version::V1_1
13491                || instance_extensions.khr_get_physical_device_properties2)
13492            {
13493                return Err(Box::new(crate::ValidationError {
13494                    problem: "contains `nv_device_diagnostic_checkpoints`".into(),
13495                    requires_one_of: crate::RequiresOneOf(&[
13496                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13497                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13498                            "khr_get_physical_device_properties2",
13499                        )]),
13500                    ]),
13501                    ..Default::default()
13502                }));
13503            }
13504        }
13505        if self.nv_device_diagnostics_config {
13506            if !supported.nv_device_diagnostics_config {
13507                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_device_diagnostics_config`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13508            }
13509            if !(api_version >= crate::Version::V1_1
13510                || instance_extensions.khr_get_physical_device_properties2)
13511            {
13512                return Err(Box::new(crate::ValidationError {
13513                    problem: "contains `nv_device_diagnostics_config`".into(),
13514                    requires_one_of: crate::RequiresOneOf(&[
13515                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13516                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13517                            "khr_get_physical_device_properties2",
13518                        )]),
13519                    ]),
13520                    ..Default::default()
13521                }));
13522            }
13523        }
13524        if self.nv_device_generated_commands {
13525            if !supported.nv_device_generated_commands {
13526                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_device_generated_commands`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13527            }
13528            if !(api_version >= crate::Version::V1_1) {
13529                return Err(Box::new(crate::ValidationError {
13530                    problem: "contains `nv_device_generated_commands`".into(),
13531                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
13532                        crate::Requires::APIVersion(crate::Version::V1_1),
13533                    ])]),
13534                    ..Default::default()
13535                }));
13536            }
13537        }
13538        if self.nv_device_generated_commands_compute {
13539            if !supported.nv_device_generated_commands_compute {
13540                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_device_generated_commands_compute`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13541            }
13542        }
13543        if self.nv_displacement_micromap {
13544            if !supported.nv_displacement_micromap {
13545                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_displacement_micromap`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13546            }
13547        }
13548        if self.nv_extended_sparse_address_space {
13549            if !supported.nv_extended_sparse_address_space {
13550                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_extended_sparse_address_space`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13551            }
13552        }
13553        if self.nv_external_memory {
13554            if !supported.nv_external_memory {
13555                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_external_memory`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13556            }
13557            if !(instance_extensions.nv_external_memory_capabilities) {
13558                return Err(Box::new(crate::ValidationError {
13559                    problem: "contains `nv_external_memory`".into(),
13560                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
13561                        crate::Requires::InstanceExtension("nv_external_memory_capabilities"),
13562                    ])]),
13563                    ..Default::default()
13564                }));
13565            }
13566        }
13567        if self.nv_external_memory_rdma {
13568            if !supported.nv_external_memory_rdma {
13569                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_external_memory_rdma`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13570            }
13571        }
13572        if self.nv_external_memory_win32 {
13573            if !supported.nv_external_memory_win32 {
13574                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_external_memory_win32`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13575            }
13576        }
13577        if self.nv_fill_rectangle {
13578            if !supported.nv_fill_rectangle {
13579                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_fill_rectangle`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13580            }
13581        }
13582        if self.nv_fragment_coverage_to_color {
13583            if !supported.nv_fragment_coverage_to_color {
13584                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_fragment_coverage_to_color`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13585            }
13586        }
13587        if self.nv_fragment_shader_barycentric {
13588            if !supported.nv_fragment_shader_barycentric {
13589                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_fragment_shader_barycentric`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13590            }
13591            if !(api_version >= crate::Version::V1_1
13592                || instance_extensions.khr_get_physical_device_properties2)
13593            {
13594                return Err(Box::new(crate::ValidationError {
13595                    problem: "contains `nv_fragment_shader_barycentric`".into(),
13596                    requires_one_of: crate::RequiresOneOf(&[
13597                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13598                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13599                            "khr_get_physical_device_properties2",
13600                        )]),
13601                    ]),
13602                    ..Default::default()
13603                }));
13604            }
13605        }
13606        if self.nv_fragment_shading_rate_enums {
13607            if !supported.nv_fragment_shading_rate_enums {
13608                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_fragment_shading_rate_enums`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13609            }
13610        }
13611        if self.nv_framebuffer_mixed_samples {
13612            if !supported.nv_framebuffer_mixed_samples {
13613                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_framebuffer_mixed_samples`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13614            }
13615        }
13616        if self.nv_geometry_shader_passthrough {
13617            if !supported.nv_geometry_shader_passthrough {
13618                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_geometry_shader_passthrough`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13619            }
13620        }
13621        if self.nv_glsl_shader {
13622            if !supported.nv_glsl_shader {
13623                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_glsl_shader`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13624            }
13625        }
13626        if self.nv_inherited_viewport_scissor {
13627            if !supported.nv_inherited_viewport_scissor {
13628                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_inherited_viewport_scissor`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13629            }
13630            if !(api_version >= crate::Version::V1_1
13631                || instance_extensions.khr_get_physical_device_properties2)
13632            {
13633                return Err(Box::new(crate::ValidationError {
13634                    problem: "contains `nv_inherited_viewport_scissor`".into(),
13635                    requires_one_of: crate::RequiresOneOf(&[
13636                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13637                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13638                            "khr_get_physical_device_properties2",
13639                        )]),
13640                    ]),
13641                    ..Default::default()
13642                }));
13643            }
13644        }
13645        if self.nv_linear_color_attachment {
13646            if !supported.nv_linear_color_attachment {
13647                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_linear_color_attachment`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13648            }
13649            if !(api_version >= crate::Version::V1_1
13650                || instance_extensions.khr_get_physical_device_properties2)
13651            {
13652                return Err(Box::new(crate::ValidationError {
13653                    problem: "contains `nv_linear_color_attachment`".into(),
13654                    requires_one_of: crate::RequiresOneOf(&[
13655                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13656                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13657                            "khr_get_physical_device_properties2",
13658                        )]),
13659                    ]),
13660                    ..Default::default()
13661                }));
13662            }
13663        }
13664        if self.nv_low_latency {
13665            if !supported.nv_low_latency {
13666                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_low_latency`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13667            }
13668        }
13669        if self.nv_low_latency2 {
13670            if !supported.nv_low_latency2 {
13671                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_low_latency2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13672            }
13673        }
13674        if self.nv_memory_decompression {
13675            if !supported.nv_memory_decompression {
13676                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_memory_decompression`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13677            }
13678            if !(api_version >= crate::Version::V1_1
13679                || instance_extensions.khr_get_physical_device_properties2)
13680            {
13681                return Err(Box::new(crate::ValidationError {
13682                    problem: "contains `nv_memory_decompression`".into(),
13683                    requires_one_of: crate::RequiresOneOf(&[
13684                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13685                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13686                            "khr_get_physical_device_properties2",
13687                        )]),
13688                    ]),
13689                    ..Default::default()
13690                }));
13691            }
13692        }
13693        if self.nv_mesh_shader {
13694            if !supported.nv_mesh_shader {
13695                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_mesh_shader`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13696            }
13697            if !(api_version >= crate::Version::V1_1
13698                || instance_extensions.khr_get_physical_device_properties2)
13699            {
13700                return Err(Box::new(crate::ValidationError {
13701                    problem: "contains `nv_mesh_shader`".into(),
13702                    requires_one_of: crate::RequiresOneOf(&[
13703                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13704                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13705                            "khr_get_physical_device_properties2",
13706                        )]),
13707                    ]),
13708                    ..Default::default()
13709                }));
13710            }
13711        }
13712        if self.nv_optical_flow {
13713            if !supported.nv_optical_flow {
13714                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_optical_flow`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13715            }
13716            if !(api_version >= crate::Version::V1_1
13717                || instance_extensions.khr_get_physical_device_properties2)
13718            {
13719                return Err(Box::new(crate::ValidationError {
13720                    problem: "contains `nv_optical_flow`".into(),
13721                    requires_one_of: crate::RequiresOneOf(&[
13722                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13723                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13724                            "khr_get_physical_device_properties2",
13725                        )]),
13726                    ]),
13727                    ..Default::default()
13728                }));
13729            }
13730        }
13731        if self.nv_per_stage_descriptor_set {
13732            if !supported.nv_per_stage_descriptor_set {
13733                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_per_stage_descriptor_set`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13734            }
13735        }
13736        if self.nv_present_barrier {
13737            if !supported.nv_present_barrier {
13738                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_present_barrier`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13739            }
13740            if !(api_version >= crate::Version::V1_1
13741                || instance_extensions.khr_get_physical_device_properties2)
13742            {
13743                return Err(Box::new(crate::ValidationError {
13744                    problem: "contains `nv_present_barrier`".into(),
13745                    requires_one_of: crate::RequiresOneOf(&[
13746                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13747                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13748                            "khr_get_physical_device_properties2",
13749                        )]),
13750                    ]),
13751                    ..Default::default()
13752                }));
13753            }
13754            if !(instance_extensions.khr_surface) {
13755                return Err(Box::new(crate::ValidationError {
13756                    problem: "contains `nv_present_barrier`".into(),
13757                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
13758                        crate::Requires::InstanceExtension("khr_surface"),
13759                    ])]),
13760                    ..Default::default()
13761                }));
13762            }
13763            if !(instance_extensions.khr_get_surface_capabilities2) {
13764                return Err(Box::new(crate::ValidationError {
13765                    problem: "contains `nv_present_barrier`".into(),
13766                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
13767                        crate::Requires::InstanceExtension("khr_get_surface_capabilities2"),
13768                    ])]),
13769                    ..Default::default()
13770                }));
13771            }
13772        }
13773        if self.nv_raw_access_chains {
13774            if !supported.nv_raw_access_chains {
13775                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_raw_access_chains`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13776            }
13777        }
13778        if self.nv_ray_tracing {
13779            if !supported.nv_ray_tracing {
13780                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_ray_tracing`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13781            }
13782            if !(api_version >= crate::Version::V1_1
13783                || instance_extensions.khr_get_physical_device_properties2)
13784            {
13785                return Err(Box::new(crate::ValidationError {
13786                    problem: "contains `nv_ray_tracing`".into(),
13787                    requires_one_of: crate::RequiresOneOf(&[
13788                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13789                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13790                            "khr_get_physical_device_properties2",
13791                        )]),
13792                    ]),
13793                    ..Default::default()
13794                }));
13795            }
13796        }
13797        if self.nv_ray_tracing_invocation_reorder {
13798            if !supported.nv_ray_tracing_invocation_reorder {
13799                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_ray_tracing_invocation_reorder`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13800            }
13801        }
13802        if self.nv_ray_tracing_motion_blur {
13803            if !supported.nv_ray_tracing_motion_blur {
13804                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_ray_tracing_motion_blur`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13805            }
13806        }
13807        if self.nv_ray_tracing_validation {
13808            if !supported.nv_ray_tracing_validation {
13809                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_ray_tracing_validation`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13810            }
13811        }
13812        if self.nv_representative_fragment_test {
13813            if !supported.nv_representative_fragment_test {
13814                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_representative_fragment_test`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13815            }
13816            if !(api_version >= crate::Version::V1_1
13817                || instance_extensions.khr_get_physical_device_properties2)
13818            {
13819                return Err(Box::new(crate::ValidationError {
13820                    problem: "contains `nv_representative_fragment_test`".into(),
13821                    requires_one_of: crate::RequiresOneOf(&[
13822                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13823                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13824                            "khr_get_physical_device_properties2",
13825                        )]),
13826                    ]),
13827                    ..Default::default()
13828                }));
13829            }
13830        }
13831        if self.nv_sample_mask_override_coverage {
13832            if !supported.nv_sample_mask_override_coverage {
13833                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_sample_mask_override_coverage`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13834            }
13835        }
13836        if self.nv_scissor_exclusive {
13837            if !supported.nv_scissor_exclusive {
13838                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_scissor_exclusive`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13839            }
13840            if !(api_version >= crate::Version::V1_1
13841                || instance_extensions.khr_get_physical_device_properties2)
13842            {
13843                return Err(Box::new(crate::ValidationError {
13844                    problem: "contains `nv_scissor_exclusive`".into(),
13845                    requires_one_of: crate::RequiresOneOf(&[
13846                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13847                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13848                            "khr_get_physical_device_properties2",
13849                        )]),
13850                    ]),
13851                    ..Default::default()
13852                }));
13853            }
13854        }
13855        if self.nv_shader_atomic_float16_vector {
13856            if !supported.nv_shader_atomic_float16_vector {
13857                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_shader_atomic_float16_vector`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13858            }
13859        }
13860        if self.nv_shader_image_footprint {
13861            if !supported.nv_shader_image_footprint {
13862                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_shader_image_footprint`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13863            }
13864            if !(api_version >= crate::Version::V1_1
13865                || instance_extensions.khr_get_physical_device_properties2)
13866            {
13867                return Err(Box::new(crate::ValidationError {
13868                    problem: "contains `nv_shader_image_footprint`".into(),
13869                    requires_one_of: crate::RequiresOneOf(&[
13870                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13871                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13872                            "khr_get_physical_device_properties2",
13873                        )]),
13874                    ]),
13875                    ..Default::default()
13876                }));
13877            }
13878        }
13879        if self.nv_shader_sm_builtins {
13880            if !supported.nv_shader_sm_builtins {
13881                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_shader_sm_builtins`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13882            }
13883            if !(api_version >= crate::Version::V1_1) {
13884                return Err(Box::new(crate::ValidationError {
13885                    problem: "contains `nv_shader_sm_builtins`".into(),
13886                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
13887                        crate::Requires::APIVersion(crate::Version::V1_1),
13888                    ])]),
13889                    ..Default::default()
13890                }));
13891            }
13892        }
13893        if self.nv_shader_subgroup_partitioned {
13894            if !supported.nv_shader_subgroup_partitioned {
13895                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_shader_subgroup_partitioned`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13896            }
13897            if !(api_version >= crate::Version::V1_1) {
13898                return Err(Box::new(crate::ValidationError {
13899                    problem: "contains `nv_shader_subgroup_partitioned`".into(),
13900                    requires_one_of: crate::RequiresOneOf(&[crate::RequiresAllOf(&[
13901                        crate::Requires::APIVersion(crate::Version::V1_1),
13902                    ])]),
13903                    ..Default::default()
13904                }));
13905            }
13906        }
13907        if self.nv_shading_rate_image {
13908            if !supported.nv_shading_rate_image {
13909                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_shading_rate_image`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13910            }
13911            if !(api_version >= crate::Version::V1_1
13912                || instance_extensions.khr_get_physical_device_properties2)
13913            {
13914                return Err(Box::new(crate::ValidationError {
13915                    problem: "contains `nv_shading_rate_image`".into(),
13916                    requires_one_of: crate::RequiresOneOf(&[
13917                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13918                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13919                            "khr_get_physical_device_properties2",
13920                        )]),
13921                    ]),
13922                    ..Default::default()
13923                }));
13924            }
13925        }
13926        if self.nv_viewport_array2 {
13927            if !supported.nv_viewport_array2 {
13928                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_viewport_array2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13929            }
13930        }
13931        if self.nv_viewport_swizzle {
13932            if !supported.nv_viewport_swizzle {
13933                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_viewport_swizzle`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13934            }
13935        }
13936        if self.nv_win32_keyed_mutex {
13937            if !supported.nv_win32_keyed_mutex {
13938                return Err (Box :: new (crate :: ValidationError { problem : "contains `nv_win32_keyed_mutex`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13939            }
13940        }
13941        if self.qcom_filter_cubic_clamp {
13942            if !supported.qcom_filter_cubic_clamp {
13943                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_filter_cubic_clamp`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13944            }
13945        }
13946        if self.qcom_filter_cubic_weights {
13947            if !supported.qcom_filter_cubic_weights {
13948                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_filter_cubic_weights`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13949            }
13950        }
13951        if self.qcom_fragment_density_map_offset {
13952            if !supported.qcom_fragment_density_map_offset {
13953                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_fragment_density_map_offset`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13954            }
13955            if !(api_version >= crate::Version::V1_1
13956                || instance_extensions.khr_get_physical_device_properties2)
13957            {
13958                return Err(Box::new(crate::ValidationError {
13959                    problem: "contains `qcom_fragment_density_map_offset`".into(),
13960                    requires_one_of: crate::RequiresOneOf(&[
13961                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13962                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13963                            "khr_get_physical_device_properties2",
13964                        )]),
13965                    ]),
13966                    ..Default::default()
13967                }));
13968            }
13969        }
13970        if self.qcom_image_processing {
13971            if !supported.qcom_image_processing {
13972                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_image_processing`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13973            }
13974        }
13975        if self.qcom_image_processing2 {
13976            if !supported.qcom_image_processing2 {
13977                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_image_processing2`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13978            }
13979        }
13980        if self.qcom_multiview_per_view_render_areas {
13981            if !supported.qcom_multiview_per_view_render_areas {
13982                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_multiview_per_view_render_areas`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13983            }
13984        }
13985        if self.qcom_multiview_per_view_viewports {
13986            if !supported.qcom_multiview_per_view_viewports {
13987                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_multiview_per_view_viewports`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
13988            }
13989            if !(api_version >= crate::Version::V1_1
13990                || instance_extensions.khr_get_physical_device_properties2)
13991            {
13992                return Err(Box::new(crate::ValidationError {
13993                    problem: "contains `qcom_multiview_per_view_viewports`".into(),
13994                    requires_one_of: crate::RequiresOneOf(&[
13995                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
13996                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
13997                            "khr_get_physical_device_properties2",
13998                        )]),
13999                    ]),
14000                    ..Default::default()
14001                }));
14002            }
14003        }
14004        if self.qcom_render_pass_shader_resolve {
14005            if !supported.qcom_render_pass_shader_resolve {
14006                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_render_pass_shader_resolve`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
14007            }
14008        }
14009        if self.qcom_render_pass_store_ops {
14010            if !supported.qcom_render_pass_store_ops {
14011                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_render_pass_store_ops`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
14012            }
14013        }
14014        if self.qcom_render_pass_transform {
14015            if !supported.qcom_render_pass_transform {
14016                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_render_pass_transform`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
14017            }
14018        }
14019        if self.qcom_rotated_copy_commands {
14020            if !supported.qcom_rotated_copy_commands {
14021                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_rotated_copy_commands`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
14022            }
14023        }
14024        if self.qcom_tile_properties {
14025            if !supported.qcom_tile_properties {
14026                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_tile_properties`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
14027            }
14028            if !(api_version >= crate::Version::V1_1
14029                || instance_extensions.khr_get_physical_device_properties2)
14030            {
14031                return Err(Box::new(crate::ValidationError {
14032                    problem: "contains `qcom_tile_properties`".into(),
14033                    requires_one_of: crate::RequiresOneOf(&[
14034                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
14035                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
14036                            "khr_get_physical_device_properties2",
14037                        )]),
14038                    ]),
14039                    ..Default::default()
14040                }));
14041            }
14042        }
14043        if self.qcom_ycbcr_degamma {
14044            if !supported.qcom_ycbcr_degamma {
14045                return Err (Box :: new (crate :: ValidationError { problem : "contains `qcom_ycbcr_degamma`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
14046            }
14047        }
14048        if self.qnx_external_memory_screen_buffer {
14049            if !supported.qnx_external_memory_screen_buffer {
14050                return Err (Box :: new (crate :: ValidationError { problem : "contains `qnx_external_memory_screen_buffer`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
14051            }
14052        }
14053        if self.sec_amigo_profiling {
14054            if !supported.sec_amigo_profiling {
14055                return Err (Box :: new (crate :: ValidationError { problem : "contains `sec_amigo_profiling`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
14056            }
14057            if !(api_version >= crate::Version::V1_1
14058                || instance_extensions.khr_get_physical_device_properties2)
14059            {
14060                return Err(Box::new(crate::ValidationError {
14061                    problem: "contains `sec_amigo_profiling`".into(),
14062                    requires_one_of: crate::RequiresOneOf(&[
14063                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
14064                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
14065                            "khr_get_physical_device_properties2",
14066                        )]),
14067                    ]),
14068                    ..Default::default()
14069                }));
14070            }
14071        }
14072        if self.valve_descriptor_set_host_mapping {
14073            if !supported.valve_descriptor_set_host_mapping {
14074                return Err (Box :: new (crate :: ValidationError { problem : "contains `valve_descriptor_set_host_mapping`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
14075            }
14076            if !(api_version >= crate::Version::V1_1
14077                || instance_extensions.khr_get_physical_device_properties2)
14078            {
14079                return Err(Box::new(crate::ValidationError {
14080                    problem: "contains `valve_descriptor_set_host_mapping`".into(),
14081                    requires_one_of: crate::RequiresOneOf(&[
14082                        crate::RequiresAllOf(&[crate::Requires::APIVersion(crate::Version::V1_1)]),
14083                        crate::RequiresAllOf(&[crate::Requires::InstanceExtension(
14084                            "khr_get_physical_device_properties2",
14085                        )]),
14086                    ]),
14087                    ..Default::default()
14088                }));
14089            }
14090        }
14091        if self.valve_mutable_descriptor_type {
14092            if !supported.valve_mutable_descriptor_type {
14093                return Err (Box :: new (crate :: ValidationError { problem : "contains `valve_mutable_descriptor_type`, but this extension is not supported by the physical device" . into () , .. Default :: default () })) ;
14094            }
14095        }
14096        Ok(())
14097    }
14098    #[doc = r" Enables all the extensions that the extensions in `self` currently depend on."]
14099    pub(super) fn enable_dependencies(
14100        &mut self,
14101        api_version: crate::Version,
14102        supported: &DeviceExtensions,
14103    ) {
14104        if self.khr_16bit_storage {
14105            if !(api_version >= crate::Version::V1_1 || self.khr_storage_buffer_storage_class) {
14106                assert!(
14107                    supported.khr_storage_buffer_storage_class,
14108                    "The device extension `{}` is enabled, and it requires \
14109                                        the `{}` extension to be also enabled, but the device \
14110                                        does not support the required extension. \
14111                                        This is a bug in the Vulkan driver for this device.",
14112                    "khr_16bit_storage", "khr_storage_buffer_storage_class",
14113                );
14114                self.khr_storage_buffer_storage_class = true;
14115            }
14116        }
14117        if self.khr_8bit_storage {
14118            if !(api_version >= crate::Version::V1_1 || self.khr_storage_buffer_storage_class) {
14119                assert!(
14120                    supported.khr_storage_buffer_storage_class,
14121                    "The device extension `{}` is enabled, and it requires \
14122                                        the `{}` extension to be also enabled, but the device \
14123                                        does not support the required extension. \
14124                                        This is a bug in the Vulkan driver for this device.",
14125                    "khr_8bit_storage", "khr_storage_buffer_storage_class",
14126                );
14127                self.khr_storage_buffer_storage_class = true;
14128            }
14129        }
14130        if self.khr_acceleration_structure {
14131            if !(api_version >= crate::Version::V1_2 || self.ext_descriptor_indexing) {
14132                assert!(
14133                    supported.ext_descriptor_indexing,
14134                    "The device extension `{}` is enabled, and it requires \
14135                                        the `{}` extension to be also enabled, but the device \
14136                                        does not support the required extension. \
14137                                        This is a bug in the Vulkan driver for this device.",
14138                    "khr_acceleration_structure", "ext_descriptor_indexing",
14139                );
14140                self.ext_descriptor_indexing = true;
14141            }
14142            if !(api_version >= crate::Version::V1_2 || self.khr_buffer_device_address) {
14143                assert!(
14144                    supported.khr_buffer_device_address,
14145                    "The device extension `{}` is enabled, and it requires \
14146                                        the `{}` extension to be also enabled, but the device \
14147                                        does not support the required extension. \
14148                                        This is a bug in the Vulkan driver for this device.",
14149                    "khr_acceleration_structure", "khr_buffer_device_address",
14150                );
14151                self.khr_buffer_device_address = true;
14152            }
14153            if !(self.khr_deferred_host_operations) {
14154                assert!(
14155                    supported.khr_deferred_host_operations,
14156                    "The device extension `{}` is enabled, and it requires \
14157                                        the `{}` extension to be also enabled, but the device \
14158                                        does not support the required extension. \
14159                                        This is a bug in the Vulkan driver for this device.",
14160                    "khr_acceleration_structure", "khr_deferred_host_operations",
14161                );
14162                self.khr_deferred_host_operations = true;
14163            }
14164        }
14165        if self.khr_buffer_device_address {
14166            if !(api_version >= crate::Version::V1_1 || self.khr_device_group) {
14167                assert!(
14168                    supported.khr_device_group,
14169                    "The device extension `{}` is enabled, and it requires \
14170                                        the `{}` extension to be also enabled, but the device \
14171                                        does not support the required extension. \
14172                                        This is a bug in the Vulkan driver for this device.",
14173                    "khr_buffer_device_address", "khr_device_group",
14174                );
14175                self.khr_device_group = true;
14176            }
14177        }
14178        if self.khr_create_renderpass2 {
14179            if !(api_version >= crate::Version::V1_1 || self.khr_multiview) {
14180                assert!(
14181                    supported.khr_multiview,
14182                    "The device extension `{}` is enabled, and it requires \
14183                                        the `{}` extension to be also enabled, but the device \
14184                                        does not support the required extension. \
14185                                        This is a bug in the Vulkan driver for this device.",
14186                    "khr_create_renderpass2", "khr_multiview",
14187                );
14188                self.khr_multiview = true;
14189            }
14190            if !(api_version >= crate::Version::V1_1 || self.khr_maintenance2) {
14191                assert!(
14192                    supported.khr_maintenance2,
14193                    "The device extension `{}` is enabled, and it requires \
14194                                        the `{}` extension to be also enabled, but the device \
14195                                        does not support the required extension. \
14196                                        This is a bug in the Vulkan driver for this device.",
14197                    "khr_create_renderpass2", "khr_maintenance2",
14198                );
14199                self.khr_maintenance2 = true;
14200            }
14201        }
14202        if self.khr_dedicated_allocation {
14203            if !(api_version >= crate::Version::V1_1 || self.khr_get_memory_requirements2) {
14204                assert!(
14205                    supported.khr_get_memory_requirements2,
14206                    "The device extension `{}` is enabled, and it requires \
14207                                        the `{}` extension to be also enabled, but the device \
14208                                        does not support the required extension. \
14209                                        This is a bug in the Vulkan driver for this device.",
14210                    "khr_dedicated_allocation", "khr_get_memory_requirements2",
14211                );
14212                self.khr_get_memory_requirements2 = true;
14213            }
14214        }
14215        if self.khr_depth_stencil_resolve {
14216            if !(api_version >= crate::Version::V1_2 || self.khr_create_renderpass2) {
14217                assert!(
14218                    supported.khr_create_renderpass2,
14219                    "The device extension `{}` is enabled, and it requires \
14220                                        the `{}` extension to be also enabled, but the device \
14221                                        does not support the required extension. \
14222                                        This is a bug in the Vulkan driver for this device.",
14223                    "khr_depth_stencil_resolve", "khr_create_renderpass2",
14224                );
14225                self.khr_create_renderpass2 = true;
14226            }
14227        }
14228        if self.khr_display_swapchain {
14229            if !(self.khr_swapchain) {
14230                assert!(
14231                    supported.khr_swapchain,
14232                    "The device extension `{}` is enabled, and it requires \
14233                                        the `{}` extension to be also enabled, but the device \
14234                                        does not support the required extension. \
14235                                        This is a bug in the Vulkan driver for this device.",
14236                    "khr_display_swapchain", "khr_swapchain",
14237                );
14238                self.khr_swapchain = true;
14239            }
14240        }
14241        if self.khr_dynamic_rendering {
14242            if !(api_version >= crate::Version::V1_2 || self.khr_depth_stencil_resolve) {
14243                assert!(
14244                    supported.khr_depth_stencil_resolve,
14245                    "The device extension `{}` is enabled, and it requires \
14246                                        the `{}` extension to be also enabled, but the device \
14247                                        does not support the required extension. \
14248                                        This is a bug in the Vulkan driver for this device.",
14249                    "khr_dynamic_rendering", "khr_depth_stencil_resolve",
14250                );
14251                self.khr_depth_stencil_resolve = true;
14252            }
14253        }
14254        if self.khr_dynamic_rendering_local_read {
14255            if !(api_version >= crate::Version::V1_3 || self.khr_dynamic_rendering) {
14256                assert!(
14257                    supported.khr_dynamic_rendering,
14258                    "The device extension `{}` is enabled, and it requires \
14259                                        the `{}` extension to be also enabled, but the device \
14260                                        does not support the required extension. \
14261                                        This is a bug in the Vulkan driver for this device.",
14262                    "khr_dynamic_rendering_local_read", "khr_dynamic_rendering",
14263                );
14264                self.khr_dynamic_rendering = true;
14265            }
14266        }
14267        if self.khr_external_fence_fd {
14268            if !(api_version >= crate::Version::V1_1 || self.khr_external_fence) {
14269                assert!(
14270                    supported.khr_external_fence,
14271                    "The device extension `{}` is enabled, and it requires \
14272                                        the `{}` extension to be also enabled, but the device \
14273                                        does not support the required extension. \
14274                                        This is a bug in the Vulkan driver for this device.",
14275                    "khr_external_fence_fd", "khr_external_fence",
14276                );
14277                self.khr_external_fence = true;
14278            }
14279        }
14280        if self.khr_external_fence_win32 {
14281            if !(api_version >= crate::Version::V1_1 || self.khr_external_fence) {
14282                assert!(
14283                    supported.khr_external_fence,
14284                    "The device extension `{}` is enabled, and it requires \
14285                                        the `{}` extension to be also enabled, but the device \
14286                                        does not support the required extension. \
14287                                        This is a bug in the Vulkan driver for this device.",
14288                    "khr_external_fence_win32", "khr_external_fence",
14289                );
14290                self.khr_external_fence = true;
14291            }
14292        }
14293        if self.khr_external_memory_fd {
14294            if !(api_version >= crate::Version::V1_1 || self.khr_external_memory) {
14295                assert!(
14296                    supported.khr_external_memory,
14297                    "The device extension `{}` is enabled, and it requires \
14298                                        the `{}` extension to be also enabled, but the device \
14299                                        does not support the required extension. \
14300                                        This is a bug in the Vulkan driver for this device.",
14301                    "khr_external_memory_fd", "khr_external_memory",
14302                );
14303                self.khr_external_memory = true;
14304            }
14305        }
14306        if self.khr_external_memory_win32 {
14307            if !(api_version >= crate::Version::V1_1 || self.khr_external_memory) {
14308                assert!(
14309                    supported.khr_external_memory,
14310                    "The device extension `{}` is enabled, and it requires \
14311                                        the `{}` extension to be also enabled, but the device \
14312                                        does not support the required extension. \
14313                                        This is a bug in the Vulkan driver for this device.",
14314                    "khr_external_memory_win32", "khr_external_memory",
14315                );
14316                self.khr_external_memory = true;
14317            }
14318        }
14319        if self.khr_external_semaphore_fd {
14320            if !(api_version >= crate::Version::V1_1 || self.khr_external_semaphore) {
14321                assert!(
14322                    supported.khr_external_semaphore,
14323                    "The device extension `{}` is enabled, and it requires \
14324                                        the `{}` extension to be also enabled, but the device \
14325                                        does not support the required extension. \
14326                                        This is a bug in the Vulkan driver for this device.",
14327                    "khr_external_semaphore_fd", "khr_external_semaphore",
14328                );
14329                self.khr_external_semaphore = true;
14330            }
14331        }
14332        if self.khr_external_semaphore_win32 {
14333            if !(api_version >= crate::Version::V1_1 || self.khr_external_semaphore) {
14334                assert!(
14335                    supported.khr_external_semaphore,
14336                    "The device extension `{}` is enabled, and it requires \
14337                                        the `{}` extension to be also enabled, but the device \
14338                                        does not support the required extension. \
14339                                        This is a bug in the Vulkan driver for this device.",
14340                    "khr_external_semaphore_win32", "khr_external_semaphore",
14341                );
14342                self.khr_external_semaphore = true;
14343            }
14344        }
14345        if self.khr_fragment_shading_rate {
14346            if !(api_version >= crate::Version::V1_2 || self.khr_create_renderpass2) {
14347                assert!(
14348                    supported.khr_create_renderpass2,
14349                    "The device extension `{}` is enabled, and it requires \
14350                                        the `{}` extension to be also enabled, but the device \
14351                                        does not support the required extension. \
14352                                        This is a bug in the Vulkan driver for this device.",
14353                    "khr_fragment_shading_rate", "khr_create_renderpass2",
14354                );
14355                self.khr_create_renderpass2 = true;
14356            }
14357        }
14358        if self.khr_imageless_framebuffer {
14359            if !(api_version >= crate::Version::V1_1 || self.khr_maintenance2) {
14360                assert!(
14361                    supported.khr_maintenance2,
14362                    "The device extension `{}` is enabled, and it requires \
14363                                        the `{}` extension to be also enabled, but the device \
14364                                        does not support the required extension. \
14365                                        This is a bug in the Vulkan driver for this device.",
14366                    "khr_imageless_framebuffer", "khr_maintenance2",
14367                );
14368                self.khr_maintenance2 = true;
14369            }
14370            if !(api_version >= crate::Version::V1_2 || self.khr_image_format_list) {
14371                assert!(
14372                    supported.khr_image_format_list,
14373                    "The device extension `{}` is enabled, and it requires \
14374                                        the `{}` extension to be also enabled, but the device \
14375                                        does not support the required extension. \
14376                                        This is a bug in the Vulkan driver for this device.",
14377                    "khr_imageless_framebuffer", "khr_image_format_list",
14378                );
14379                self.khr_image_format_list = true;
14380            }
14381        }
14382        if self.khr_incremental_present {
14383            if !(self.khr_swapchain) {
14384                assert!(
14385                    supported.khr_swapchain,
14386                    "The device extension `{}` is enabled, and it requires \
14387                                        the `{}` extension to be also enabled, but the device \
14388                                        does not support the required extension. \
14389                                        This is a bug in the Vulkan driver for this device.",
14390                    "khr_incremental_present", "khr_swapchain",
14391                );
14392                self.khr_swapchain = true;
14393            }
14394        }
14395        if self.khr_maintenance5 {
14396            if !(api_version >= crate::Version::V1_3 || self.khr_dynamic_rendering) {
14397                assert!(
14398                    supported.khr_dynamic_rendering,
14399                    "The device extension `{}` is enabled, and it requires \
14400                                        the `{}` extension to be also enabled, but the device \
14401                                        does not support the required extension. \
14402                                        This is a bug in the Vulkan driver for this device.",
14403                    "khr_maintenance5", "khr_dynamic_rendering",
14404                );
14405                self.khr_dynamic_rendering = true;
14406            }
14407        }
14408        if self.khr_present_id {
14409            if !(api_version >= crate::Version::V1_1 || self.khr_swapchain) {
14410                assert!(
14411                    supported.khr_swapchain,
14412                    "The device extension `{}` is enabled, and it requires \
14413                                        the `{}` extension to be also enabled, but the device \
14414                                        does not support the required extension. \
14415                                        This is a bug in the Vulkan driver for this device.",
14416                    "khr_present_id", "khr_swapchain",
14417                );
14418                self.khr_swapchain = true;
14419            }
14420        }
14421        if self.khr_present_wait {
14422            if !(self.khr_swapchain) {
14423                assert!(
14424                    supported.khr_swapchain,
14425                    "The device extension `{}` is enabled, and it requires \
14426                                        the `{}` extension to be also enabled, but the device \
14427                                        does not support the required extension. \
14428                                        This is a bug in the Vulkan driver for this device.",
14429                    "khr_present_wait", "khr_swapchain",
14430                );
14431                self.khr_swapchain = true;
14432            }
14433            if !(self.khr_present_id) {
14434                assert!(
14435                    supported.khr_present_id,
14436                    "The device extension `{}` is enabled, and it requires \
14437                                        the `{}` extension to be also enabled, but the device \
14438                                        does not support the required extension. \
14439                                        This is a bug in the Vulkan driver for this device.",
14440                    "khr_present_wait", "khr_present_id",
14441                );
14442                self.khr_present_id = true;
14443            }
14444        }
14445        if self.khr_ray_query {
14446            if !(api_version >= crate::Version::V1_2 || self.khr_spirv_1_4) {
14447                assert!(
14448                    supported.khr_spirv_1_4,
14449                    "The device extension `{}` is enabled, and it requires \
14450                                        the `{}` extension to be also enabled, but the device \
14451                                        does not support the required extension. \
14452                                        This is a bug in the Vulkan driver for this device.",
14453                    "khr_ray_query", "khr_spirv_1_4",
14454                );
14455                self.khr_spirv_1_4 = true;
14456            }
14457            if !(self.khr_acceleration_structure) {
14458                assert!(
14459                    supported.khr_acceleration_structure,
14460                    "The device extension `{}` is enabled, and it requires \
14461                                        the `{}` extension to be also enabled, but the device \
14462                                        does not support the required extension. \
14463                                        This is a bug in the Vulkan driver for this device.",
14464                    "khr_ray_query", "khr_acceleration_structure",
14465                );
14466                self.khr_acceleration_structure = true;
14467            }
14468        }
14469        if self.khr_ray_tracing_maintenance1 {
14470            if !(self.khr_acceleration_structure) {
14471                assert!(
14472                    supported.khr_acceleration_structure,
14473                    "The device extension `{}` is enabled, and it requires \
14474                                        the `{}` extension to be also enabled, but the device \
14475                                        does not support the required extension. \
14476                                        This is a bug in the Vulkan driver for this device.",
14477                    "khr_ray_tracing_maintenance1", "khr_acceleration_structure",
14478                );
14479                self.khr_acceleration_structure = true;
14480            }
14481        }
14482        if self.khr_ray_tracing_pipeline {
14483            if !(api_version >= crate::Version::V1_2 || self.khr_spirv_1_4) {
14484                assert!(
14485                    supported.khr_spirv_1_4,
14486                    "The device extension `{}` is enabled, and it requires \
14487                                        the `{}` extension to be also enabled, but the device \
14488                                        does not support the required extension. \
14489                                        This is a bug in the Vulkan driver for this device.",
14490                    "khr_ray_tracing_pipeline", "khr_spirv_1_4",
14491                );
14492                self.khr_spirv_1_4 = true;
14493            }
14494            if !(self.khr_acceleration_structure) {
14495                assert!(
14496                    supported.khr_acceleration_structure,
14497                    "The device extension `{}` is enabled, and it requires \
14498                                        the `{}` extension to be also enabled, but the device \
14499                                        does not support the required extension. \
14500                                        This is a bug in the Vulkan driver for this device.",
14501                    "khr_ray_tracing_pipeline", "khr_acceleration_structure",
14502                );
14503                self.khr_acceleration_structure = true;
14504            }
14505        }
14506        if self.khr_ray_tracing_position_fetch {
14507            if !(self.khr_acceleration_structure) {
14508                assert!(
14509                    supported.khr_acceleration_structure,
14510                    "The device extension `{}` is enabled, and it requires \
14511                                        the `{}` extension to be also enabled, but the device \
14512                                        does not support the required extension. \
14513                                        This is a bug in the Vulkan driver for this device.",
14514                    "khr_ray_tracing_position_fetch", "khr_acceleration_structure",
14515                );
14516                self.khr_acceleration_structure = true;
14517            }
14518        }
14519        if self.khr_sampler_ycbcr_conversion {
14520            if !(api_version >= crate::Version::V1_1 || self.khr_maintenance1) {
14521                assert!(
14522                    supported.khr_maintenance1,
14523                    "The device extension `{}` is enabled, and it requires \
14524                                        the `{}` extension to be also enabled, but the device \
14525                                        does not support the required extension. \
14526                                        This is a bug in the Vulkan driver for this device.",
14527                    "khr_sampler_ycbcr_conversion", "khr_maintenance1",
14528                );
14529                self.khr_maintenance1 = true;
14530            }
14531            if !(api_version >= crate::Version::V1_1 || self.khr_bind_memory2) {
14532                assert!(
14533                    supported.khr_bind_memory2,
14534                    "The device extension `{}` is enabled, and it requires \
14535                                        the `{}` extension to be also enabled, but the device \
14536                                        does not support the required extension. \
14537                                        This is a bug in the Vulkan driver for this device.",
14538                    "khr_sampler_ycbcr_conversion", "khr_bind_memory2",
14539                );
14540                self.khr_bind_memory2 = true;
14541            }
14542            if !(api_version >= crate::Version::V1_1 || self.khr_get_memory_requirements2) {
14543                assert!(
14544                    supported.khr_get_memory_requirements2,
14545                    "The device extension `{}` is enabled, and it requires \
14546                                        the `{}` extension to be also enabled, but the device \
14547                                        does not support the required extension. \
14548                                        This is a bug in the Vulkan driver for this device.",
14549                    "khr_sampler_ycbcr_conversion", "khr_get_memory_requirements2",
14550                );
14551                self.khr_get_memory_requirements2 = true;
14552            }
14553        }
14554        if self.khr_separate_depth_stencil_layouts {
14555            if !(api_version >= crate::Version::V1_2 || self.khr_create_renderpass2) {
14556                assert!(
14557                    supported.khr_create_renderpass2,
14558                    "The device extension `{}` is enabled, and it requires \
14559                                        the `{}` extension to be also enabled, but the device \
14560                                        does not support the required extension. \
14561                                        This is a bug in the Vulkan driver for this device.",
14562                    "khr_separate_depth_stencil_layouts", "khr_create_renderpass2",
14563                );
14564                self.khr_create_renderpass2 = true;
14565            }
14566        }
14567        if self.khr_shader_float_controls2 {
14568            if !(api_version >= crate::Version::V1_2 || self.khr_shader_float_controls) {
14569                assert!(
14570                    supported.khr_shader_float_controls,
14571                    "The device extension `{}` is enabled, and it requires \
14572                                        the `{}` extension to be also enabled, but the device \
14573                                        does not support the required extension. \
14574                                        This is a bug in the Vulkan driver for this device.",
14575                    "khr_shader_float_controls2", "khr_shader_float_controls",
14576                );
14577                self.khr_shader_float_controls = true;
14578            }
14579        }
14580        if self.khr_shader_quad_control {
14581            if !(api_version >= crate::Version::V1_2 || self.khr_vulkan_memory_model) {
14582                assert!(
14583                    supported.khr_vulkan_memory_model,
14584                    "The device extension `{}` is enabled, and it requires \
14585                                        the `{}` extension to be also enabled, but the device \
14586                                        does not support the required extension. \
14587                                        This is a bug in the Vulkan driver for this device.",
14588                    "khr_shader_quad_control", "khr_vulkan_memory_model",
14589                );
14590                self.khr_vulkan_memory_model = true;
14591            }
14592            if !(self.khr_shader_maximal_reconvergence) {
14593                assert!(
14594                    supported.khr_shader_maximal_reconvergence,
14595                    "The device extension `{}` is enabled, and it requires \
14596                                        the `{}` extension to be also enabled, but the device \
14597                                        does not support the required extension. \
14598                                        This is a bug in the Vulkan driver for this device.",
14599                    "khr_shader_quad_control", "khr_shader_maximal_reconvergence",
14600                );
14601                self.khr_shader_maximal_reconvergence = true;
14602            }
14603        }
14604        if self.khr_shared_presentable_image {
14605            if !(self.khr_swapchain) {
14606                assert!(
14607                    supported.khr_swapchain,
14608                    "The device extension `{}` is enabled, and it requires \
14609                                        the `{}` extension to be also enabled, but the device \
14610                                        does not support the required extension. \
14611                                        This is a bug in the Vulkan driver for this device.",
14612                    "khr_shared_presentable_image", "khr_swapchain",
14613                );
14614                self.khr_swapchain = true;
14615            }
14616        }
14617        if self.khr_spirv_1_4 {
14618            if !(api_version >= crate::Version::V1_2 || self.khr_shader_float_controls) {
14619                assert!(
14620                    supported.khr_shader_float_controls,
14621                    "The device extension `{}` is enabled, and it requires \
14622                                        the `{}` extension to be also enabled, but the device \
14623                                        does not support the required extension. \
14624                                        This is a bug in the Vulkan driver for this device.",
14625                    "khr_spirv_1_4", "khr_shader_float_controls",
14626                );
14627                self.khr_shader_float_controls = true;
14628            }
14629        }
14630        if self.khr_swapchain_mutable_format {
14631            if !(self.khr_swapchain) {
14632                assert!(
14633                    supported.khr_swapchain,
14634                    "The device extension `{}` is enabled, and it requires \
14635                                        the `{}` extension to be also enabled, but the device \
14636                                        does not support the required extension. \
14637                                        This is a bug in the Vulkan driver for this device.",
14638                    "khr_swapchain_mutable_format", "khr_swapchain",
14639                );
14640                self.khr_swapchain = true;
14641            }
14642            if !(api_version >= crate::Version::V1_1 || self.khr_maintenance2) {
14643                assert!(
14644                    supported.khr_maintenance2,
14645                    "The device extension `{}` is enabled, and it requires \
14646                                        the `{}` extension to be also enabled, but the device \
14647                                        does not support the required extension. \
14648                                        This is a bug in the Vulkan driver for this device.",
14649                    "khr_swapchain_mutable_format", "khr_maintenance2",
14650                );
14651                self.khr_maintenance2 = true;
14652            }
14653            if !(api_version >= crate::Version::V1_2 || self.khr_image_format_list) {
14654                assert!(
14655                    supported.khr_image_format_list,
14656                    "The device extension `{}` is enabled, and it requires \
14657                                        the `{}` extension to be also enabled, but the device \
14658                                        does not support the required extension. \
14659                                        This is a bug in the Vulkan driver for this device.",
14660                    "khr_swapchain_mutable_format", "khr_image_format_list",
14661                );
14662                self.khr_image_format_list = true;
14663            }
14664        }
14665        if self.khr_variable_pointers {
14666            if !(api_version >= crate::Version::V1_1 || self.khr_storage_buffer_storage_class) {
14667                assert!(
14668                    supported.khr_storage_buffer_storage_class,
14669                    "The device extension `{}` is enabled, and it requires \
14670                                        the `{}` extension to be also enabled, but the device \
14671                                        does not support the required extension. \
14672                                        This is a bug in the Vulkan driver for this device.",
14673                    "khr_variable_pointers", "khr_storage_buffer_storage_class",
14674                );
14675                self.khr_storage_buffer_storage_class = true;
14676            }
14677        }
14678        if self.khr_video_decode_av1 {
14679            if !(self.khr_video_decode_queue) {
14680                assert!(
14681                    supported.khr_video_decode_queue,
14682                    "The device extension `{}` is enabled, and it requires \
14683                                        the `{}` extension to be also enabled, but the device \
14684                                        does not support the required extension. \
14685                                        This is a bug in the Vulkan driver for this device.",
14686                    "khr_video_decode_av1", "khr_video_decode_queue",
14687                );
14688                self.khr_video_decode_queue = true;
14689            }
14690        }
14691        if self.khr_video_decode_h264 {
14692            if !(self.khr_video_decode_queue) {
14693                assert!(
14694                    supported.khr_video_decode_queue,
14695                    "The device extension `{}` is enabled, and it requires \
14696                                        the `{}` extension to be also enabled, but the device \
14697                                        does not support the required extension. \
14698                                        This is a bug in the Vulkan driver for this device.",
14699                    "khr_video_decode_h264", "khr_video_decode_queue",
14700                );
14701                self.khr_video_decode_queue = true;
14702            }
14703        }
14704        if self.khr_video_decode_h265 {
14705            if !(self.khr_video_decode_queue) {
14706                assert!(
14707                    supported.khr_video_decode_queue,
14708                    "The device extension `{}` is enabled, and it requires \
14709                                        the `{}` extension to be also enabled, but the device \
14710                                        does not support the required extension. \
14711                                        This is a bug in the Vulkan driver for this device.",
14712                    "khr_video_decode_h265", "khr_video_decode_queue",
14713                );
14714                self.khr_video_decode_queue = true;
14715            }
14716        }
14717        if self.khr_video_decode_queue {
14718            if !(self.khr_video_queue) {
14719                assert!(
14720                    supported.khr_video_queue,
14721                    "The device extension `{}` is enabled, and it requires \
14722                                        the `{}` extension to be also enabled, but the device \
14723                                        does not support the required extension. \
14724                                        This is a bug in the Vulkan driver for this device.",
14725                    "khr_video_decode_queue", "khr_video_queue",
14726                );
14727                self.khr_video_queue = true;
14728            }
14729            if !(api_version >= crate::Version::V1_3 || self.khr_synchronization2) {
14730                assert!(
14731                    supported.khr_synchronization2,
14732                    "The device extension `{}` is enabled, and it requires \
14733                                        the `{}` extension to be also enabled, but the device \
14734                                        does not support the required extension. \
14735                                        This is a bug in the Vulkan driver for this device.",
14736                    "khr_video_decode_queue", "khr_synchronization2",
14737                );
14738                self.khr_synchronization2 = true;
14739            }
14740        }
14741        if self.khr_video_encode_h264 {
14742            if !(self.khr_video_encode_queue) {
14743                assert!(
14744                    supported.khr_video_encode_queue,
14745                    "The device extension `{}` is enabled, and it requires \
14746                                        the `{}` extension to be also enabled, but the device \
14747                                        does not support the required extension. \
14748                                        This is a bug in the Vulkan driver for this device.",
14749                    "khr_video_encode_h264", "khr_video_encode_queue",
14750                );
14751                self.khr_video_encode_queue = true;
14752            }
14753        }
14754        if self.khr_video_encode_h265 {
14755            if !(self.khr_video_encode_queue) {
14756                assert!(
14757                    supported.khr_video_encode_queue,
14758                    "The device extension `{}` is enabled, and it requires \
14759                                        the `{}` extension to be also enabled, but the device \
14760                                        does not support the required extension. \
14761                                        This is a bug in the Vulkan driver for this device.",
14762                    "khr_video_encode_h265", "khr_video_encode_queue",
14763                );
14764                self.khr_video_encode_queue = true;
14765            }
14766        }
14767        if self.khr_video_encode_queue {
14768            if !(self.khr_video_queue) {
14769                assert!(
14770                    supported.khr_video_queue,
14771                    "The device extension `{}` is enabled, and it requires \
14772                                        the `{}` extension to be also enabled, but the device \
14773                                        does not support the required extension. \
14774                                        This is a bug in the Vulkan driver for this device.",
14775                    "khr_video_encode_queue", "khr_video_queue",
14776                );
14777                self.khr_video_queue = true;
14778            }
14779            if !(api_version >= crate::Version::V1_3 || self.khr_synchronization2) {
14780                assert!(
14781                    supported.khr_synchronization2,
14782                    "The device extension `{}` is enabled, and it requires \
14783                                        the `{}` extension to be also enabled, but the device \
14784                                        does not support the required extension. \
14785                                        This is a bug in the Vulkan driver for this device.",
14786                    "khr_video_encode_queue", "khr_synchronization2",
14787                );
14788                self.khr_synchronization2 = true;
14789            }
14790        }
14791        if self.khr_video_maintenance1 {
14792            if !(self.khr_video_queue) {
14793                assert!(
14794                    supported.khr_video_queue,
14795                    "The device extension `{}` is enabled, and it requires \
14796                                        the `{}` extension to be also enabled, but the device \
14797                                        does not support the required extension. \
14798                                        This is a bug in the Vulkan driver for this device.",
14799                    "khr_video_maintenance1", "khr_video_queue",
14800                );
14801                self.khr_video_queue = true;
14802            }
14803        }
14804        if self.khr_video_queue {
14805            if !(api_version >= crate::Version::V1_3 || self.khr_synchronization2) {
14806                assert!(
14807                    supported.khr_synchronization2,
14808                    "The device extension `{}` is enabled, and it requires \
14809                                        the `{}` extension to be also enabled, but the device \
14810                                        does not support the required extension. \
14811                                        This is a bug in the Vulkan driver for this device.",
14812                    "khr_video_queue", "khr_synchronization2",
14813                );
14814                self.khr_synchronization2 = true;
14815            }
14816        }
14817        if self.khr_win32_keyed_mutex {
14818            if !(self.khr_external_memory_win32) {
14819                assert!(
14820                    supported.khr_external_memory_win32,
14821                    "The device extension `{}` is enabled, and it requires \
14822                                        the `{}` extension to be also enabled, but the device \
14823                                        does not support the required extension. \
14824                                        This is a bug in the Vulkan driver for this device.",
14825                    "khr_win32_keyed_mutex", "khr_external_memory_win32",
14826                );
14827                self.khr_external_memory_win32 = true;
14828            }
14829        }
14830        if self.ext_attachment_feedback_loop_dynamic_state {
14831            if !(self.ext_attachment_feedback_loop_layout) {
14832                assert!(
14833                    supported.ext_attachment_feedback_loop_layout,
14834                    "The device extension `{}` is enabled, and it requires \
14835                                        the `{}` extension to be also enabled, but the device \
14836                                        does not support the required extension. \
14837                                        This is a bug in the Vulkan driver for this device.",
14838                    "ext_attachment_feedback_loop_dynamic_state",
14839                    "ext_attachment_feedback_loop_layout",
14840                );
14841                self.ext_attachment_feedback_loop_layout = true;
14842            }
14843        }
14844        if self.ext_border_color_swizzle {
14845            if !(self.ext_custom_border_color) {
14846                assert!(
14847                    supported.ext_custom_border_color,
14848                    "The device extension `{}` is enabled, and it requires \
14849                                        the `{}` extension to be also enabled, but the device \
14850                                        does not support the required extension. \
14851                                        This is a bug in the Vulkan driver for this device.",
14852                    "ext_border_color_swizzle", "ext_custom_border_color",
14853                );
14854                self.ext_custom_border_color = true;
14855            }
14856        }
14857        if self.ext_descriptor_buffer {
14858            if !(api_version >= crate::Version::V1_2 || self.khr_buffer_device_address) {
14859                assert!(
14860                    supported.khr_buffer_device_address,
14861                    "The device extension `{}` is enabled, and it requires \
14862                                        the `{}` extension to be also enabled, but the device \
14863                                        does not support the required extension. \
14864                                        This is a bug in the Vulkan driver for this device.",
14865                    "ext_descriptor_buffer", "khr_buffer_device_address",
14866                );
14867                self.khr_buffer_device_address = true;
14868            }
14869            if !(api_version >= crate::Version::V1_2 || self.ext_descriptor_indexing) {
14870                assert!(
14871                    supported.ext_descriptor_indexing,
14872                    "The device extension `{}` is enabled, and it requires \
14873                                        the `{}` extension to be also enabled, but the device \
14874                                        does not support the required extension. \
14875                                        This is a bug in the Vulkan driver for this device.",
14876                    "ext_descriptor_buffer", "ext_descriptor_indexing",
14877                );
14878                self.ext_descriptor_indexing = true;
14879            }
14880            if !(api_version >= crate::Version::V1_3 || self.khr_synchronization2) {
14881                assert!(
14882                    supported.khr_synchronization2,
14883                    "The device extension `{}` is enabled, and it requires \
14884                                        the `{}` extension to be also enabled, but the device \
14885                                        does not support the required extension. \
14886                                        This is a bug in the Vulkan driver for this device.",
14887                    "ext_descriptor_buffer", "khr_synchronization2",
14888                );
14889                self.khr_synchronization2 = true;
14890            }
14891        }
14892        if self.ext_descriptor_indexing {
14893            if !(api_version >= crate::Version::V1_1 || self.khr_maintenance3) {
14894                assert!(
14895                    supported.khr_maintenance3,
14896                    "The device extension `{}` is enabled, and it requires \
14897                                        the `{}` extension to be also enabled, but the device \
14898                                        does not support the required extension. \
14899                                        This is a bug in the Vulkan driver for this device.",
14900                    "ext_descriptor_indexing", "khr_maintenance3",
14901                );
14902                self.khr_maintenance3 = true;
14903            }
14904        }
14905        if self.ext_display_control {
14906            if !(self.khr_swapchain) {
14907                assert!(
14908                    supported.khr_swapchain,
14909                    "The device extension `{}` is enabled, and it requires \
14910                                        the `{}` extension to be also enabled, but the device \
14911                                        does not support the required extension. \
14912                                        This is a bug in the Vulkan driver for this device.",
14913                    "ext_display_control", "khr_swapchain",
14914                );
14915                self.khr_swapchain = true;
14916            }
14917        }
14918        if self.ext_dynamic_rendering_unused_attachments {
14919            if !(api_version >= crate::Version::V1_3 || self.khr_dynamic_rendering) {
14920                assert!(
14921                    supported.khr_dynamic_rendering,
14922                    "The device extension `{}` is enabled, and it requires \
14923                                        the `{}` extension to be also enabled, but the device \
14924                                        does not support the required extension. \
14925                                        This is a bug in the Vulkan driver for this device.",
14926                    "ext_dynamic_rendering_unused_attachments", "khr_dynamic_rendering",
14927                );
14928                self.khr_dynamic_rendering = true;
14929            }
14930        }
14931        if self.ext_external_memory_acquire_unmodified {
14932            if !(api_version >= crate::Version::V1_1 || self.khr_external_memory) {
14933                assert!(
14934                    supported.khr_external_memory,
14935                    "The device extension `{}` is enabled, and it requires \
14936                                        the `{}` extension to be also enabled, but the device \
14937                                        does not support the required extension. \
14938                                        This is a bug in the Vulkan driver for this device.",
14939                    "ext_external_memory_acquire_unmodified", "khr_external_memory",
14940                );
14941                self.khr_external_memory = true;
14942            }
14943        }
14944        if self.ext_external_memory_dma_buf {
14945            if !(self.khr_external_memory_fd) {
14946                assert!(
14947                    supported.khr_external_memory_fd,
14948                    "The device extension `{}` is enabled, and it requires \
14949                                        the `{}` extension to be also enabled, but the device \
14950                                        does not support the required extension. \
14951                                        This is a bug in the Vulkan driver for this device.",
14952                    "ext_external_memory_dma_buf", "khr_external_memory_fd",
14953                );
14954                self.khr_external_memory_fd = true;
14955            }
14956        }
14957        if self.ext_external_memory_host {
14958            if !(api_version >= crate::Version::V1_1 || self.khr_external_memory) {
14959                assert!(
14960                    supported.khr_external_memory,
14961                    "The device extension `{}` is enabled, and it requires \
14962                                        the `{}` extension to be also enabled, but the device \
14963                                        does not support the required extension. \
14964                                        This is a bug in the Vulkan driver for this device.",
14965                    "ext_external_memory_host", "khr_external_memory",
14966                );
14967                self.khr_external_memory = true;
14968            }
14969        }
14970        if self.ext_fragment_density_map2 {
14971            if !(self.ext_fragment_density_map) {
14972                assert!(
14973                    supported.ext_fragment_density_map,
14974                    "The device extension `{}` is enabled, and it requires \
14975                                        the `{}` extension to be also enabled, but the device \
14976                                        does not support the required extension. \
14977                                        This is a bug in the Vulkan driver for this device.",
14978                    "ext_fragment_density_map2", "ext_fragment_density_map",
14979                );
14980                self.ext_fragment_density_map = true;
14981            }
14982        }
14983        if self.ext_full_screen_exclusive {
14984            if !(self.khr_swapchain) {
14985                assert!(
14986                    supported.khr_swapchain,
14987                    "The device extension `{}` is enabled, and it requires \
14988                                        the `{}` extension to be also enabled, but the device \
14989                                        does not support the required extension. \
14990                                        This is a bug in the Vulkan driver for this device.",
14991                    "ext_full_screen_exclusive", "khr_swapchain",
14992                );
14993                self.khr_swapchain = true;
14994            }
14995        }
14996        if self.ext_global_priority_query {
14997            if !(self.khr_global_priority || self.ext_global_priority) {
14998                if supported.khr_global_priority {
14999                    self.khr_global_priority = true;
15000                } else {
15001                    assert!(
15002                        supported.ext_global_priority,
15003                        "The device extension `{}` is enabled, and it requires \
15004                                        the `{}` extension to be also enabled, but the device \
15005                                        does not support the required extension. \
15006                                        This is a bug in the Vulkan driver for this device.",
15007                        "ext_global_priority_query", "ext_global_priority",
15008                    );
15009                    self.ext_global_priority = true;
15010                }
15011            }
15012        }
15013        if self.ext_graphics_pipeline_library {
15014            if !(self.khr_pipeline_library) {
15015                assert!(
15016                    supported.khr_pipeline_library,
15017                    "The device extension `{}` is enabled, and it requires \
15018                                        the `{}` extension to be also enabled, but the device \
15019                                        does not support the required extension. \
15020                                        This is a bug in the Vulkan driver for this device.",
15021                    "ext_graphics_pipeline_library", "khr_pipeline_library",
15022                );
15023                self.khr_pipeline_library = true;
15024            }
15025        }
15026        if self.ext_hdr_metadata {
15027            if !(self.khr_swapchain) {
15028                assert!(
15029                    supported.khr_swapchain,
15030                    "The device extension `{}` is enabled, and it requires \
15031                                        the `{}` extension to be also enabled, but the device \
15032                                        does not support the required extension. \
15033                                        This is a bug in the Vulkan driver for this device.",
15034                    "ext_hdr_metadata", "khr_swapchain",
15035                );
15036                self.khr_swapchain = true;
15037            }
15038        }
15039        if self.ext_host_image_copy {
15040            if !(api_version >= crate::Version::V1_3 || self.khr_copy_commands2) {
15041                assert!(
15042                    supported.khr_copy_commands2,
15043                    "The device extension `{}` is enabled, and it requires \
15044                                        the `{}` extension to be also enabled, but the device \
15045                                        does not support the required extension. \
15046                                        This is a bug in the Vulkan driver for this device.",
15047                    "ext_host_image_copy", "khr_copy_commands2",
15048                );
15049                self.khr_copy_commands2 = true;
15050            }
15051            if !(api_version >= crate::Version::V1_3 || self.khr_format_feature_flags2) {
15052                assert!(
15053                    supported.khr_format_feature_flags2,
15054                    "The device extension `{}` is enabled, and it requires \
15055                                        the `{}` extension to be also enabled, but the device \
15056                                        does not support the required extension. \
15057                                        This is a bug in the Vulkan driver for this device.",
15058                    "ext_host_image_copy", "khr_format_feature_flags2",
15059                );
15060                self.khr_format_feature_flags2 = true;
15061            }
15062        }
15063        if self.ext_image_2d_view_of_3d {
15064            if !(api_version >= crate::Version::V1_1 || self.khr_maintenance1) {
15065                assert!(
15066                    supported.khr_maintenance1,
15067                    "The device extension `{}` is enabled, and it requires \
15068                                        the `{}` extension to be also enabled, but the device \
15069                                        does not support the required extension. \
15070                                        This is a bug in the Vulkan driver for this device.",
15071                    "ext_image_2d_view_of_3d", "khr_maintenance1",
15072                );
15073                self.khr_maintenance1 = true;
15074            }
15075        }
15076        if self.ext_image_compression_control_swapchain {
15077            if !(self.ext_image_compression_control) {
15078                assert!(
15079                    supported.ext_image_compression_control,
15080                    "The device extension `{}` is enabled, and it requires \
15081                                        the `{}` extension to be also enabled, but the device \
15082                                        does not support the required extension. \
15083                                        This is a bug in the Vulkan driver for this device.",
15084                    "ext_image_compression_control_swapchain", "ext_image_compression_control",
15085                );
15086                self.ext_image_compression_control = true;
15087            }
15088        }
15089        if self.ext_image_drm_format_modifier {
15090            if !(api_version >= crate::Version::V1_1 || self.khr_bind_memory2) {
15091                assert!(
15092                    supported.khr_bind_memory2,
15093                    "The device extension `{}` is enabled, and it requires \
15094                                        the `{}` extension to be also enabled, but the device \
15095                                        does not support the required extension. \
15096                                        This is a bug in the Vulkan driver for this device.",
15097                    "ext_image_drm_format_modifier", "khr_bind_memory2",
15098                );
15099                self.khr_bind_memory2 = true;
15100            }
15101            if !(api_version >= crate::Version::V1_1 || self.khr_sampler_ycbcr_conversion) {
15102                assert!(
15103                    supported.khr_sampler_ycbcr_conversion,
15104                    "The device extension `{}` is enabled, and it requires \
15105                                        the `{}` extension to be also enabled, but the device \
15106                                        does not support the required extension. \
15107                                        This is a bug in the Vulkan driver for this device.",
15108                    "ext_image_drm_format_modifier", "khr_sampler_ycbcr_conversion",
15109                );
15110                self.khr_sampler_ycbcr_conversion = true;
15111            }
15112            if !(api_version >= crate::Version::V1_2 || self.khr_image_format_list) {
15113                assert!(
15114                    supported.khr_image_format_list,
15115                    "The device extension `{}` is enabled, and it requires \
15116                                        the `{}` extension to be also enabled, but the device \
15117                                        does not support the required extension. \
15118                                        This is a bug in the Vulkan driver for this device.",
15119                    "ext_image_drm_format_modifier", "khr_image_format_list",
15120                );
15121                self.khr_image_format_list = true;
15122            }
15123        }
15124        if self.ext_image_sliced_view_of_3d {
15125            if !(api_version >= crate::Version::V1_1 || self.khr_maintenance1) {
15126                assert!(
15127                    supported.khr_maintenance1,
15128                    "The device extension `{}` is enabled, and it requires \
15129                                        the `{}` extension to be also enabled, but the device \
15130                                        does not support the required extension. \
15131                                        This is a bug in the Vulkan driver for this device.",
15132                    "ext_image_sliced_view_of_3d", "khr_maintenance1",
15133                );
15134                self.khr_maintenance1 = true;
15135            }
15136        }
15137        if self.ext_inline_uniform_block {
15138            if !(api_version >= crate::Version::V1_1 || self.khr_maintenance1) {
15139                assert!(
15140                    supported.khr_maintenance1,
15141                    "The device extension `{}` is enabled, and it requires \
15142                                        the `{}` extension to be also enabled, but the device \
15143                                        does not support the required extension. \
15144                                        This is a bug in the Vulkan driver for this device.",
15145                    "ext_inline_uniform_block", "khr_maintenance1",
15146                );
15147                self.khr_maintenance1 = true;
15148            }
15149        }
15150        if self.ext_map_memory_placed {
15151            if !(self.khr_map_memory2) {
15152                assert!(
15153                    supported.khr_map_memory2,
15154                    "The device extension `{}` is enabled, and it requires \
15155                                        the `{}` extension to be also enabled, but the device \
15156                                        does not support the required extension. \
15157                                        This is a bug in the Vulkan driver for this device.",
15158                    "ext_map_memory_placed", "khr_map_memory2",
15159                );
15160                self.khr_map_memory2 = true;
15161            }
15162        }
15163        if self.ext_mesh_shader {
15164            if !(api_version >= crate::Version::V1_2 || self.khr_spirv_1_4) {
15165                assert!(
15166                    supported.khr_spirv_1_4,
15167                    "The device extension `{}` is enabled, and it requires \
15168                                        the `{}` extension to be also enabled, but the device \
15169                                        does not support the required extension. \
15170                                        This is a bug in the Vulkan driver for this device.",
15171                    "ext_mesh_shader", "khr_spirv_1_4",
15172                );
15173                self.khr_spirv_1_4 = true;
15174            }
15175        }
15176        if self.ext_multisampled_render_to_single_sampled {
15177            if !(api_version >= crate::Version::V1_2 || self.khr_create_renderpass2) {
15178                assert!(
15179                    supported.khr_create_renderpass2,
15180                    "The device extension `{}` is enabled, and it requires \
15181                                        the `{}` extension to be also enabled, but the device \
15182                                        does not support the required extension. \
15183                                        This is a bug in the Vulkan driver for this device.",
15184                    "ext_multisampled_render_to_single_sampled", "khr_create_renderpass2",
15185                );
15186                self.khr_create_renderpass2 = true;
15187            }
15188            if !(api_version >= crate::Version::V1_2 || self.khr_depth_stencil_resolve) {
15189                assert!(
15190                    supported.khr_depth_stencil_resolve,
15191                    "The device extension `{}` is enabled, and it requires \
15192                                        the `{}` extension to be also enabled, but the device \
15193                                        does not support the required extension. \
15194                                        This is a bug in the Vulkan driver for this device.",
15195                    "ext_multisampled_render_to_single_sampled", "khr_depth_stencil_resolve",
15196                );
15197                self.khr_depth_stencil_resolve = true;
15198            }
15199        }
15200        if self.ext_mutable_descriptor_type {
15201            if !(api_version >= crate::Version::V1_1 || self.khr_maintenance3) {
15202                assert!(
15203                    supported.khr_maintenance3,
15204                    "The device extension `{}` is enabled, and it requires \
15205                                        the `{}` extension to be also enabled, but the device \
15206                                        does not support the required extension. \
15207                                        This is a bug in the Vulkan driver for this device.",
15208                    "ext_mutable_descriptor_type", "khr_maintenance3",
15209                );
15210                self.khr_maintenance3 = true;
15211            }
15212        }
15213        if self.ext_opacity_micromap {
15214            if !(self.khr_acceleration_structure) {
15215                assert!(
15216                    supported.khr_acceleration_structure,
15217                    "The device extension `{}` is enabled, and it requires \
15218                                        the `{}` extension to be also enabled, but the device \
15219                                        does not support the required extension. \
15220                                        This is a bug in the Vulkan driver for this device.",
15221                    "ext_opacity_micromap", "khr_acceleration_structure",
15222                );
15223                self.khr_acceleration_structure = true;
15224            }
15225            if !(api_version >= crate::Version::V1_3 || self.khr_synchronization2) {
15226                assert!(
15227                    supported.khr_synchronization2,
15228                    "The device extension `{}` is enabled, and it requires \
15229                                        the `{}` extension to be also enabled, but the device \
15230                                        does not support the required extension. \
15231                                        This is a bug in the Vulkan driver for this device.",
15232                    "ext_opacity_micromap", "khr_synchronization2",
15233                );
15234                self.khr_synchronization2 = true;
15235            }
15236        }
15237        if self.ext_pageable_device_local_memory {
15238            if !(self.ext_memory_priority) {
15239                assert!(
15240                    supported.ext_memory_priority,
15241                    "The device extension `{}` is enabled, and it requires \
15242                                        the `{}` extension to be also enabled, but the device \
15243                                        does not support the required extension. \
15244                                        This is a bug in the Vulkan driver for this device.",
15245                    "ext_pageable_device_local_memory", "ext_memory_priority",
15246                );
15247                self.ext_memory_priority = true;
15248            }
15249        }
15250        if self.ext_pipeline_library_group_handles {
15251            if !(self.khr_ray_tracing_pipeline) {
15252                assert!(
15253                    supported.khr_ray_tracing_pipeline,
15254                    "The device extension `{}` is enabled, and it requires \
15255                                        the `{}` extension to be also enabled, but the device \
15256                                        does not support the required extension. \
15257                                        This is a bug in the Vulkan driver for this device.",
15258                    "ext_pipeline_library_group_handles", "khr_ray_tracing_pipeline",
15259                );
15260                self.khr_ray_tracing_pipeline = true;
15261            }
15262            if !(self.khr_pipeline_library) {
15263                assert!(
15264                    supported.khr_pipeline_library,
15265                    "The device extension `{}` is enabled, and it requires \
15266                                        the `{}` extension to be also enabled, but the device \
15267                                        does not support the required extension. \
15268                                        This is a bug in the Vulkan driver for this device.",
15269                    "ext_pipeline_library_group_handles", "khr_pipeline_library",
15270                );
15271                self.khr_pipeline_library = true;
15272            }
15273        }
15274        if self.ext_primitives_generated_query {
15275            if !(self.ext_transform_feedback) {
15276                assert!(
15277                    supported.ext_transform_feedback,
15278                    "The device extension `{}` is enabled, and it requires \
15279                                        the `{}` extension to be also enabled, but the device \
15280                                        does not support the required extension. \
15281                                        This is a bug in the Vulkan driver for this device.",
15282                    "ext_primitives_generated_query", "ext_transform_feedback",
15283                );
15284                self.ext_transform_feedback = true;
15285            }
15286        }
15287        if self.ext_queue_family_foreign {
15288            if !(api_version >= crate::Version::V1_1 || self.khr_external_memory) {
15289                assert!(
15290                    supported.khr_external_memory,
15291                    "The device extension `{}` is enabled, and it requires \
15292                                        the `{}` extension to be also enabled, but the device \
15293                                        does not support the required extension. \
15294                                        This is a bug in the Vulkan driver for this device.",
15295                    "ext_queue_family_foreign", "khr_external_memory",
15296                );
15297                self.khr_external_memory = true;
15298            }
15299        }
15300        if self.ext_rgba10x6_formats {
15301            if !(api_version >= crate::Version::V1_1 || self.khr_sampler_ycbcr_conversion) {
15302                assert!(
15303                    supported.khr_sampler_ycbcr_conversion,
15304                    "The device extension `{}` is enabled, and it requires \
15305                                        the `{}` extension to be also enabled, but the device \
15306                                        does not support the required extension. \
15307                                        This is a bug in the Vulkan driver for this device.",
15308                    "ext_rgba10x6_formats", "khr_sampler_ycbcr_conversion",
15309                );
15310                self.khr_sampler_ycbcr_conversion = true;
15311            }
15312        }
15313        if self.ext_shader_atomic_float2 {
15314            if !(self.ext_shader_atomic_float) {
15315                assert!(
15316                    supported.ext_shader_atomic_float,
15317                    "The device extension `{}` is enabled, and it requires \
15318                                        the `{}` extension to be also enabled, but the device \
15319                                        does not support the required extension. \
15320                                        This is a bug in the Vulkan driver for this device.",
15321                    "ext_shader_atomic_float2", "ext_shader_atomic_float",
15322                );
15323                self.ext_shader_atomic_float = true;
15324            }
15325        }
15326        if self.ext_shader_module_identifier {
15327            if !(api_version >= crate::Version::V1_3 || self.ext_pipeline_creation_cache_control) {
15328                assert!(
15329                    supported.ext_pipeline_creation_cache_control,
15330                    "The device extension `{}` is enabled, and it requires \
15331                                        the `{}` extension to be also enabled, but the device \
15332                                        does not support the required extension. \
15333                                        This is a bug in the Vulkan driver for this device.",
15334                    "ext_shader_module_identifier", "ext_pipeline_creation_cache_control",
15335                );
15336                self.ext_pipeline_creation_cache_control = true;
15337            }
15338        }
15339        if self.ext_shader_object {
15340            if !(api_version >= crate::Version::V1_3 || self.khr_dynamic_rendering) {
15341                assert!(
15342                    supported.khr_dynamic_rendering,
15343                    "The device extension `{}` is enabled, and it requires \
15344                                        the `{}` extension to be also enabled, but the device \
15345                                        does not support the required extension. \
15346                                        This is a bug in the Vulkan driver for this device.",
15347                    "ext_shader_object", "khr_dynamic_rendering",
15348                );
15349                self.khr_dynamic_rendering = true;
15350            }
15351        }
15352        if self.ext_swapchain_maintenance1 {
15353            if !(self.khr_swapchain) {
15354                assert!(
15355                    supported.khr_swapchain,
15356                    "The device extension `{}` is enabled, and it requires \
15357                                        the `{}` extension to be also enabled, but the device \
15358                                        does not support the required extension. \
15359                                        This is a bug in the Vulkan driver for this device.",
15360                    "ext_swapchain_maintenance1", "khr_swapchain",
15361                );
15362                self.khr_swapchain = true;
15363            }
15364        }
15365        if self.ext_ycbcr_2plane_444_formats {
15366            if !(api_version >= crate::Version::V1_1 || self.khr_sampler_ycbcr_conversion) {
15367                assert!(
15368                    supported.khr_sampler_ycbcr_conversion,
15369                    "The device extension `{}` is enabled, and it requires \
15370                                        the `{}` extension to be also enabled, but the device \
15371                                        does not support the required extension. \
15372                                        This is a bug in the Vulkan driver for this device.",
15373                    "ext_ycbcr_2plane_444_formats", "khr_sampler_ycbcr_conversion",
15374                );
15375                self.khr_sampler_ycbcr_conversion = true;
15376            }
15377        }
15378        if self.ext_ycbcr_image_arrays {
15379            if !(api_version >= crate::Version::V1_1 || self.khr_sampler_ycbcr_conversion) {
15380                assert!(
15381                    supported.khr_sampler_ycbcr_conversion,
15382                    "The device extension `{}` is enabled, and it requires \
15383                                        the `{}` extension to be also enabled, but the device \
15384                                        does not support the required extension. \
15385                                        This is a bug in the Vulkan driver for this device.",
15386                    "ext_ycbcr_image_arrays", "khr_sampler_ycbcr_conversion",
15387                );
15388                self.khr_sampler_ycbcr_conversion = true;
15389            }
15390        }
15391        if self.amdx_shader_enqueue {
15392            if !(api_version >= crate::Version::V1_3 || self.khr_synchronization2) {
15393                assert!(
15394                    supported.khr_synchronization2,
15395                    "The device extension `{}` is enabled, and it requires \
15396                                        the `{}` extension to be also enabled, but the device \
15397                                        does not support the required extension. \
15398                                        This is a bug in the Vulkan driver for this device.",
15399                    "amdx_shader_enqueue", "khr_synchronization2",
15400                );
15401                self.khr_synchronization2 = true;
15402            }
15403            if !(self.khr_pipeline_library) {
15404                assert!(
15405                    supported.khr_pipeline_library,
15406                    "The device extension `{}` is enabled, and it requires \
15407                                        the `{}` extension to be also enabled, but the device \
15408                                        does not support the required extension. \
15409                                        This is a bug in the Vulkan driver for this device.",
15410                    "amdx_shader_enqueue", "khr_pipeline_library",
15411                );
15412                self.khr_pipeline_library = true;
15413            }
15414            if !(api_version >= crate::Version::V1_2 || self.khr_spirv_1_4) {
15415                assert!(
15416                    supported.khr_spirv_1_4,
15417                    "The device extension `{}` is enabled, and it requires \
15418                                        the `{}` extension to be also enabled, but the device \
15419                                        does not support the required extension. \
15420                                        This is a bug in the Vulkan driver for this device.",
15421                    "amdx_shader_enqueue", "khr_spirv_1_4",
15422                );
15423                self.khr_spirv_1_4 = true;
15424            }
15425        }
15426        if self.amd_display_native_hdr {
15427            if !(self.khr_swapchain) {
15428                assert!(
15429                    supported.khr_swapchain,
15430                    "The device extension `{}` is enabled, and it requires \
15431                                        the `{}` extension to be also enabled, but the device \
15432                                        does not support the required extension. \
15433                                        This is a bug in the Vulkan driver for this device.",
15434                    "amd_display_native_hdr", "khr_swapchain",
15435                );
15436                self.khr_swapchain = true;
15437            }
15438        }
15439        if self.amd_shader_core_properties2 {
15440            if !(self.amd_shader_core_properties) {
15441                assert!(
15442                    supported.amd_shader_core_properties,
15443                    "The device extension `{}` is enabled, and it requires \
15444                                        the `{}` extension to be also enabled, but the device \
15445                                        does not support the required extension. \
15446                                        This is a bug in the Vulkan driver for this device.",
15447                    "amd_shader_core_properties2", "amd_shader_core_properties",
15448                );
15449                self.amd_shader_core_properties = true;
15450            }
15451        }
15452        if self.android_external_format_resolve {
15453            if !(self.android_external_memory_android_hardware_buffer) {
15454                assert!(
15455                    supported.android_external_memory_android_hardware_buffer,
15456                    "The device extension `{}` is enabled, and it requires \
15457                                        the `{}` extension to be also enabled, but the device \
15458                                        does not support the required extension. \
15459                                        This is a bug in the Vulkan driver for this device.",
15460                    "android_external_format_resolve",
15461                    "android_external_memory_android_hardware_buffer",
15462                );
15463                self.android_external_memory_android_hardware_buffer = true;
15464            }
15465        }
15466        if self.android_external_memory_android_hardware_buffer {
15467            if !(api_version >= crate::Version::V1_1 || self.khr_sampler_ycbcr_conversion) {
15468                assert!(
15469                    supported.khr_sampler_ycbcr_conversion,
15470                    "The device extension `{}` is enabled, and it requires \
15471                                        the `{}` extension to be also enabled, but the device \
15472                                        does not support the required extension. \
15473                                        This is a bug in the Vulkan driver for this device.",
15474                    "android_external_memory_android_hardware_buffer",
15475                    "khr_sampler_ycbcr_conversion",
15476                );
15477                self.khr_sampler_ycbcr_conversion = true;
15478            }
15479            if !(api_version >= crate::Version::V1_1 || self.khr_external_memory) {
15480                assert!(
15481                    supported.khr_external_memory,
15482                    "The device extension `{}` is enabled, and it requires \
15483                                        the `{}` extension to be also enabled, but the device \
15484                                        does not support the required extension. \
15485                                        This is a bug in the Vulkan driver for this device.",
15486                    "android_external_memory_android_hardware_buffer", "khr_external_memory",
15487                );
15488                self.khr_external_memory = true;
15489            }
15490            if !(api_version >= crate::Version::V1_1 || self.khr_dedicated_allocation) {
15491                assert!(
15492                    supported.khr_dedicated_allocation,
15493                    "The device extension `{}` is enabled, and it requires \
15494                                        the `{}` extension to be also enabled, but the device \
15495                                        does not support the required extension. \
15496                                        This is a bug in the Vulkan driver for this device.",
15497                    "android_external_memory_android_hardware_buffer", "khr_dedicated_allocation",
15498                );
15499                self.khr_dedicated_allocation = true;
15500            }
15501            if !(self.ext_queue_family_foreign) {
15502                assert!(
15503                    supported.ext_queue_family_foreign,
15504                    "The device extension `{}` is enabled, and it requires \
15505                                        the `{}` extension to be also enabled, but the device \
15506                                        does not support the required extension. \
15507                                        This is a bug in the Vulkan driver for this device.",
15508                    "android_external_memory_android_hardware_buffer", "ext_queue_family_foreign",
15509                );
15510                self.ext_queue_family_foreign = true;
15511            }
15512        }
15513        if self.arm_render_pass_striped {
15514            if !(api_version >= crate::Version::V1_3 || self.khr_synchronization2) {
15515                assert!(
15516                    supported.khr_synchronization2,
15517                    "The device extension `{}` is enabled, and it requires \
15518                                        the `{}` extension to be also enabled, but the device \
15519                                        does not support the required extension. \
15520                                        This is a bug in the Vulkan driver for this device.",
15521                    "arm_render_pass_striped", "khr_synchronization2",
15522                );
15523                self.khr_synchronization2 = true;
15524            }
15525        }
15526        if self.arm_scheduling_controls {
15527            if !(self.arm_shader_core_builtins) {
15528                assert!(
15529                    supported.arm_shader_core_builtins,
15530                    "The device extension `{}` is enabled, and it requires \
15531                                        the `{}` extension to be also enabled, but the device \
15532                                        does not support the required extension. \
15533                                        This is a bug in the Vulkan driver for this device.",
15534                    "arm_scheduling_controls", "arm_shader_core_builtins",
15535                );
15536                self.arm_shader_core_builtins = true;
15537            }
15538        }
15539        if self.fuchsia_buffer_collection {
15540            if !(self.fuchsia_external_memory) {
15541                assert!(
15542                    supported.fuchsia_external_memory,
15543                    "The device extension `{}` is enabled, and it requires \
15544                                        the `{}` extension to be also enabled, but the device \
15545                                        does not support the required extension. \
15546                                        This is a bug in the Vulkan driver for this device.",
15547                    "fuchsia_buffer_collection", "fuchsia_external_memory",
15548                );
15549                self.fuchsia_external_memory = true;
15550            }
15551            if !(api_version >= crate::Version::V1_1 || self.khr_sampler_ycbcr_conversion) {
15552                assert!(
15553                    supported.khr_sampler_ycbcr_conversion,
15554                    "The device extension `{}` is enabled, and it requires \
15555                                        the `{}` extension to be also enabled, but the device \
15556                                        does not support the required extension. \
15557                                        This is a bug in the Vulkan driver for this device.",
15558                    "fuchsia_buffer_collection", "khr_sampler_ycbcr_conversion",
15559                );
15560                self.khr_sampler_ycbcr_conversion = true;
15561            }
15562        }
15563        if self.fuchsia_external_memory {
15564            if !(api_version >= crate::Version::V1_1 || self.khr_external_memory) {
15565                assert!(
15566                    supported.khr_external_memory,
15567                    "The device extension `{}` is enabled, and it requires \
15568                                        the `{}` extension to be also enabled, but the device \
15569                                        does not support the required extension. \
15570                                        This is a bug in the Vulkan driver for this device.",
15571                    "fuchsia_external_memory", "khr_external_memory",
15572                );
15573                self.khr_external_memory = true;
15574            }
15575        }
15576        if self.fuchsia_external_semaphore {
15577            if !(api_version >= crate::Version::V1_1 || self.khr_external_semaphore) {
15578                assert!(
15579                    supported.khr_external_semaphore,
15580                    "The device extension `{}` is enabled, and it requires \
15581                                        the `{}` extension to be also enabled, but the device \
15582                                        does not support the required extension. \
15583                                        This is a bug in the Vulkan driver for this device.",
15584                    "fuchsia_external_semaphore", "khr_external_semaphore",
15585                );
15586                self.khr_external_semaphore = true;
15587            }
15588        }
15589        if self.ggp_frame_token {
15590            if !(self.khr_swapchain) {
15591                assert!(
15592                    supported.khr_swapchain,
15593                    "The device extension `{}` is enabled, and it requires \
15594                                        the `{}` extension to be also enabled, but the device \
15595                                        does not support the required extension. \
15596                                        This is a bug in the Vulkan driver for this device.",
15597                    "ggp_frame_token", "khr_swapchain",
15598                );
15599                self.khr_swapchain = true;
15600            }
15601        }
15602        if self.google_display_timing {
15603            if !(self.khr_swapchain) {
15604                assert!(
15605                    supported.khr_swapchain,
15606                    "The device extension `{}` is enabled, and it requires \
15607                                        the `{}` extension to be also enabled, but the device \
15608                                        does not support the required extension. \
15609                                        This is a bug in the Vulkan driver for this device.",
15610                    "google_display_timing", "khr_swapchain",
15611                );
15612                self.khr_swapchain = true;
15613            }
15614        }
15615        if self.huawei_invocation_mask {
15616            if !(self.khr_ray_tracing_pipeline) {
15617                assert!(
15618                    supported.khr_ray_tracing_pipeline,
15619                    "The device extension `{}` is enabled, and it requires \
15620                                        the `{}` extension to be also enabled, but the device \
15621                                        does not support the required extension. \
15622                                        This is a bug in the Vulkan driver for this device.",
15623                    "huawei_invocation_mask", "khr_ray_tracing_pipeline",
15624                );
15625                self.khr_ray_tracing_pipeline = true;
15626            }
15627            if !(api_version >= crate::Version::V1_3 || self.khr_synchronization2) {
15628                assert!(
15629                    supported.khr_synchronization2,
15630                    "The device extension `{}` is enabled, and it requires \
15631                                        the `{}` extension to be also enabled, but the device \
15632                                        does not support the required extension. \
15633                                        This is a bug in the Vulkan driver for this device.",
15634                    "huawei_invocation_mask", "khr_synchronization2",
15635                );
15636                self.khr_synchronization2 = true;
15637            }
15638        }
15639        if self.huawei_subpass_shading {
15640            if !(api_version >= crate::Version::V1_2 || self.khr_create_renderpass2) {
15641                assert!(
15642                    supported.khr_create_renderpass2,
15643                    "The device extension `{}` is enabled, and it requires \
15644                                        the `{}` extension to be also enabled, but the device \
15645                                        does not support the required extension. \
15646                                        This is a bug in the Vulkan driver for this device.",
15647                    "huawei_subpass_shading", "khr_create_renderpass2",
15648                );
15649                self.khr_create_renderpass2 = true;
15650            }
15651            if !(api_version >= crate::Version::V1_3 || self.khr_synchronization2) {
15652                assert!(
15653                    supported.khr_synchronization2,
15654                    "The device extension `{}` is enabled, and it requires \
15655                                        the `{}` extension to be also enabled, but the device \
15656                                        does not support the required extension. \
15657                                        This is a bug in the Vulkan driver for this device.",
15658                    "huawei_subpass_shading", "khr_synchronization2",
15659                );
15660                self.khr_synchronization2 = true;
15661            }
15662        }
15663        if self.nvx_multiview_per_view_attributes {
15664            if !(api_version >= crate::Version::V1_1 || self.khr_multiview) {
15665                assert!(
15666                    supported.khr_multiview,
15667                    "The device extension `{}` is enabled, and it requires \
15668                                        the `{}` extension to be also enabled, but the device \
15669                                        does not support the required extension. \
15670                                        This is a bug in the Vulkan driver for this device.",
15671                    "nvx_multiview_per_view_attributes", "khr_multiview",
15672                );
15673                self.khr_multiview = true;
15674            }
15675        }
15676        if self.nv_copy_memory_indirect {
15677            if !(api_version >= crate::Version::V1_2 || self.khr_buffer_device_address) {
15678                assert!(
15679                    supported.khr_buffer_device_address,
15680                    "The device extension `{}` is enabled, and it requires \
15681                                        the `{}` extension to be also enabled, but the device \
15682                                        does not support the required extension. \
15683                                        This is a bug in the Vulkan driver for this device.",
15684                    "nv_copy_memory_indirect", "khr_buffer_device_address",
15685                );
15686                self.khr_buffer_device_address = true;
15687            }
15688        }
15689        if self.nv_coverage_reduction_mode {
15690            if !(self.nv_framebuffer_mixed_samples) {
15691                assert!(
15692                    supported.nv_framebuffer_mixed_samples,
15693                    "The device extension `{}` is enabled, and it requires \
15694                                        the `{}` extension to be also enabled, but the device \
15695                                        does not support the required extension. \
15696                                        This is a bug in the Vulkan driver for this device.",
15697                    "nv_coverage_reduction_mode", "nv_framebuffer_mixed_samples",
15698                );
15699                self.nv_framebuffer_mixed_samples = true;
15700            }
15701        }
15702        if self.nv_dedicated_allocation_image_aliasing {
15703            if !(api_version >= crate::Version::V1_1 || self.khr_dedicated_allocation) {
15704                assert!(
15705                    supported.khr_dedicated_allocation,
15706                    "The device extension `{}` is enabled, and it requires \
15707                                        the `{}` extension to be also enabled, but the device \
15708                                        does not support the required extension. \
15709                                        This is a bug in the Vulkan driver for this device.",
15710                    "nv_dedicated_allocation_image_aliasing", "khr_dedicated_allocation",
15711                );
15712                self.khr_dedicated_allocation = true;
15713            }
15714        }
15715        if self.nv_device_generated_commands {
15716            if !(api_version >= crate::Version::V1_2 || self.khr_buffer_device_address) {
15717                assert!(
15718                    supported.khr_buffer_device_address,
15719                    "The device extension `{}` is enabled, and it requires \
15720                                        the `{}` extension to be also enabled, but the device \
15721                                        does not support the required extension. \
15722                                        This is a bug in the Vulkan driver for this device.",
15723                    "nv_device_generated_commands", "khr_buffer_device_address",
15724                );
15725                self.khr_buffer_device_address = true;
15726            }
15727        }
15728        if self.nv_device_generated_commands_compute {
15729            if !(self.nv_device_generated_commands) {
15730                assert!(
15731                    supported.nv_device_generated_commands,
15732                    "The device extension `{}` is enabled, and it requires \
15733                                        the `{}` extension to be also enabled, but the device \
15734                                        does not support the required extension. \
15735                                        This is a bug in the Vulkan driver for this device.",
15736                    "nv_device_generated_commands_compute", "nv_device_generated_commands",
15737                );
15738                self.nv_device_generated_commands = true;
15739            }
15740        }
15741        if self.nv_displacement_micromap {
15742            if !(self.ext_opacity_micromap) {
15743                assert!(
15744                    supported.ext_opacity_micromap,
15745                    "The device extension `{}` is enabled, and it requires \
15746                                        the `{}` extension to be also enabled, but the device \
15747                                        does not support the required extension. \
15748                                        This is a bug in the Vulkan driver for this device.",
15749                    "nv_displacement_micromap", "ext_opacity_micromap",
15750                );
15751                self.ext_opacity_micromap = true;
15752            }
15753        }
15754        if self.nv_external_memory_rdma {
15755            if !(api_version >= crate::Version::V1_1 || self.khr_external_memory) {
15756                assert!(
15757                    supported.khr_external_memory,
15758                    "The device extension `{}` is enabled, and it requires \
15759                                        the `{}` extension to be also enabled, but the device \
15760                                        does not support the required extension. \
15761                                        This is a bug in the Vulkan driver for this device.",
15762                    "nv_external_memory_rdma", "khr_external_memory",
15763                );
15764                self.khr_external_memory = true;
15765            }
15766        }
15767        if self.nv_external_memory_win32 {
15768            if !(self.nv_external_memory) {
15769                assert!(
15770                    supported.nv_external_memory,
15771                    "The device extension `{}` is enabled, and it requires \
15772                                        the `{}` extension to be also enabled, but the device \
15773                                        does not support the required extension. \
15774                                        This is a bug in the Vulkan driver for this device.",
15775                    "nv_external_memory_win32", "nv_external_memory",
15776                );
15777                self.nv_external_memory = true;
15778            }
15779        }
15780        if self.nv_fragment_shading_rate_enums {
15781            if !(self.khr_fragment_shading_rate) {
15782                assert!(
15783                    supported.khr_fragment_shading_rate,
15784                    "The device extension `{}` is enabled, and it requires \
15785                                        the `{}` extension to be also enabled, but the device \
15786                                        does not support the required extension. \
15787                                        This is a bug in the Vulkan driver for this device.",
15788                    "nv_fragment_shading_rate_enums", "khr_fragment_shading_rate",
15789                );
15790                self.khr_fragment_shading_rate = true;
15791            }
15792        }
15793        if self.nv_low_latency2 {
15794            if !(api_version >= crate::Version::V1_2 || self.khr_timeline_semaphore) {
15795                assert!(
15796                    supported.khr_timeline_semaphore,
15797                    "The device extension `{}` is enabled, and it requires \
15798                                        the `{}` extension to be also enabled, but the device \
15799                                        does not support the required extension. \
15800                                        This is a bug in the Vulkan driver for this device.",
15801                    "nv_low_latency2", "khr_timeline_semaphore",
15802                );
15803                self.khr_timeline_semaphore = true;
15804            }
15805        }
15806        if self.nv_memory_decompression {
15807            if !(api_version >= crate::Version::V1_2 || self.khr_buffer_device_address) {
15808                assert!(
15809                    supported.khr_buffer_device_address,
15810                    "The device extension `{}` is enabled, and it requires \
15811                                        the `{}` extension to be also enabled, but the device \
15812                                        does not support the required extension. \
15813                                        This is a bug in the Vulkan driver for this device.",
15814                    "nv_memory_decompression", "khr_buffer_device_address",
15815                );
15816                self.khr_buffer_device_address = true;
15817            }
15818        }
15819        if self.nv_optical_flow {
15820            if !(api_version >= crate::Version::V1_3 || self.khr_format_feature_flags2) {
15821                assert!(
15822                    supported.khr_format_feature_flags2,
15823                    "The device extension `{}` is enabled, and it requires \
15824                                        the `{}` extension to be also enabled, but the device \
15825                                        does not support the required extension. \
15826                                        This is a bug in the Vulkan driver for this device.",
15827                    "nv_optical_flow", "khr_format_feature_flags2",
15828                );
15829                self.khr_format_feature_flags2 = true;
15830            }
15831            if !(api_version >= crate::Version::V1_3 || self.khr_synchronization2) {
15832                assert!(
15833                    supported.khr_synchronization2,
15834                    "The device extension `{}` is enabled, and it requires \
15835                                        the `{}` extension to be also enabled, but the device \
15836                                        does not support the required extension. \
15837                                        This is a bug in the Vulkan driver for this device.",
15838                    "nv_optical_flow", "khr_synchronization2",
15839                );
15840                self.khr_synchronization2 = true;
15841            }
15842        }
15843        if self.nv_per_stage_descriptor_set {
15844            if !(self.khr_maintenance6) {
15845                assert!(
15846                    supported.khr_maintenance6,
15847                    "The device extension `{}` is enabled, and it requires \
15848                                        the `{}` extension to be also enabled, but the device \
15849                                        does not support the required extension. \
15850                                        This is a bug in the Vulkan driver for this device.",
15851                    "nv_per_stage_descriptor_set", "khr_maintenance6",
15852                );
15853                self.khr_maintenance6 = true;
15854            }
15855        }
15856        if self.nv_present_barrier {
15857            if !(self.khr_swapchain) {
15858                assert!(
15859                    supported.khr_swapchain,
15860                    "The device extension `{}` is enabled, and it requires \
15861                                        the `{}` extension to be also enabled, but the device \
15862                                        does not support the required extension. \
15863                                        This is a bug in the Vulkan driver for this device.",
15864                    "nv_present_barrier", "khr_swapchain",
15865                );
15866                self.khr_swapchain = true;
15867            }
15868        }
15869        if self.nv_ray_tracing {
15870            if !(api_version >= crate::Version::V1_1 || self.khr_get_memory_requirements2) {
15871                assert!(
15872                    supported.khr_get_memory_requirements2,
15873                    "The device extension `{}` is enabled, and it requires \
15874                                        the `{}` extension to be also enabled, but the device \
15875                                        does not support the required extension. \
15876                                        This is a bug in the Vulkan driver for this device.",
15877                    "nv_ray_tracing", "khr_get_memory_requirements2",
15878                );
15879                self.khr_get_memory_requirements2 = true;
15880            }
15881        }
15882        if self.nv_ray_tracing_invocation_reorder {
15883            if !(self.khr_ray_tracing_pipeline) {
15884                assert!(
15885                    supported.khr_ray_tracing_pipeline,
15886                    "The device extension `{}` is enabled, and it requires \
15887                                        the `{}` extension to be also enabled, but the device \
15888                                        does not support the required extension. \
15889                                        This is a bug in the Vulkan driver for this device.",
15890                    "nv_ray_tracing_invocation_reorder", "khr_ray_tracing_pipeline",
15891                );
15892                self.khr_ray_tracing_pipeline = true;
15893            }
15894        }
15895        if self.nv_ray_tracing_motion_blur {
15896            if !(self.khr_ray_tracing_pipeline) {
15897                assert!(
15898                    supported.khr_ray_tracing_pipeline,
15899                    "The device extension `{}` is enabled, and it requires \
15900                                        the `{}` extension to be also enabled, but the device \
15901                                        does not support the required extension. \
15902                                        This is a bug in the Vulkan driver for this device.",
15903                    "nv_ray_tracing_motion_blur", "khr_ray_tracing_pipeline",
15904                );
15905                self.khr_ray_tracing_pipeline = true;
15906            }
15907        }
15908        if self.nv_win32_keyed_mutex {
15909            if !(self.nv_external_memory_win32) {
15910                assert!(
15911                    supported.nv_external_memory_win32,
15912                    "The device extension `{}` is enabled, and it requires \
15913                                        the `{}` extension to be also enabled, but the device \
15914                                        does not support the required extension. \
15915                                        This is a bug in the Vulkan driver for this device.",
15916                    "nv_win32_keyed_mutex", "nv_external_memory_win32",
15917                );
15918                self.nv_external_memory_win32 = true;
15919            }
15920        }
15921        if self.qcom_filter_cubic_clamp {
15922            if !(self.ext_filter_cubic) {
15923                assert!(
15924                    supported.ext_filter_cubic,
15925                    "The device extension `{}` is enabled, and it requires \
15926                                        the `{}` extension to be also enabled, but the device \
15927                                        does not support the required extension. \
15928                                        This is a bug in the Vulkan driver for this device.",
15929                    "qcom_filter_cubic_clamp", "ext_filter_cubic",
15930                );
15931                self.ext_filter_cubic = true;
15932            }
15933            if !(api_version >= crate::Version::V1_2 || self.ext_sampler_filter_minmax) {
15934                assert!(
15935                    supported.ext_sampler_filter_minmax,
15936                    "The device extension `{}` is enabled, and it requires \
15937                                        the `{}` extension to be also enabled, but the device \
15938                                        does not support the required extension. \
15939                                        This is a bug in the Vulkan driver for this device.",
15940                    "qcom_filter_cubic_clamp", "ext_sampler_filter_minmax",
15941                );
15942                self.ext_sampler_filter_minmax = true;
15943            }
15944        }
15945        if self.qcom_filter_cubic_weights {
15946            if !(self.ext_filter_cubic) {
15947                assert!(
15948                    supported.ext_filter_cubic,
15949                    "The device extension `{}` is enabled, and it requires \
15950                                        the `{}` extension to be also enabled, but the device \
15951                                        does not support the required extension. \
15952                                        This is a bug in the Vulkan driver for this device.",
15953                    "qcom_filter_cubic_weights", "ext_filter_cubic",
15954                );
15955                self.ext_filter_cubic = true;
15956            }
15957        }
15958        if self.qcom_fragment_density_map_offset {
15959            if !(self.ext_fragment_density_map) {
15960                assert!(
15961                    supported.ext_fragment_density_map,
15962                    "The device extension `{}` is enabled, and it requires \
15963                                        the `{}` extension to be also enabled, but the device \
15964                                        does not support the required extension. \
15965                                        This is a bug in the Vulkan driver for this device.",
15966                    "qcom_fragment_density_map_offset", "ext_fragment_density_map",
15967                );
15968                self.ext_fragment_density_map = true;
15969            }
15970        }
15971        if self.qcom_image_processing {
15972            if !(api_version >= crate::Version::V1_3 || self.khr_format_feature_flags2) {
15973                assert!(
15974                    supported.khr_format_feature_flags2,
15975                    "The device extension `{}` is enabled, and it requires \
15976                                        the `{}` extension to be also enabled, but the device \
15977                                        does not support the required extension. \
15978                                        This is a bug in the Vulkan driver for this device.",
15979                    "qcom_image_processing", "khr_format_feature_flags2",
15980                );
15981                self.khr_format_feature_flags2 = true;
15982            }
15983        }
15984        if self.qcom_image_processing2 {
15985            if !(self.qcom_image_processing) {
15986                assert!(
15987                    supported.qcom_image_processing,
15988                    "The device extension `{}` is enabled, and it requires \
15989                                        the `{}` extension to be also enabled, but the device \
15990                                        does not support the required extension. \
15991                                        This is a bug in the Vulkan driver for this device.",
15992                    "qcom_image_processing2", "qcom_image_processing",
15993                );
15994                self.qcom_image_processing = true;
15995            }
15996        }
15997        if self.qcom_rotated_copy_commands {
15998            if !(api_version >= crate::Version::V1_3 || self.khr_copy_commands2) {
15999                assert!(
16000                    supported.khr_copy_commands2,
16001                    "The device extension `{}` is enabled, and it requires \
16002                                        the `{}` extension to be also enabled, but the device \
16003                                        does not support the required extension. \
16004                                        This is a bug in the Vulkan driver for this device.",
16005                    "qcom_rotated_copy_commands", "khr_copy_commands2",
16006                );
16007                self.khr_copy_commands2 = true;
16008            }
16009        }
16010        if self.qnx_external_memory_screen_buffer {
16011            if !(api_version >= crate::Version::V1_1 || self.khr_sampler_ycbcr_conversion) {
16012                assert!(
16013                    supported.khr_sampler_ycbcr_conversion,
16014                    "The device extension `{}` is enabled, and it requires \
16015                                        the `{}` extension to be also enabled, but the device \
16016                                        does not support the required extension. \
16017                                        This is a bug in the Vulkan driver for this device.",
16018                    "qnx_external_memory_screen_buffer", "khr_sampler_ycbcr_conversion",
16019                );
16020                self.khr_sampler_ycbcr_conversion = true;
16021            }
16022            if !(api_version >= crate::Version::V1_1 || self.khr_external_memory) {
16023                assert!(
16024                    supported.khr_external_memory,
16025                    "The device extension `{}` is enabled, and it requires \
16026                                        the `{}` extension to be also enabled, but the device \
16027                                        does not support the required extension. \
16028                                        This is a bug in the Vulkan driver for this device.",
16029                    "qnx_external_memory_screen_buffer", "khr_external_memory",
16030                );
16031                self.khr_external_memory = true;
16032            }
16033            if !(api_version >= crate::Version::V1_1 || self.khr_dedicated_allocation) {
16034                assert!(
16035                    supported.khr_dedicated_allocation,
16036                    "The device extension `{}` is enabled, and it requires \
16037                                        the `{}` extension to be also enabled, but the device \
16038                                        does not support the required extension. \
16039                                        This is a bug in the Vulkan driver for this device.",
16040                    "qnx_external_memory_screen_buffer", "khr_dedicated_allocation",
16041                );
16042                self.khr_dedicated_allocation = true;
16043            }
16044            if !(self.ext_queue_family_foreign) {
16045                assert!(
16046                    supported.ext_queue_family_foreign,
16047                    "The device extension `{}` is enabled, and it requires \
16048                                        the `{}` extension to be also enabled, but the device \
16049                                        does not support the required extension. \
16050                                        This is a bug in the Vulkan driver for this device.",
16051                    "qnx_external_memory_screen_buffer", "ext_queue_family_foreign",
16052                );
16053                self.ext_queue_family_foreign = true;
16054            }
16055        }
16056        if self.valve_mutable_descriptor_type {
16057            if !(api_version >= crate::Version::V1_1 || self.khr_maintenance3) {
16058                assert!(
16059                    supported.khr_maintenance3,
16060                    "The device extension `{}` is enabled, and it requires \
16061                                        the `{}` extension to be also enabled, but the device \
16062                                        does not support the required extension. \
16063                                        This is a bug in the Vulkan driver for this device.",
16064                    "valve_mutable_descriptor_type", "khr_maintenance3",
16065                );
16066                self.khr_maintenance3 = true;
16067            }
16068        }
16069    }
16070}