1 // This file is auto-generated by vulkano autogen from vk.xml header version 1.3.238.
2 // It should not be edited manually. Changes should be made by editing autogen.
3 
4 #[doc = r" Represents all the features that are available on a physical device or enabled on"]
5 #[doc = r" a logical device."]
6 #[doc = r""]
7 #[doc = r" Note that the `robust_buffer_access` is guaranteed to be supported by all Vulkan"]
8 #[doc = r" implementations."]
9 #[doc = r""]
10 #[doc = r" # Examples"]
11 #[doc = r""]
12 #[doc = r" ```"]
13 #[doc = r" use vulkano::device::Features;"]
14 #[doc = r" # let physical_device: vulkano::device::physical::PhysicalDevice = return;"]
15 #[doc = r" let minimal_features = Features {"]
16 #[doc = r"     geometry_shader: true,"]
17 #[doc = r"     ..Features::empty()"]
18 #[doc = r" };"]
19 #[doc = r""]
20 #[doc = r" let optimal_features = vulkano::device::Features {"]
21 #[doc = r"     geometry_shader: true,"]
22 #[doc = r"     tessellation_shader: true,"]
23 #[doc = r"     ..Features::empty()"]
24 #[doc = r" };"]
25 #[doc = r""]
26 #[doc = r" if !physical_device.supported_features().is_superset_of(&minimal_features) {"]
27 #[doc = r#"     panic!("The physical device is not good enough for this application.");"#]
28 #[doc = r" }"]
29 #[doc = r""]
30 #[doc = r" assert!(optimal_features.is_superset_of(&minimal_features));"]
31 #[doc = r" let features_to_request = optimal_features.intersection(physical_device.supported_features());"]
32 #[doc = r" ```"]
33 #[derive(Copy, Clone, PartialEq, Eq, Hash)]
34 pub struct Features {
35     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructure)"]
36     pub acceleration_structure: bool,
37     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructureCaptureReplay)"]
38     pub acceleration_structure_capture_replay: bool,
39     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructureHostCommands)"]
40     pub acceleration_structure_host_commands: bool,
41     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructureIndirectBuild)"]
42     pub acceleration_structure_indirect_build: bool,
43     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html#features-advancedBlendCoherentOperations)"]
44     pub advanced_blend_coherent_operations: bool,
45     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-alphaToOne)"]
46     pub alpha_to_one: bool,
47     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAmigoProfilingFeaturesSEC.html#features-amigoProfiling)"]
48     pub amigo_profiling: bool,
49     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.html#features-attachmentFeedbackLoopLayout)"]
50     pub attachment_feedback_loop_layout: bool,
51     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html#features-attachmentFragmentShadingRate)\n- Conflicts with features: [`shading_rate_image`](crate::device::Features::shading_rate_image), [`fragment_density_map`](crate::device::Features::fragment_density_map)"]
52     pub attachment_fragment_shading_rate: bool,
53     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html#features-borderColorSwizzle)"]
54     pub border_color_swizzle: bool,
55     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html#features-borderColorSwizzleFromImage)"]
56     pub border_color_swizzle_from_image: bool,
57     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-bresenhamLines)"]
58     pub bresenham_lines: bool,
59     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-bufferDeviceAddress)"]
60     pub buffer_device_address: bool,
61     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-bufferDeviceAddressCaptureReplay)"]
62     pub buffer_device_address_capture_replay: bool,
63     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-bufferDeviceAddressMultiDevice)"]
64     pub buffer_device_address_multi_device: bool,
65     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html#features-colorWriteEnable)"]
66     pub color_write_enable: bool,
67     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html#features-computeDerivativeGroupLinear)"]
68     pub compute_derivative_group_linear: bool,
69     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html#features-computeDerivativeGroupQuads)"]
70     pub compute_derivative_group_quads: bool,
71     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-computeFullSubgroups)"]
72     pub compute_full_subgroups: bool,
73     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html#features-conditionalRendering)"]
74     pub conditional_rendering: bool,
75     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-constantAlphaColorBlendFactors)"]
76     pub constant_alpha_color_blend_factors: bool,
77     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html#features-cooperativeMatrix)"]
78     pub cooperative_matrix: bool,
79     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html#features-cooperativeMatrixRobustBufferAccess)"]
80     pub cooperative_matrix_robust_buffer_access: bool,
81     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html#features-cornerSampledImage)"]
82     pub corner_sampled_image: bool,
83     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html#features-coverageReductionMode)"]
84     pub coverage_reduction_mode: bool,
85     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html#features-customBorderColorWithoutFormat)"]
86     pub custom_border_color_without_format: bool,
87     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html#features-customBorderColors)"]
88     pub custom_border_colors: bool,
89     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html#features-decodeModeSharedExponent)"]
90     pub decode_mode_shared_exponent: bool,
91     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html#features-dedicatedAllocationImageAliasing)"]
92     pub dedicated_allocation_image_aliasing: bool,
93     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-depthBiasClamp)"]
94     pub depth_bias_clamp: bool,
95     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-depthBounds)"]
96     pub depth_bounds: bool,
97     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-depthClamp)"]
98     pub depth_clamp: bool,
99     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.html#features-depthClampZeroOne)"]
100     pub depth_clamp_zero_one: bool,
101     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html#features-depthClipControl)"]
102     pub depth_clip_control: bool,
103     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html#features-depthClipEnable)"]
104     pub depth_clip_enable: bool,
105     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-descriptorBindingAccelerationStructureUpdateAfterBind)"]
106     pub descriptor_binding_acceleration_structure_update_after_bind: bool,
107     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-descriptorBindingInlineUniformBlockUpdateAfterBind)"]
108     pub descriptor_binding_inline_uniform_block_update_after_bind: bool,
109     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingPartiallyBound)"]
110     pub descriptor_binding_partially_bound: bool,
111     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingSampledImageUpdateAfterBind)"]
112     pub descriptor_binding_sampled_image_update_after_bind: bool,
113     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingStorageBufferUpdateAfterBind)"]
114     pub descriptor_binding_storage_buffer_update_after_bind: bool,
115     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingStorageImageUpdateAfterBind)"]
116     pub descriptor_binding_storage_image_update_after_bind: bool,
117     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingStorageTexelBufferUpdateAfterBind)"]
118     pub descriptor_binding_storage_texel_buffer_update_after_bind: bool,
119     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingUniformBufferUpdateAfterBind)"]
120     pub descriptor_binding_uniform_buffer_update_after_bind: bool,
121     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingUniformTexelBufferUpdateAfterBind)"]
122     pub descriptor_binding_uniform_texel_buffer_update_after_bind: bool,
123     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingUpdateUnusedWhilePending)"]
124     pub descriptor_binding_update_unused_while_pending: bool,
125     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingVariableDescriptorCount)"]
126     pub descriptor_binding_variable_descriptor_count: bool,
127     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBuffer)"]
128     pub descriptor_buffer: bool,
129     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBufferCaptureReplay)"]
130     pub descriptor_buffer_capture_replay: bool,
131     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBufferImageLayoutIgnored)"]
132     pub descriptor_buffer_image_layout_ignored: bool,
133     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBufferPushDescriptors)"]
134     pub descriptor_buffer_push_descriptors: bool,
135     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorIndexing)\n- Required by device extension: [`ext_descriptor_indexing`](crate::device::DeviceExtensions::ext_descriptor_indexing)"]
136     pub descriptor_indexing: bool,
137     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.html#features-descriptorSetHostMapping)"]
138     pub descriptor_set_host_mapping: bool,
139     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html#features-deviceCoherentMemory)"]
140     pub device_coherent_memory: bool,
141     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFaultFeaturesEXT.html#features-deviceFault)"]
142     pub device_fault: bool,
143     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFaultFeaturesEXT.html#features-deviceFaultVendorBinary)"]
144     pub device_fault_vendor_binary: bool,
145     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html#features-deviceGeneratedCommands)"]
146     pub device_generated_commands: bool,
147     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html#features-deviceMemoryReport)"]
148     pub device_memory_report: bool,
149     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html#features-diagnosticsConfig)"]
150     pub diagnostics_config: bool,
151     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-drawIndirectCount)\n- Required by device extension: [`khr_draw_indirect_count`](crate::device::DeviceExtensions::khr_draw_indirect_count)"]
152     pub draw_indirect_count: bool,
153     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-drawIndirectFirstInstance)"]
154     pub draw_indirect_first_instance: bool,
155     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-dualSrcBlend)"]
156     pub dual_src_blend: bool,
157     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-dynamicRendering)"]
158     pub dynamic_rendering: bool,
159     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-events)"]
160     pub events: bool,
161     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html#features-exclusiveScissor)"]
162     pub exclusive_scissor: bool,
163     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html#features-extendedDynamicState)"]
164     pub extended_dynamic_state: bool,
165     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html#features-extendedDynamicState2)"]
166     pub extended_dynamic_state2: bool,
167     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html#features-extendedDynamicState2LogicOp)"]
168     pub extended_dynamic_state2_logic_op: bool,
169     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html#features-extendedDynamicState2PatchControlPoints)"]
170     pub extended_dynamic_state2_patch_control_points: bool,
171     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3AlphaToCoverageEnable)"]
172     pub extended_dynamic_state3_alpha_to_coverage_enable: bool,
173     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3AlphaToOneEnable)"]
174     pub extended_dynamic_state3_alpha_to_one_enable: bool,
175     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorBlendAdvanced)"]
176     pub extended_dynamic_state3_color_blend_advanced: bool,
177     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorBlendEnable)"]
178     pub extended_dynamic_state3_color_blend_enable: bool,
179     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorBlendEquation)"]
180     pub extended_dynamic_state3_color_blend_equation: bool,
181     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorWriteMask)"]
182     pub extended_dynamic_state3_color_write_mask: bool,
183     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ConservativeRasterizationMode)"]
184     pub extended_dynamic_state3_conservative_rasterization_mode: bool,
185     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageModulationMode)"]
186     pub extended_dynamic_state3_coverage_modulation_mode: bool,
187     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageModulationTable)"]
188     pub extended_dynamic_state3_coverage_modulation_table: bool,
189     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageModulationTableEnable)"]
190     pub extended_dynamic_state3_coverage_modulation_table_enable: bool,
191     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageReductionMode)"]
192     pub extended_dynamic_state3_coverage_reduction_mode: bool,
193     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageToColorEnable)"]
194     pub extended_dynamic_state3_coverage_to_color_enable: bool,
195     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageToColorLocation)"]
196     pub extended_dynamic_state3_coverage_to_color_location: bool,
197     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3DepthClampEnable)"]
198     pub extended_dynamic_state3_depth_clamp_enable: bool,
199     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3DepthClipEnable)"]
200     pub extended_dynamic_state3_depth_clip_enable: bool,
201     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3DepthClipNegativeOneToOne)"]
202     pub extended_dynamic_state3_depth_clip_negative_one_to_one: bool,
203     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ExtraPrimitiveOverestimationSize)"]
204     pub extended_dynamic_state3_extra_primitive_overestimation_size: bool,
205     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3LineRasterizationMode)"]
206     pub extended_dynamic_state3_line_rasterization_mode: bool,
207     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3LineStippleEnable)"]
208     pub extended_dynamic_state3_line_stipple_enable: bool,
209     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3LogicOpEnable)"]
210     pub extended_dynamic_state3_logic_op_enable: bool,
211     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3PolygonMode)"]
212     pub extended_dynamic_state3_polygon_mode: bool,
213     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ProvokingVertexMode)"]
214     pub extended_dynamic_state3_provoking_vertex_mode: bool,
215     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3RasterizationSamples)"]
216     pub extended_dynamic_state3_rasterization_samples: bool,
217     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3RasterizationStream)"]
218     pub extended_dynamic_state3_rasterization_stream: bool,
219     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3RepresentativeFragmentTestEnable)"]
220     pub extended_dynamic_state3_representative_fragment_test_enable: bool,
221     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3SampleLocationsEnable)"]
222     pub extended_dynamic_state3_sample_locations_enable: bool,
223     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3SampleMask)"]
224     pub extended_dynamic_state3_sample_mask: bool,
225     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ShadingRateImageEnable)"]
226     pub extended_dynamic_state3_shading_rate_image_enable: bool,
227     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3TessellationDomainOrigin)"]
228     pub extended_dynamic_state3_tessellation_domain_origin: bool,
229     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ViewportSwizzle)"]
230     pub extended_dynamic_state3_viewport_swizzle: bool,
231     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ViewportWScalingEnable)"]
232     pub extended_dynamic_state3_viewport_w_scaling_enable: bool,
233     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html#features-externalMemoryRDMA)"]
234     pub external_memory_rdma: bool,
235     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-fillModeNonSolid)"]
236     pub fill_mode_non_solid: bool,
237     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html#features-formatA4B4G4R4)"]
238     pub format_a4b4g4r4: bool,
239     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html#features-formatA4R4G4B4)"]
240     pub format_a4r4g4b4: bool,
241     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html#features-formatRgba10x6WithoutYCbCrSampler)"]
242     pub format_rgba10x6_without_y_cb_cr_sampler: bool,
243     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html#features-fragmentDensityMap)\n- Conflicts with features: [`pipeline_fragment_shading_rate`](crate::device::Features::pipeline_fragment_shading_rate), [`primitive_fragment_shading_rate`](crate::device::Features::primitive_fragment_shading_rate), [`attachment_fragment_shading_rate`](crate::device::Features::attachment_fragment_shading_rate)"]
244     pub fragment_density_map: bool,
245     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html#features-fragmentDensityMapDeferred)"]
246     pub fragment_density_map_deferred: bool,
247     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html#features-fragmentDensityMapDynamic)"]
248     pub fragment_density_map_dynamic: bool,
249     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html#features-fragmentDensityMapNonSubsampledImages)"]
250     pub fragment_density_map_non_subsampled_images: bool,
251     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.html#features-fragmentDensityMapOffset)"]
252     pub fragment_density_map_offset: bool,
253     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.html#features-fragmentShaderBarycentric)"]
254     pub fragment_shader_barycentric: bool,
255     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html#features-fragmentShaderPixelInterlock)"]
256     pub fragment_shader_pixel_interlock: bool,
257     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html#features-fragmentShaderSampleInterlock)"]
258     pub fragment_shader_sample_interlock: bool,
259     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html#features-fragmentShaderShadingRateInterlock)"]
260     pub fragment_shader_shading_rate_interlock: bool,
261     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html#features-fragmentShadingRateEnums)"]
262     pub fragment_shading_rate_enums: bool,
263     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-fragmentStoresAndAtomics)"]
264     pub fragment_stores_and_atomics: bool,
265     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-fullDrawIndexUint32)"]
266     pub full_draw_index_uint32: bool,
267     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-geometryShader)"]
268     pub geometry_shader: bool,
269     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html#features-geometryStreams)"]
270     pub geometry_streams: bool,
271     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.html#features-globalPriorityQuery)"]
272     pub global_priority_query: bool,
273     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.html#features-graphicsPipelineLibrary)"]
274     pub graphics_pipeline_library: bool,
275     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-hostQueryReset)"]
276     pub host_query_reset: bool,
277     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html#features-image2DViewOf3D)"]
278     pub image2_d_view_of3_d: bool,
279     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageCompressionControlFeaturesEXT.html#features-imageCompressionControl)"]
280     pub image_compression_control: bool,
281     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.html#features-imageCompressionControlSwapchain)"]
282     pub image_compression_control_swapchain: bool,
283     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-imageCubeArray)"]
284     pub image_cube_array: bool,
285     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html#features-imageFootprint)"]
286     pub image_footprint: bool,
287     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-imageView2DOn3DImage)"]
288     pub image_view2_d_on3_d_image: bool,
289     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-imageViewFormatReinterpretation)"]
290     pub image_view_format_reinterpretation: bool,
291     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-imageViewFormatSwizzle)"]
292     pub image_view_format_swizzle: bool,
293     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-imagelessFramebuffer)"]
294     pub imageless_framebuffer: bool,
295     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-independentBlend)"]
296     pub independent_blend: bool,
297     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html#features-indexTypeUint8)"]
298     pub index_type_uint8: bool,
299     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.html#features-indirectCopy)"]
300     pub indirect_copy: bool,
301     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html#features-inheritedConditionalRendering)"]
302     pub inherited_conditional_rendering: bool,
303     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-inheritedQueries)"]
304     pub inherited_queries: bool,
305     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html#features-inheritedViewportScissor2D)"]
306     pub inherited_viewport_scissor2_d: bool,
307     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-inlineUniformBlock)"]
308     pub inline_uniform_block: bool,
309     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html#features-invocationMask)"]
310     pub invocation_mask: bool,
311     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-largePoints)"]
312     pub large_points: bool,
313     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLegacyDitheringFeaturesEXT.html#features-legacyDithering)"]
314     pub legacy_dithering: bool,
315     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html#features-linearColorAttachment)"]
316     pub linear_color_attachment: bool,
317     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-logicOp)"]
318     pub logic_op: bool,
319     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-maintenance4)"]
320     pub maintenance4: bool,
321     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesNV.html#features-memoryDecompression)"]
322     pub memory_decompression: bool,
323     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html#features-memoryPriority)"]
324     pub memory_priority: bool,
325     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-meshShader)"]
326     pub mesh_shader: bool,
327     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-meshShaderQueries)"]
328     pub mesh_shader_queries: bool,
329     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html#features-micromap)"]
330     pub micromap: bool,
331     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html#features-micromapCaptureReplay)"]
332     pub micromap_capture_replay: bool,
333     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html#features-micromapHostCommands)"]
334     pub micromap_host_commands: bool,
335     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html#features-minLod)"]
336     pub min_lod: bool,
337     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html#features-multiDraw)"]
338     pub multi_draw: bool,
339     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-multiDrawIndirect)"]
340     pub multi_draw_indirect: bool,
341     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-multiViewport)"]
342     pub multi_viewport: bool,
343     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-multisampleArrayImage)"]
344     pub multisample_array_image: bool,
345     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.html#features-multisampledRenderToSingleSampled)"]
346     pub multisampled_render_to_single_sampled: bool,
347     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-multiview)"]
348     pub multiview: bool,
349     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-multiviewGeometryShader)"]
350     pub multiview_geometry_shader: bool,
351     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-multiviewMeshShader)"]
352     pub multiview_mesh_shader: bool,
353     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.html#features-multiviewPerViewViewports)"]
354     pub multiview_per_view_viewports: bool,
355     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-multiviewTessellationShader)"]
356     pub multiview_tessellation_shader: bool,
357     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-mutableComparisonSamplers)"]
358     pub mutable_comparison_samplers: bool,
359     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.html#features-mutableDescriptorType)"]
360     pub mutable_descriptor_type: bool,
361     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html#features-noInvocationFragmentShadingRates)"]
362     pub no_invocation_fragment_shading_rates: bool,
363     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.html#features-nonSeamlessCubeMap)"]
364     pub non_seamless_cube_map: bool,
365     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html#features-nullDescriptor)"]
366     pub null_descriptor: bool,
367     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-occlusionQueryPrecise)"]
368     pub occlusion_query_precise: bool,
369     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowFeaturesNV.html#features-opticalFlow)"]
370     pub optical_flow: bool,
371     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html#features-pageableDeviceLocalMemory)"]
372     pub pageable_device_local_memory: bool,
373     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html#features-performanceCounterMultipleQueryPools)"]
374     pub performance_counter_multiple_query_pools: bool,
375     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html#features-performanceCounterQueryPools)"]
376     pub performance_counter_query_pools: bool,
377     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-pipelineCreationCacheControl)"]
378     pub pipeline_creation_cache_control: bool,
379     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html#features-pipelineExecutableInfo)"]
380     pub pipeline_executable_info: bool,
381     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html#features-pipelineFragmentShadingRate)\n- Conflicts with features: [`shading_rate_image`](crate::device::Features::shading_rate_image), [`fragment_density_map`](crate::device::Features::fragment_density_map)"]
382     pub pipeline_fragment_shading_rate: bool,
383     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelinePropertiesFeaturesEXT.html#features-pipelinePropertiesIdentifier)"]
384     pub pipeline_properties_identifier: bool,
385     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.html#features-pipelineProtectedAccess)"]
386     pub pipeline_protected_access: bool,
387     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineRobustnessFeaturesEXT.html#features-pipelineRobustness)"]
388     pub pipeline_robustness: bool,
389     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-pipelineStatisticsQuery)"]
390     pub pipeline_statistics_query: bool,
391     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-pointPolygons)"]
392     pub point_polygons: bool,
393     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePresentBarrierFeaturesNV.html#features-presentBarrier)"]
394     pub present_barrier: bool,
395     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html#features-presentId)"]
396     pub present_id: bool,
397     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html#features-presentWait)"]
398     pub present_wait: bool,
399     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html#features-primitiveFragmentShadingRate)\n- Conflicts with features: [`shading_rate_image`](crate::device::Features::shading_rate_image), [`fragment_density_map`](crate::device::Features::fragment_density_map)"]
400     pub primitive_fragment_shading_rate: bool,
401     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-primitiveFragmentShadingRateMeshShader)"]
402     pub primitive_fragment_shading_rate_mesh_shader: bool,
403     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html#features-primitiveTopologyListRestart)"]
404     pub primitive_topology_list_restart: bool,
405     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html#features-primitiveTopologyPatchListRestart)"]
406     pub primitive_topology_patch_list_restart: bool,
407     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html#features-primitivesGeneratedQuery)"]
408     pub primitives_generated_query: bool,
409     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html#features-primitivesGeneratedQueryWithNonZeroStreams)"]
410     pub primitives_generated_query_with_non_zero_streams: bool,
411     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html#features-primitivesGeneratedQueryWithRasterizerDiscard)"]
412     pub primitives_generated_query_with_rasterizer_discard: bool,
413     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-privateData)"]
414     pub private_data: bool,
415     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-protectedMemory)"]
416     pub protected_memory: bool,
417     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html#features-provokingVertexLast)"]
418     pub provoking_vertex_last: bool,
419     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html#features-rasterizationOrderColorAttachmentAccess)"]
420     pub rasterization_order_color_attachment_access: bool,
421     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html#features-rasterizationOrderDepthAttachmentAccess)"]
422     pub rasterization_order_depth_attachment_access: bool,
423     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html#features-rasterizationOrderStencilAttachmentAccess)"]
424     pub rasterization_order_stencil_attachment_access: bool,
425     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html#features-rayQuery)"]
426     pub ray_query: bool,
427     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.html#features-rayTracingInvocationReorder)"]
428     pub ray_tracing_invocation_reorder: bool,
429     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html#features-rayTracingMaintenance1)"]
430     pub ray_tracing_maintenance1: bool,
431     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html#features-rayTracingMotionBlur)"]
432     pub ray_tracing_motion_blur: bool,
433     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html#features-rayTracingMotionBlurPipelineTraceRaysIndirect)"]
434     pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: bool,
435     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipeline)"]
436     pub ray_tracing_pipeline: bool,
437     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipelineShaderGroupHandleCaptureReplay)"]
438     pub ray_tracing_pipeline_shader_group_handle_capture_replay: bool,
439     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed)"]
440     pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: bool,
441     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipelineTraceRaysIndirect)"]
442     pub ray_tracing_pipeline_trace_rays_indirect: bool,
443     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html#features-rayTracingPipelineTraceRaysIndirect2)"]
444     pub ray_tracing_pipeline_trace_rays_indirect2: bool,
445     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTraversalPrimitiveCulling)"]
446     pub ray_traversal_primitive_culling: bool,
447     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-rectangularLines)"]
448     pub rectangular_lines: bool,
449     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAddressBindingReportFeaturesEXT.html#features-reportAddressBinding)"]
450     pub report_address_binding: bool,
451     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html#features-representativeFragmentTest)"]
452     pub representative_fragment_test: bool,
453     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-robustBufferAccess)"]
454     pub robust_buffer_access: bool,
455     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html#features-robustBufferAccess2)"]
456     pub robust_buffer_access2: bool,
457     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-robustImageAccess)"]
458     pub robust_image_access: bool,
459     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html#features-robustImageAccess2)"]
460     pub robust_image_access2: bool,
461     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-runtimeDescriptorArray)"]
462     pub runtime_descriptor_array: bool,
463     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sampleRateShading)"]
464     pub sample_rate_shading: bool,
465     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html#features-sampler2DViewOf3D)"]
466     pub sampler2_d_view_of3_d: bool,
467     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-samplerAnisotropy)"]
468     pub sampler_anisotropy: bool,
469     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-samplerFilterMinmax)\n- Required by device extension: [`ext_sampler_filter_minmax`](crate::device::DeviceExtensions::ext_sampler_filter_minmax)"]
470     pub sampler_filter_minmax: bool,
471     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-samplerMipLodBias)"]
472     pub sampler_mip_lod_bias: bool,
473     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-samplerMirrorClampToEdge)\n- Required by device extension: [`khr_sampler_mirror_clamp_to_edge`](crate::device::DeviceExtensions::khr_sampler_mirror_clamp_to_edge)"]
474     pub sampler_mirror_clamp_to_edge: bool,
475     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-samplerYcbcrConversion)"]
476     pub sampler_ycbcr_conversion: bool,
477     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-scalarBlockLayout)"]
478     pub scalar_block_layout: bool,
479     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-separateDepthStencilLayouts)"]
480     pub separate_depth_stencil_layouts: bool,
481     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-separateStencilMaskRef)"]
482     pub separate_stencil_mask_ref: bool,
483     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat16AtomicAdd)"]
484     pub shader_buffer_float16_atomic_add: bool,
485     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat16AtomicMinMax)"]
486     pub shader_buffer_float16_atomic_min_max: bool,
487     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat16Atomics)"]
488     pub shader_buffer_float16_atomics: bool,
489     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat32AtomicAdd)"]
490     pub shader_buffer_float32_atomic_add: bool,
491     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat32AtomicMinMax)"]
492     pub shader_buffer_float32_atomic_min_max: bool,
493     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat32Atomics)"]
494     pub shader_buffer_float32_atomics: bool,
495     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat64AtomicAdd)"]
496     pub shader_buffer_float64_atomic_add: bool,
497     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat64AtomicMinMax)"]
498     pub shader_buffer_float64_atomic_min_max: bool,
499     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat64Atomics)"]
500     pub shader_buffer_float64_atomics: bool,
501     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderBufferInt64Atomics)"]
502     pub shader_buffer_int64_atomics: bool,
503     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderClipDistance)"]
504     pub shader_clip_distance: bool,
505     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.html#features-shaderCoreBuiltins)"]
506     pub shader_core_builtins: bool,
507     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderCullDistance)"]
508     pub shader_cull_distance: bool,
509     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderDemoteToHelperInvocation)"]
510     pub shader_demote_to_helper_invocation: bool,
511     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html#features-shaderDeviceClock)"]
512     pub shader_device_clock: bool,
513     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-shaderDrawParameters)\n- Required by device extension: [`khr_shader_draw_parameters`](crate::device::DeviceExtensions::khr_shader_draw_parameters)"]
514     pub shader_draw_parameters: bool,
515     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.html#features-shaderEarlyAndLateFragmentTests)"]
516     pub shader_early_and_late_fragment_tests: bool,
517     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderFloat16)"]
518     pub shader_float16: bool,
519     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderFloat64)"]
520     pub shader_float64: bool,
521     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderImageFloat32AtomicAdd)"]
522     pub shader_image_float32_atomic_add: bool,
523     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderImageFloat32AtomicMinMax)"]
524     pub shader_image_float32_atomic_min_max: bool,
525     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderImageFloat32Atomics)"]
526     pub shader_image_float32_atomics: bool,
527     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderImageGatherExtended)"]
528     pub shader_image_gather_extended: bool,
529     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html#features-shaderImageInt64Atomics)"]
530     pub shader_image_int64_atomics: bool,
531     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderInputAttachmentArrayDynamicIndexing)"]
532     pub shader_input_attachment_array_dynamic_indexing: bool,
533     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderInputAttachmentArrayNonUniformIndexing)"]
534     pub shader_input_attachment_array_non_uniform_indexing: bool,
535     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderInt16)"]
536     pub shader_int16: bool,
537     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderInt64)"]
538     pub shader_int64: bool,
539     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderInt8)"]
540     pub shader_int8: bool,
541     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderIntegerDotProduct)"]
542     pub shader_integer_dot_product: bool,
543     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html#features-shaderIntegerFunctions2)"]
544     pub shader_integer_functions2: bool,
545     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.html#features-shaderModuleIdentifier)"]
546     pub shader_module_identifier: bool,
547     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderOutputLayer)\n- Required by device extension: [`ext_shader_viewport_index_layer`](crate::device::DeviceExtensions::ext_shader_viewport_index_layer)"]
548     pub shader_output_layer: bool,
549     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderOutputViewportIndex)\n- Required by device extension: [`ext_shader_viewport_index_layer`](crate::device::DeviceExtensions::ext_shader_viewport_index_layer)"]
550     pub shader_output_viewport_index: bool,
551     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderResourceMinLod)"]
552     pub shader_resource_min_lod: bool,
553     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderResourceResidency)"]
554     pub shader_resource_residency: bool,
555     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-shaderSampleRateInterpolationFunctions)"]
556     pub shader_sample_rate_interpolation_functions: bool,
557     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderSampledImageArrayDynamicIndexing)"]
558     pub shader_sampled_image_array_dynamic_indexing: bool,
559     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderSampledImageArrayNonUniformIndexing)"]
560     pub shader_sampled_image_array_non_uniform_indexing: bool,
561     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat16AtomicAdd)"]
562     pub shader_shared_float16_atomic_add: bool,
563     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat16AtomicMinMax)"]
564     pub shader_shared_float16_atomic_min_max: bool,
565     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat16Atomics)"]
566     pub shader_shared_float16_atomics: bool,
567     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat32AtomicAdd)"]
568     pub shader_shared_float32_atomic_add: bool,
569     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat32AtomicMinMax)"]
570     pub shader_shared_float32_atomic_min_max: bool,
571     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat32Atomics)"]
572     pub shader_shared_float32_atomics: bool,
573     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat64AtomicAdd)"]
574     pub shader_shared_float64_atomic_add: bool,
575     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat64AtomicMinMax)"]
576     pub shader_shared_float64_atomic_min_max: bool,
577     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat64Atomics)"]
578     pub shader_shared_float64_atomics: bool,
579     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderSharedInt64Atomics)"]
580     pub shader_shared_int64_atomics: bool,
581     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html#features-shaderSMBuiltins)"]
582     pub shader_sm_builtins: bool,
583     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageBufferArrayDynamicIndexing)"]
584     pub shader_storage_buffer_array_dynamic_indexing: bool,
585     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageBufferArrayNonUniformIndexing)"]
586     pub shader_storage_buffer_array_non_uniform_indexing: bool,
587     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageArrayDynamicIndexing)"]
588     pub shader_storage_image_array_dynamic_indexing: bool,
589     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageImageArrayNonUniformIndexing)"]
590     pub shader_storage_image_array_non_uniform_indexing: bool,
591     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageExtendedFormats)"]
592     pub shader_storage_image_extended_formats: bool,
593     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageMultisample)"]
594     pub shader_storage_image_multisample: bool,
595     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageReadWithoutFormat)"]
596     pub shader_storage_image_read_without_format: bool,
597     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageWriteWithoutFormat)"]
598     pub shader_storage_image_write_without_format: bool,
599     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageTexelBufferArrayDynamicIndexing)"]
600     pub shader_storage_texel_buffer_array_dynamic_indexing: bool,
601     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageTexelBufferArrayNonUniformIndexing)"]
602     pub shader_storage_texel_buffer_array_non_uniform_indexing: bool,
603     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html#features-shaderSubgroupClock)"]
604     pub shader_subgroup_clock: bool,
605     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderSubgroupExtendedTypes)"]
606     pub shader_subgroup_extended_types: bool,
607     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html#features-shaderSubgroupUniformControlFlow)"]
608     pub shader_subgroup_uniform_control_flow: bool,
609     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderTerminateInvocation)"]
610     pub shader_terminate_invocation: bool,
611     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderTessellationAndGeometryPointSize)"]
612     pub shader_tessellation_and_geometry_point_size: bool,
613     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderUniformBufferArrayDynamicIndexing)"]
614     pub shader_uniform_buffer_array_dynamic_indexing: bool,
615     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderUniformBufferArrayNonUniformIndexing)"]
616     pub shader_uniform_buffer_array_non_uniform_indexing: bool,
617     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderUniformTexelBufferArrayDynamicIndexing)"]
618     pub shader_uniform_texel_buffer_array_dynamic_indexing: bool,
619     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderUniformTexelBufferArrayNonUniformIndexing)"]
620     pub shader_uniform_texel_buffer_array_non_uniform_indexing: bool,
621     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderZeroInitializeWorkgroupMemory)"]
622     pub shader_zero_initialize_workgroup_memory: bool,
623     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html#features-shadingRateCoarseSampleOrder)"]
624     pub shading_rate_coarse_sample_order: bool,
625     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html#features-shadingRateImage)\n- Conflicts with features: [`pipeline_fragment_shading_rate`](crate::device::Features::pipeline_fragment_shading_rate), [`primitive_fragment_shading_rate`](crate::device::Features::primitive_fragment_shading_rate), [`attachment_fragment_shading_rate`](crate::device::Features::attachment_fragment_shading_rate)"]
626     pub shading_rate_image: bool,
627     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-smoothLines)"]
628     pub smooth_lines: bool,
629     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseBinding)"]
630     pub sparse_binding: bool,
631     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-sparseImageFloat32AtomicAdd)\n- Requires feature: [`shader_image_float32_atomic_add`](crate::device::Features::shader_image_float32_atomic_add)"]
632     pub sparse_image_float32_atomic_add: bool,
633     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-sparseImageFloat32AtomicMinMax)\n- Requires feature: [`shader_image_float32_atomic_min_max`](crate::device::Features::shader_image_float32_atomic_min_max)"]
634     pub sparse_image_float32_atomic_min_max: bool,
635     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-sparseImageFloat32Atomics)\n- Requires feature: [`shader_image_float32_atomics`](crate::device::Features::shader_image_float32_atomics)"]
636     pub sparse_image_float32_atomics: bool,
637     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html#features-sparseImageInt64Atomics)\n- Requires feature: [`shader_image_int64_atomics`](crate::device::Features::shader_image_int64_atomics)"]
638     pub sparse_image_int64_atomics: bool,
639     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency16Samples)"]
640     pub sparse_residency16_samples: bool,
641     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency2Samples)"]
642     pub sparse_residency2_samples: bool,
643     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency4Samples)"]
644     pub sparse_residency4_samples: bool,
645     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency8Samples)"]
646     pub sparse_residency8_samples: bool,
647     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyAliased)"]
648     pub sparse_residency_aliased: bool,
649     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyBuffer)"]
650     pub sparse_residency_buffer: bool,
651     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyImage2D)"]
652     pub sparse_residency_image2_d: bool,
653     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyImage3D)"]
654     pub sparse_residency_image3_d: bool,
655     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-stippledBresenhamLines)"]
656     pub stippled_bresenham_lines: bool,
657     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-stippledRectangularLines)"]
658     pub stippled_rectangular_lines: bool,
659     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-stippledSmoothLines)"]
660     pub stippled_smooth_lines: bool,
661     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-storageBuffer16BitAccess)"]
662     pub storage_buffer16_bit_access: bool,
663     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-storageBuffer8BitAccess)"]
664     pub storage_buffer8_bit_access: bool,
665     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-storageInputOutput16)"]
666     pub storage_input_output16: bool,
667     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-storagePushConstant16)"]
668     pub storage_push_constant16: bool,
669     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-storagePushConstant8)"]
670     pub storage_push_constant8: bool,
671     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-subgroupBroadcastDynamicId)"]
672     pub subgroup_broadcast_dynamic_id: bool,
673     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-subgroupSizeControl)"]
674     pub subgroup_size_control: bool,
675     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.html#features-subpassMergeFeedback)"]
676     pub subpass_merge_feedback: bool,
677     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html#features-subpassShading)"]
678     pub subpass_shading: bool,
679     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html#features-supersampleFragmentShadingRates)"]
680     pub supersample_fragment_shading_rates: bool,
681     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.html#features-swapchainMaintenance1)"]
682     pub swapchain_maintenance1: bool,
683     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-synchronization2)"]
684     pub synchronization2: bool,
685     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-taskShader)"]
686     pub task_shader: bool,
687     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-tessellationIsolines)"]
688     pub tessellation_isolines: bool,
689     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-tessellationPointMode)"]
690     pub tessellation_point_mode: bool,
691     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-tessellationShader)"]
692     pub tessellation_shader: bool,
693     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html#features-texelBufferAlignment)"]
694     pub texel_buffer_alignment: bool,
695     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html#features-textureBlockMatch)"]
696     pub texture_block_match: bool,
697     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html#features-textureBoxFilter)"]
698     pub texture_box_filter: bool,
699     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-textureCompressionASTC_HDR)"]
700     pub texture_compression_astc_hdr: bool,
701     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-textureCompressionASTC_LDR)"]
702     pub texture_compression_astc_ldr: bool,
703     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-textureCompressionBC)"]
704     pub texture_compression_bc: bool,
705     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-textureCompressionETC2)"]
706     pub texture_compression_etc2: bool,
707     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html#features-textureSampleWeighted)"]
708     pub texture_sample_weighted: bool,
709     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTilePropertiesFeaturesQCOM.html#features-tileProperties)"]
710     pub tile_properties: bool,
711     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-timelineSemaphore)"]
712     pub timeline_semaphore: bool,
713     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html#features-transformFeedback)"]
714     pub transform_feedback: bool,
715     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html#features-transformFeedbackPreservesProvokingVertex)"]
716     pub transform_feedback_preserves_provoking_vertex: bool,
717     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-triangleFans)"]
718     pub triangle_fans: bool,
719     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-uniformAndStorageBuffer16BitAccess)"]
720     pub uniform_and_storage_buffer16_bit_access: bool,
721     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-uniformAndStorageBuffer8BitAccess)"]
722     pub uniform_and_storage_buffer8_bit_access: bool,
723     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-uniformBufferStandardLayout)"]
724     pub uniform_buffer_standard_layout: bool,
725     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-variableMultisampleRate)"]
726     pub variable_multisample_rate: bool,
727     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-variablePointers)"]
728     pub variable_pointers: bool,
729     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-variablePointersStorageBuffer)"]
730     pub variable_pointers_storage_buffer: bool,
731     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-vertexAttributeAccessBeyondStride)"]
732     pub vertex_attribute_access_beyond_stride: bool,
733     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html#features-vertexAttributeInstanceRateDivisor)"]
734     pub vertex_attribute_instance_rate_divisor: bool,
735     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html#features-vertexAttributeInstanceRateZeroDivisor)"]
736     pub vertex_attribute_instance_rate_zero_divisor: bool,
737     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html#features-vertexInputDynamicState)"]
738     pub vertex_input_dynamic_state: bool,
739     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-vertexPipelineStoresAndAtomics)"]
740     pub vertex_pipeline_stores_and_atomics: bool,
741     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-vulkanMemoryModel)"]
742     pub vulkan_memory_model: bool,
743     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-vulkanMemoryModelAvailabilityVisibilityChains)"]
744     pub vulkan_memory_model_availability_visibility_chains: bool,
745     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-vulkanMemoryModelDeviceScope)"]
746     pub vulkan_memory_model_device_scope: bool,
747     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-wideLines)"]
748     pub wide_lines: bool,
749     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayout)"]
750     pub workgroup_memory_explicit_layout: bool,
751     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayout16BitAccess)"]
752     pub workgroup_memory_explicit_layout16_bit_access: bool,
753     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayout8BitAccess)"]
754     pub workgroup_memory_explicit_layout8_bit_access: bool,
755     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayoutScalarBlockLayout)"]
756     pub workgroup_memory_explicit_layout_scalar_block_layout: bool,
757     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html#features-ycbcr2plane444Formats)"]
758     pub ycbcr2plane444_formats: bool,
759     #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html#features-ycbcrImageArrays)"]
760     pub ycbcr_image_arrays: bool,
761     pub _ne: crate::NonExhaustive,
762 }
763 impl Default for Features {
764     #[inline]
default() -> Self765     fn default() -> Self {
766         Self::empty()
767     }
768 }
769 impl Features {
770     #[doc = r" Checks enabled features against the device version, device extensions and each"]
771     #[doc = r" other."]
check_requirements( &self, supported: &Features, api_version: crate::Version, extensions: &crate::device::DeviceExtensions, ) -> Result<(), crate::device::FeatureRestrictionError>772     pub(super) fn check_requirements(
773         &self,
774         supported: &Features,
775         api_version: crate::Version,
776         extensions: &crate::device::DeviceExtensions,
777     ) -> Result<(), crate::device::FeatureRestrictionError> {
778         if self.acceleration_structure {
779             if !supported.acceleration_structure {
780                 return Err(crate::device::FeatureRestrictionError {
781                     feature: "acceleration_structure",
782                     restriction: crate::device::FeatureRestriction::NotSupported,
783                 });
784             }
785         } else {
786         }
787         if self.acceleration_structure_capture_replay {
788             if !supported.acceleration_structure_capture_replay {
789                 return Err(crate::device::FeatureRestrictionError {
790                     feature: "acceleration_structure_capture_replay",
791                     restriction: crate::device::FeatureRestriction::NotSupported,
792                 });
793             }
794         } else {
795         }
796         if self.acceleration_structure_host_commands {
797             if !supported.acceleration_structure_host_commands {
798                 return Err(crate::device::FeatureRestrictionError {
799                     feature: "acceleration_structure_host_commands",
800                     restriction: crate::device::FeatureRestriction::NotSupported,
801                 });
802             }
803         } else {
804         }
805         if self.acceleration_structure_indirect_build {
806             if !supported.acceleration_structure_indirect_build {
807                 return Err(crate::device::FeatureRestrictionError {
808                     feature: "acceleration_structure_indirect_build",
809                     restriction: crate::device::FeatureRestriction::NotSupported,
810                 });
811             }
812         } else {
813         }
814         if self.advanced_blend_coherent_operations {
815             if !supported.advanced_blend_coherent_operations {
816                 return Err(crate::device::FeatureRestrictionError {
817                     feature: "advanced_blend_coherent_operations",
818                     restriction: crate::device::FeatureRestriction::NotSupported,
819                 });
820             }
821         } else {
822         }
823         if self.alpha_to_one {
824             if !supported.alpha_to_one {
825                 return Err(crate::device::FeatureRestrictionError {
826                     feature: "alpha_to_one",
827                     restriction: crate::device::FeatureRestriction::NotSupported,
828                 });
829             }
830         } else {
831         }
832         if self.amigo_profiling {
833             if !supported.amigo_profiling {
834                 return Err(crate::device::FeatureRestrictionError {
835                     feature: "amigo_profiling",
836                     restriction: crate::device::FeatureRestriction::NotSupported,
837                 });
838             }
839         } else {
840         }
841         if self.attachment_feedback_loop_layout {
842             if !supported.attachment_feedback_loop_layout {
843                 return Err(crate::device::FeatureRestrictionError {
844                     feature: "attachment_feedback_loop_layout",
845                     restriction: crate::device::FeatureRestriction::NotSupported,
846                 });
847             }
848         } else {
849         }
850         if self.attachment_fragment_shading_rate {
851             if !supported.attachment_fragment_shading_rate {
852                 return Err(crate::device::FeatureRestrictionError {
853                     feature: "attachment_fragment_shading_rate",
854                     restriction: crate::device::FeatureRestriction::NotSupported,
855                 });
856             }
857             if self.shading_rate_image {
858                 return Err(crate::device::FeatureRestrictionError {
859                     feature: "attachment_fragment_shading_rate",
860                     restriction: crate::device::FeatureRestriction::ConflictsFeature(
861                         "shading_rate_image",
862                     ),
863                 });
864             }
865             if self.fragment_density_map {
866                 return Err(crate::device::FeatureRestrictionError {
867                     feature: "attachment_fragment_shading_rate",
868                     restriction: crate::device::FeatureRestriction::ConflictsFeature(
869                         "fragment_density_map",
870                     ),
871                 });
872             }
873         } else {
874         }
875         if self.border_color_swizzle {
876             if !supported.border_color_swizzle {
877                 return Err(crate::device::FeatureRestrictionError {
878                     feature: "border_color_swizzle",
879                     restriction: crate::device::FeatureRestriction::NotSupported,
880                 });
881             }
882         } else {
883         }
884         if self.border_color_swizzle_from_image {
885             if !supported.border_color_swizzle_from_image {
886                 return Err(crate::device::FeatureRestrictionError {
887                     feature: "border_color_swizzle_from_image",
888                     restriction: crate::device::FeatureRestriction::NotSupported,
889                 });
890             }
891         } else {
892         }
893         if self.bresenham_lines {
894             if !supported.bresenham_lines {
895                 return Err(crate::device::FeatureRestrictionError {
896                     feature: "bresenham_lines",
897                     restriction: crate::device::FeatureRestriction::NotSupported,
898                 });
899             }
900         } else {
901         }
902         if self.buffer_device_address {
903             if !supported.buffer_device_address {
904                 return Err(crate::device::FeatureRestrictionError {
905                     feature: "buffer_device_address",
906                     restriction: crate::device::FeatureRestriction::NotSupported,
907                 });
908             }
909         } else {
910         }
911         if self.buffer_device_address_capture_replay {
912             if !supported.buffer_device_address_capture_replay {
913                 return Err(crate::device::FeatureRestrictionError {
914                     feature: "buffer_device_address_capture_replay",
915                     restriction: crate::device::FeatureRestriction::NotSupported,
916                 });
917             }
918         } else {
919         }
920         if self.buffer_device_address_multi_device {
921             if !supported.buffer_device_address_multi_device {
922                 return Err(crate::device::FeatureRestrictionError {
923                     feature: "buffer_device_address_multi_device",
924                     restriction: crate::device::FeatureRestriction::NotSupported,
925                 });
926             }
927         } else {
928         }
929         if self.color_write_enable {
930             if !supported.color_write_enable {
931                 return Err(crate::device::FeatureRestrictionError {
932                     feature: "color_write_enable",
933                     restriction: crate::device::FeatureRestriction::NotSupported,
934                 });
935             }
936         } else {
937         }
938         if self.compute_derivative_group_linear {
939             if !supported.compute_derivative_group_linear {
940                 return Err(crate::device::FeatureRestrictionError {
941                     feature: "compute_derivative_group_linear",
942                     restriction: crate::device::FeatureRestriction::NotSupported,
943                 });
944             }
945         } else {
946         }
947         if self.compute_derivative_group_quads {
948             if !supported.compute_derivative_group_quads {
949                 return Err(crate::device::FeatureRestrictionError {
950                     feature: "compute_derivative_group_quads",
951                     restriction: crate::device::FeatureRestriction::NotSupported,
952                 });
953             }
954         } else {
955         }
956         if self.compute_full_subgroups {
957             if !supported.compute_full_subgroups {
958                 return Err(crate::device::FeatureRestrictionError {
959                     feature: "compute_full_subgroups",
960                     restriction: crate::device::FeatureRestriction::NotSupported,
961                 });
962             }
963         } else {
964         }
965         if self.conditional_rendering {
966             if !supported.conditional_rendering {
967                 return Err(crate::device::FeatureRestrictionError {
968                     feature: "conditional_rendering",
969                     restriction: crate::device::FeatureRestriction::NotSupported,
970                 });
971             }
972         } else {
973         }
974         if self.constant_alpha_color_blend_factors {
975             if !supported.constant_alpha_color_blend_factors {
976                 return Err(crate::device::FeatureRestrictionError {
977                     feature: "constant_alpha_color_blend_factors",
978                     restriction: crate::device::FeatureRestriction::NotSupported,
979                 });
980             }
981         } else {
982         }
983         if self.cooperative_matrix {
984             if !supported.cooperative_matrix {
985                 return Err(crate::device::FeatureRestrictionError {
986                     feature: "cooperative_matrix",
987                     restriction: crate::device::FeatureRestriction::NotSupported,
988                 });
989             }
990         } else {
991         }
992         if self.cooperative_matrix_robust_buffer_access {
993             if !supported.cooperative_matrix_robust_buffer_access {
994                 return Err(crate::device::FeatureRestrictionError {
995                     feature: "cooperative_matrix_robust_buffer_access",
996                     restriction: crate::device::FeatureRestriction::NotSupported,
997                 });
998             }
999         } else {
1000         }
1001         if self.corner_sampled_image {
1002             if !supported.corner_sampled_image {
1003                 return Err(crate::device::FeatureRestrictionError {
1004                     feature: "corner_sampled_image",
1005                     restriction: crate::device::FeatureRestriction::NotSupported,
1006                 });
1007             }
1008         } else {
1009         }
1010         if self.coverage_reduction_mode {
1011             if !supported.coverage_reduction_mode {
1012                 return Err(crate::device::FeatureRestrictionError {
1013                     feature: "coverage_reduction_mode",
1014                     restriction: crate::device::FeatureRestriction::NotSupported,
1015                 });
1016             }
1017         } else {
1018         }
1019         if self.custom_border_color_without_format {
1020             if !supported.custom_border_color_without_format {
1021                 return Err(crate::device::FeatureRestrictionError {
1022                     feature: "custom_border_color_without_format",
1023                     restriction: crate::device::FeatureRestriction::NotSupported,
1024                 });
1025             }
1026         } else {
1027         }
1028         if self.custom_border_colors {
1029             if !supported.custom_border_colors {
1030                 return Err(crate::device::FeatureRestrictionError {
1031                     feature: "custom_border_colors",
1032                     restriction: crate::device::FeatureRestriction::NotSupported,
1033                 });
1034             }
1035         } else {
1036         }
1037         if self.decode_mode_shared_exponent {
1038             if !supported.decode_mode_shared_exponent {
1039                 return Err(crate::device::FeatureRestrictionError {
1040                     feature: "decode_mode_shared_exponent",
1041                     restriction: crate::device::FeatureRestriction::NotSupported,
1042                 });
1043             }
1044         } else {
1045         }
1046         if self.dedicated_allocation_image_aliasing {
1047             if !supported.dedicated_allocation_image_aliasing {
1048                 return Err(crate::device::FeatureRestrictionError {
1049                     feature: "dedicated_allocation_image_aliasing",
1050                     restriction: crate::device::FeatureRestriction::NotSupported,
1051                 });
1052             }
1053         } else {
1054         }
1055         if self.depth_bias_clamp {
1056             if !supported.depth_bias_clamp {
1057                 return Err(crate::device::FeatureRestrictionError {
1058                     feature: "depth_bias_clamp",
1059                     restriction: crate::device::FeatureRestriction::NotSupported,
1060                 });
1061             }
1062         } else {
1063         }
1064         if self.depth_bounds {
1065             if !supported.depth_bounds {
1066                 return Err(crate::device::FeatureRestrictionError {
1067                     feature: "depth_bounds",
1068                     restriction: crate::device::FeatureRestriction::NotSupported,
1069                 });
1070             }
1071         } else {
1072         }
1073         if self.depth_clamp {
1074             if !supported.depth_clamp {
1075                 return Err(crate::device::FeatureRestrictionError {
1076                     feature: "depth_clamp",
1077                     restriction: crate::device::FeatureRestriction::NotSupported,
1078                 });
1079             }
1080         } else {
1081         }
1082         if self.depth_clamp_zero_one {
1083             if !supported.depth_clamp_zero_one {
1084                 return Err(crate::device::FeatureRestrictionError {
1085                     feature: "depth_clamp_zero_one",
1086                     restriction: crate::device::FeatureRestriction::NotSupported,
1087                 });
1088             }
1089         } else {
1090         }
1091         if self.depth_clip_control {
1092             if !supported.depth_clip_control {
1093                 return Err(crate::device::FeatureRestrictionError {
1094                     feature: "depth_clip_control",
1095                     restriction: crate::device::FeatureRestriction::NotSupported,
1096                 });
1097             }
1098         } else {
1099         }
1100         if self.depth_clip_enable {
1101             if !supported.depth_clip_enable {
1102                 return Err(crate::device::FeatureRestrictionError {
1103                     feature: "depth_clip_enable",
1104                     restriction: crate::device::FeatureRestriction::NotSupported,
1105                 });
1106             }
1107         } else {
1108         }
1109         if self.descriptor_binding_acceleration_structure_update_after_bind {
1110             if !supported.descriptor_binding_acceleration_structure_update_after_bind {
1111                 return Err(crate::device::FeatureRestrictionError {
1112                     feature: "descriptor_binding_acceleration_structure_update_after_bind",
1113                     restriction: crate::device::FeatureRestriction::NotSupported,
1114                 });
1115             }
1116         } else {
1117         }
1118         if self.descriptor_binding_inline_uniform_block_update_after_bind {
1119             if !supported.descriptor_binding_inline_uniform_block_update_after_bind {
1120                 return Err(crate::device::FeatureRestrictionError {
1121                     feature: "descriptor_binding_inline_uniform_block_update_after_bind",
1122                     restriction: crate::device::FeatureRestriction::NotSupported,
1123                 });
1124             }
1125         } else {
1126         }
1127         if self.descriptor_binding_partially_bound {
1128             if !supported.descriptor_binding_partially_bound {
1129                 return Err(crate::device::FeatureRestrictionError {
1130                     feature: "descriptor_binding_partially_bound",
1131                     restriction: crate::device::FeatureRestriction::NotSupported,
1132                 });
1133             }
1134         } else {
1135         }
1136         if self.descriptor_binding_sampled_image_update_after_bind {
1137             if !supported.descriptor_binding_sampled_image_update_after_bind {
1138                 return Err(crate::device::FeatureRestrictionError {
1139                     feature: "descriptor_binding_sampled_image_update_after_bind",
1140                     restriction: crate::device::FeatureRestriction::NotSupported,
1141                 });
1142             }
1143         } else {
1144         }
1145         if self.descriptor_binding_storage_buffer_update_after_bind {
1146             if !supported.descriptor_binding_storage_buffer_update_after_bind {
1147                 return Err(crate::device::FeatureRestrictionError {
1148                     feature: "descriptor_binding_storage_buffer_update_after_bind",
1149                     restriction: crate::device::FeatureRestriction::NotSupported,
1150                 });
1151             }
1152         } else {
1153         }
1154         if self.descriptor_binding_storage_image_update_after_bind {
1155             if !supported.descriptor_binding_storage_image_update_after_bind {
1156                 return Err(crate::device::FeatureRestrictionError {
1157                     feature: "descriptor_binding_storage_image_update_after_bind",
1158                     restriction: crate::device::FeatureRestriction::NotSupported,
1159                 });
1160             }
1161         } else {
1162         }
1163         if self.descriptor_binding_storage_texel_buffer_update_after_bind {
1164             if !supported.descriptor_binding_storage_texel_buffer_update_after_bind {
1165                 return Err(crate::device::FeatureRestrictionError {
1166                     feature: "descriptor_binding_storage_texel_buffer_update_after_bind",
1167                     restriction: crate::device::FeatureRestriction::NotSupported,
1168                 });
1169             }
1170         } else {
1171         }
1172         if self.descriptor_binding_uniform_buffer_update_after_bind {
1173             if !supported.descriptor_binding_uniform_buffer_update_after_bind {
1174                 return Err(crate::device::FeatureRestrictionError {
1175                     feature: "descriptor_binding_uniform_buffer_update_after_bind",
1176                     restriction: crate::device::FeatureRestriction::NotSupported,
1177                 });
1178             }
1179         } else {
1180         }
1181         if self.descriptor_binding_uniform_texel_buffer_update_after_bind {
1182             if !supported.descriptor_binding_uniform_texel_buffer_update_after_bind {
1183                 return Err(crate::device::FeatureRestrictionError {
1184                     feature: "descriptor_binding_uniform_texel_buffer_update_after_bind",
1185                     restriction: crate::device::FeatureRestriction::NotSupported,
1186                 });
1187             }
1188         } else {
1189         }
1190         if self.descriptor_binding_update_unused_while_pending {
1191             if !supported.descriptor_binding_update_unused_while_pending {
1192                 return Err(crate::device::FeatureRestrictionError {
1193                     feature: "descriptor_binding_update_unused_while_pending",
1194                     restriction: crate::device::FeatureRestriction::NotSupported,
1195                 });
1196             }
1197         } else {
1198         }
1199         if self.descriptor_binding_variable_descriptor_count {
1200             if !supported.descriptor_binding_variable_descriptor_count {
1201                 return Err(crate::device::FeatureRestrictionError {
1202                     feature: "descriptor_binding_variable_descriptor_count",
1203                     restriction: crate::device::FeatureRestriction::NotSupported,
1204                 });
1205             }
1206         } else {
1207         }
1208         if self.descriptor_buffer {
1209             if !supported.descriptor_buffer {
1210                 return Err(crate::device::FeatureRestrictionError {
1211                     feature: "descriptor_buffer",
1212                     restriction: crate::device::FeatureRestriction::NotSupported,
1213                 });
1214             }
1215         } else {
1216         }
1217         if self.descriptor_buffer_capture_replay {
1218             if !supported.descriptor_buffer_capture_replay {
1219                 return Err(crate::device::FeatureRestrictionError {
1220                     feature: "descriptor_buffer_capture_replay",
1221                     restriction: crate::device::FeatureRestriction::NotSupported,
1222                 });
1223             }
1224         } else {
1225         }
1226         if self.descriptor_buffer_image_layout_ignored {
1227             if !supported.descriptor_buffer_image_layout_ignored {
1228                 return Err(crate::device::FeatureRestrictionError {
1229                     feature: "descriptor_buffer_image_layout_ignored",
1230                     restriction: crate::device::FeatureRestriction::NotSupported,
1231                 });
1232             }
1233         } else {
1234         }
1235         if self.descriptor_buffer_push_descriptors {
1236             if !supported.descriptor_buffer_push_descriptors {
1237                 return Err(crate::device::FeatureRestrictionError {
1238                     feature: "descriptor_buffer_push_descriptors",
1239                     restriction: crate::device::FeatureRestriction::NotSupported,
1240                 });
1241             }
1242         } else {
1243         }
1244         if self.descriptor_indexing {
1245             if !supported.descriptor_indexing {
1246                 return Err(crate::device::FeatureRestrictionError {
1247                     feature: "descriptor_indexing",
1248                     restriction: crate::device::FeatureRestriction::NotSupported,
1249                 });
1250             }
1251         } else {
1252             if extensions.ext_descriptor_indexing && api_version >= crate::Version::V1_2 {
1253                 return Err(crate::device::FeatureRestrictionError {
1254                     feature: "descriptor_indexing",
1255                     restriction: crate::device::FeatureRestriction::RequiredByExtension(
1256                         "ext_descriptor_indexing",
1257                     ),
1258                 });
1259             }
1260         }
1261         if self.descriptor_set_host_mapping {
1262             if !supported.descriptor_set_host_mapping {
1263                 return Err(crate::device::FeatureRestrictionError {
1264                     feature: "descriptor_set_host_mapping",
1265                     restriction: crate::device::FeatureRestriction::NotSupported,
1266                 });
1267             }
1268         } else {
1269         }
1270         if self.device_coherent_memory {
1271             if !supported.device_coherent_memory {
1272                 return Err(crate::device::FeatureRestrictionError {
1273                     feature: "device_coherent_memory",
1274                     restriction: crate::device::FeatureRestriction::NotSupported,
1275                 });
1276             }
1277         } else {
1278         }
1279         if self.device_fault {
1280             if !supported.device_fault {
1281                 return Err(crate::device::FeatureRestrictionError {
1282                     feature: "device_fault",
1283                     restriction: crate::device::FeatureRestriction::NotSupported,
1284                 });
1285             }
1286         } else {
1287         }
1288         if self.device_fault_vendor_binary {
1289             if !supported.device_fault_vendor_binary {
1290                 return Err(crate::device::FeatureRestrictionError {
1291                     feature: "device_fault_vendor_binary",
1292                     restriction: crate::device::FeatureRestriction::NotSupported,
1293                 });
1294             }
1295         } else {
1296         }
1297         if self.device_generated_commands {
1298             if !supported.device_generated_commands {
1299                 return Err(crate::device::FeatureRestrictionError {
1300                     feature: "device_generated_commands",
1301                     restriction: crate::device::FeatureRestriction::NotSupported,
1302                 });
1303             }
1304         } else {
1305         }
1306         if self.device_memory_report {
1307             if !supported.device_memory_report {
1308                 return Err(crate::device::FeatureRestrictionError {
1309                     feature: "device_memory_report",
1310                     restriction: crate::device::FeatureRestriction::NotSupported,
1311                 });
1312             }
1313         } else {
1314         }
1315         if self.diagnostics_config {
1316             if !supported.diagnostics_config {
1317                 return Err(crate::device::FeatureRestrictionError {
1318                     feature: "diagnostics_config",
1319                     restriction: crate::device::FeatureRestriction::NotSupported,
1320                 });
1321             }
1322         } else {
1323         }
1324         if self.draw_indirect_count {
1325             if !supported.draw_indirect_count {
1326                 return Err(crate::device::FeatureRestrictionError {
1327                     feature: "draw_indirect_count",
1328                     restriction: crate::device::FeatureRestriction::NotSupported,
1329                 });
1330             }
1331         } else {
1332             if extensions.khr_draw_indirect_count && api_version >= crate::Version::V1_2 {
1333                 return Err(crate::device::FeatureRestrictionError {
1334                     feature: "draw_indirect_count",
1335                     restriction: crate::device::FeatureRestriction::RequiredByExtension(
1336                         "khr_draw_indirect_count",
1337                     ),
1338                 });
1339             }
1340         }
1341         if self.draw_indirect_first_instance {
1342             if !supported.draw_indirect_first_instance {
1343                 return Err(crate::device::FeatureRestrictionError {
1344                     feature: "draw_indirect_first_instance",
1345                     restriction: crate::device::FeatureRestriction::NotSupported,
1346                 });
1347             }
1348         } else {
1349         }
1350         if self.dual_src_blend {
1351             if !supported.dual_src_blend {
1352                 return Err(crate::device::FeatureRestrictionError {
1353                     feature: "dual_src_blend",
1354                     restriction: crate::device::FeatureRestriction::NotSupported,
1355                 });
1356             }
1357         } else {
1358         }
1359         if self.dynamic_rendering {
1360             if !supported.dynamic_rendering {
1361                 return Err(crate::device::FeatureRestrictionError {
1362                     feature: "dynamic_rendering",
1363                     restriction: crate::device::FeatureRestriction::NotSupported,
1364                 });
1365             }
1366         } else {
1367         }
1368         if self.events {
1369             if !supported.events {
1370                 return Err(crate::device::FeatureRestrictionError {
1371                     feature: "events",
1372                     restriction: crate::device::FeatureRestriction::NotSupported,
1373                 });
1374             }
1375         } else {
1376         }
1377         if self.exclusive_scissor {
1378             if !supported.exclusive_scissor {
1379                 return Err(crate::device::FeatureRestrictionError {
1380                     feature: "exclusive_scissor",
1381                     restriction: crate::device::FeatureRestriction::NotSupported,
1382                 });
1383             }
1384         } else {
1385         }
1386         if self.extended_dynamic_state {
1387             if !supported.extended_dynamic_state {
1388                 return Err(crate::device::FeatureRestrictionError {
1389                     feature: "extended_dynamic_state",
1390                     restriction: crate::device::FeatureRestriction::NotSupported,
1391                 });
1392             }
1393         } else {
1394         }
1395         if self.extended_dynamic_state2 {
1396             if !supported.extended_dynamic_state2 {
1397                 return Err(crate::device::FeatureRestrictionError {
1398                     feature: "extended_dynamic_state2",
1399                     restriction: crate::device::FeatureRestriction::NotSupported,
1400                 });
1401             }
1402         } else {
1403         }
1404         if self.extended_dynamic_state2_logic_op {
1405             if !supported.extended_dynamic_state2_logic_op {
1406                 return Err(crate::device::FeatureRestrictionError {
1407                     feature: "extended_dynamic_state2_logic_op",
1408                     restriction: crate::device::FeatureRestriction::NotSupported,
1409                 });
1410             }
1411         } else {
1412         }
1413         if self.extended_dynamic_state2_patch_control_points {
1414             if !supported.extended_dynamic_state2_patch_control_points {
1415                 return Err(crate::device::FeatureRestrictionError {
1416                     feature: "extended_dynamic_state2_patch_control_points",
1417                     restriction: crate::device::FeatureRestriction::NotSupported,
1418                 });
1419             }
1420         } else {
1421         }
1422         if self.extended_dynamic_state3_alpha_to_coverage_enable {
1423             if !supported.extended_dynamic_state3_alpha_to_coverage_enable {
1424                 return Err(crate::device::FeatureRestrictionError {
1425                     feature: "extended_dynamic_state3_alpha_to_coverage_enable",
1426                     restriction: crate::device::FeatureRestriction::NotSupported,
1427                 });
1428             }
1429         } else {
1430         }
1431         if self.extended_dynamic_state3_alpha_to_one_enable {
1432             if !supported.extended_dynamic_state3_alpha_to_one_enable {
1433                 return Err(crate::device::FeatureRestrictionError {
1434                     feature: "extended_dynamic_state3_alpha_to_one_enable",
1435                     restriction: crate::device::FeatureRestriction::NotSupported,
1436                 });
1437             }
1438         } else {
1439         }
1440         if self.extended_dynamic_state3_color_blend_advanced {
1441             if !supported.extended_dynamic_state3_color_blend_advanced {
1442                 return Err(crate::device::FeatureRestrictionError {
1443                     feature: "extended_dynamic_state3_color_blend_advanced",
1444                     restriction: crate::device::FeatureRestriction::NotSupported,
1445                 });
1446             }
1447         } else {
1448         }
1449         if self.extended_dynamic_state3_color_blend_enable {
1450             if !supported.extended_dynamic_state3_color_blend_enable {
1451                 return Err(crate::device::FeatureRestrictionError {
1452                     feature: "extended_dynamic_state3_color_blend_enable",
1453                     restriction: crate::device::FeatureRestriction::NotSupported,
1454                 });
1455             }
1456         } else {
1457         }
1458         if self.extended_dynamic_state3_color_blend_equation {
1459             if !supported.extended_dynamic_state3_color_blend_equation {
1460                 return Err(crate::device::FeatureRestrictionError {
1461                     feature: "extended_dynamic_state3_color_blend_equation",
1462                     restriction: crate::device::FeatureRestriction::NotSupported,
1463                 });
1464             }
1465         } else {
1466         }
1467         if self.extended_dynamic_state3_color_write_mask {
1468             if !supported.extended_dynamic_state3_color_write_mask {
1469                 return Err(crate::device::FeatureRestrictionError {
1470                     feature: "extended_dynamic_state3_color_write_mask",
1471                     restriction: crate::device::FeatureRestriction::NotSupported,
1472                 });
1473             }
1474         } else {
1475         }
1476         if self.extended_dynamic_state3_conservative_rasterization_mode {
1477             if !supported.extended_dynamic_state3_conservative_rasterization_mode {
1478                 return Err(crate::device::FeatureRestrictionError {
1479                     feature: "extended_dynamic_state3_conservative_rasterization_mode",
1480                     restriction: crate::device::FeatureRestriction::NotSupported,
1481                 });
1482             }
1483         } else {
1484         }
1485         if self.extended_dynamic_state3_coverage_modulation_mode {
1486             if !supported.extended_dynamic_state3_coverage_modulation_mode {
1487                 return Err(crate::device::FeatureRestrictionError {
1488                     feature: "extended_dynamic_state3_coverage_modulation_mode",
1489                     restriction: crate::device::FeatureRestriction::NotSupported,
1490                 });
1491             }
1492         } else {
1493         }
1494         if self.extended_dynamic_state3_coverage_modulation_table {
1495             if !supported.extended_dynamic_state3_coverage_modulation_table {
1496                 return Err(crate::device::FeatureRestrictionError {
1497                     feature: "extended_dynamic_state3_coverage_modulation_table",
1498                     restriction: crate::device::FeatureRestriction::NotSupported,
1499                 });
1500             }
1501         } else {
1502         }
1503         if self.extended_dynamic_state3_coverage_modulation_table_enable {
1504             if !supported.extended_dynamic_state3_coverage_modulation_table_enable {
1505                 return Err(crate::device::FeatureRestrictionError {
1506                     feature: "extended_dynamic_state3_coverage_modulation_table_enable",
1507                     restriction: crate::device::FeatureRestriction::NotSupported,
1508                 });
1509             }
1510         } else {
1511         }
1512         if self.extended_dynamic_state3_coverage_reduction_mode {
1513             if !supported.extended_dynamic_state3_coverage_reduction_mode {
1514                 return Err(crate::device::FeatureRestrictionError {
1515                     feature: "extended_dynamic_state3_coverage_reduction_mode",
1516                     restriction: crate::device::FeatureRestriction::NotSupported,
1517                 });
1518             }
1519         } else {
1520         }
1521         if self.extended_dynamic_state3_coverage_to_color_enable {
1522             if !supported.extended_dynamic_state3_coverage_to_color_enable {
1523                 return Err(crate::device::FeatureRestrictionError {
1524                     feature: "extended_dynamic_state3_coverage_to_color_enable",
1525                     restriction: crate::device::FeatureRestriction::NotSupported,
1526                 });
1527             }
1528         } else {
1529         }
1530         if self.extended_dynamic_state3_coverage_to_color_location {
1531             if !supported.extended_dynamic_state3_coverage_to_color_location {
1532                 return Err(crate::device::FeatureRestrictionError {
1533                     feature: "extended_dynamic_state3_coverage_to_color_location",
1534                     restriction: crate::device::FeatureRestriction::NotSupported,
1535                 });
1536             }
1537         } else {
1538         }
1539         if self.extended_dynamic_state3_depth_clamp_enable {
1540             if !supported.extended_dynamic_state3_depth_clamp_enable {
1541                 return Err(crate::device::FeatureRestrictionError {
1542                     feature: "extended_dynamic_state3_depth_clamp_enable",
1543                     restriction: crate::device::FeatureRestriction::NotSupported,
1544                 });
1545             }
1546         } else {
1547         }
1548         if self.extended_dynamic_state3_depth_clip_enable {
1549             if !supported.extended_dynamic_state3_depth_clip_enable {
1550                 return Err(crate::device::FeatureRestrictionError {
1551                     feature: "extended_dynamic_state3_depth_clip_enable",
1552                     restriction: crate::device::FeatureRestriction::NotSupported,
1553                 });
1554             }
1555         } else {
1556         }
1557         if self.extended_dynamic_state3_depth_clip_negative_one_to_one {
1558             if !supported.extended_dynamic_state3_depth_clip_negative_one_to_one {
1559                 return Err(crate::device::FeatureRestrictionError {
1560                     feature: "extended_dynamic_state3_depth_clip_negative_one_to_one",
1561                     restriction: crate::device::FeatureRestriction::NotSupported,
1562                 });
1563             }
1564         } else {
1565         }
1566         if self.extended_dynamic_state3_extra_primitive_overestimation_size {
1567             if !supported.extended_dynamic_state3_extra_primitive_overestimation_size {
1568                 return Err(crate::device::FeatureRestrictionError {
1569                     feature: "extended_dynamic_state3_extra_primitive_overestimation_size",
1570                     restriction: crate::device::FeatureRestriction::NotSupported,
1571                 });
1572             }
1573         } else {
1574         }
1575         if self.extended_dynamic_state3_line_rasterization_mode {
1576             if !supported.extended_dynamic_state3_line_rasterization_mode {
1577                 return Err(crate::device::FeatureRestrictionError {
1578                     feature: "extended_dynamic_state3_line_rasterization_mode",
1579                     restriction: crate::device::FeatureRestriction::NotSupported,
1580                 });
1581             }
1582         } else {
1583         }
1584         if self.extended_dynamic_state3_line_stipple_enable {
1585             if !supported.extended_dynamic_state3_line_stipple_enable {
1586                 return Err(crate::device::FeatureRestrictionError {
1587                     feature: "extended_dynamic_state3_line_stipple_enable",
1588                     restriction: crate::device::FeatureRestriction::NotSupported,
1589                 });
1590             }
1591         } else {
1592         }
1593         if self.extended_dynamic_state3_logic_op_enable {
1594             if !supported.extended_dynamic_state3_logic_op_enable {
1595                 return Err(crate::device::FeatureRestrictionError {
1596                     feature: "extended_dynamic_state3_logic_op_enable",
1597                     restriction: crate::device::FeatureRestriction::NotSupported,
1598                 });
1599             }
1600         } else {
1601         }
1602         if self.extended_dynamic_state3_polygon_mode {
1603             if !supported.extended_dynamic_state3_polygon_mode {
1604                 return Err(crate::device::FeatureRestrictionError {
1605                     feature: "extended_dynamic_state3_polygon_mode",
1606                     restriction: crate::device::FeatureRestriction::NotSupported,
1607                 });
1608             }
1609         } else {
1610         }
1611         if self.extended_dynamic_state3_provoking_vertex_mode {
1612             if !supported.extended_dynamic_state3_provoking_vertex_mode {
1613                 return Err(crate::device::FeatureRestrictionError {
1614                     feature: "extended_dynamic_state3_provoking_vertex_mode",
1615                     restriction: crate::device::FeatureRestriction::NotSupported,
1616                 });
1617             }
1618         } else {
1619         }
1620         if self.extended_dynamic_state3_rasterization_samples {
1621             if !supported.extended_dynamic_state3_rasterization_samples {
1622                 return Err(crate::device::FeatureRestrictionError {
1623                     feature: "extended_dynamic_state3_rasterization_samples",
1624                     restriction: crate::device::FeatureRestriction::NotSupported,
1625                 });
1626             }
1627         } else {
1628         }
1629         if self.extended_dynamic_state3_rasterization_stream {
1630             if !supported.extended_dynamic_state3_rasterization_stream {
1631                 return Err(crate::device::FeatureRestrictionError {
1632                     feature: "extended_dynamic_state3_rasterization_stream",
1633                     restriction: crate::device::FeatureRestriction::NotSupported,
1634                 });
1635             }
1636         } else {
1637         }
1638         if self.extended_dynamic_state3_representative_fragment_test_enable {
1639             if !supported.extended_dynamic_state3_representative_fragment_test_enable {
1640                 return Err(crate::device::FeatureRestrictionError {
1641                     feature: "extended_dynamic_state3_representative_fragment_test_enable",
1642                     restriction: crate::device::FeatureRestriction::NotSupported,
1643                 });
1644             }
1645         } else {
1646         }
1647         if self.extended_dynamic_state3_sample_locations_enable {
1648             if !supported.extended_dynamic_state3_sample_locations_enable {
1649                 return Err(crate::device::FeatureRestrictionError {
1650                     feature: "extended_dynamic_state3_sample_locations_enable",
1651                     restriction: crate::device::FeatureRestriction::NotSupported,
1652                 });
1653             }
1654         } else {
1655         }
1656         if self.extended_dynamic_state3_sample_mask {
1657             if !supported.extended_dynamic_state3_sample_mask {
1658                 return Err(crate::device::FeatureRestrictionError {
1659                     feature: "extended_dynamic_state3_sample_mask",
1660                     restriction: crate::device::FeatureRestriction::NotSupported,
1661                 });
1662             }
1663         } else {
1664         }
1665         if self.extended_dynamic_state3_shading_rate_image_enable {
1666             if !supported.extended_dynamic_state3_shading_rate_image_enable {
1667                 return Err(crate::device::FeatureRestrictionError {
1668                     feature: "extended_dynamic_state3_shading_rate_image_enable",
1669                     restriction: crate::device::FeatureRestriction::NotSupported,
1670                 });
1671             }
1672         } else {
1673         }
1674         if self.extended_dynamic_state3_tessellation_domain_origin {
1675             if !supported.extended_dynamic_state3_tessellation_domain_origin {
1676                 return Err(crate::device::FeatureRestrictionError {
1677                     feature: "extended_dynamic_state3_tessellation_domain_origin",
1678                     restriction: crate::device::FeatureRestriction::NotSupported,
1679                 });
1680             }
1681         } else {
1682         }
1683         if self.extended_dynamic_state3_viewport_swizzle {
1684             if !supported.extended_dynamic_state3_viewport_swizzle {
1685                 return Err(crate::device::FeatureRestrictionError {
1686                     feature: "extended_dynamic_state3_viewport_swizzle",
1687                     restriction: crate::device::FeatureRestriction::NotSupported,
1688                 });
1689             }
1690         } else {
1691         }
1692         if self.extended_dynamic_state3_viewport_w_scaling_enable {
1693             if !supported.extended_dynamic_state3_viewport_w_scaling_enable {
1694                 return Err(crate::device::FeatureRestrictionError {
1695                     feature: "extended_dynamic_state3_viewport_w_scaling_enable",
1696                     restriction: crate::device::FeatureRestriction::NotSupported,
1697                 });
1698             }
1699         } else {
1700         }
1701         if self.external_memory_rdma {
1702             if !supported.external_memory_rdma {
1703                 return Err(crate::device::FeatureRestrictionError {
1704                     feature: "external_memory_rdma",
1705                     restriction: crate::device::FeatureRestriction::NotSupported,
1706                 });
1707             }
1708         } else {
1709         }
1710         if self.fill_mode_non_solid {
1711             if !supported.fill_mode_non_solid {
1712                 return Err(crate::device::FeatureRestrictionError {
1713                     feature: "fill_mode_non_solid",
1714                     restriction: crate::device::FeatureRestriction::NotSupported,
1715                 });
1716             }
1717         } else {
1718         }
1719         if self.format_a4b4g4r4 {
1720             if !supported.format_a4b4g4r4 {
1721                 return Err(crate::device::FeatureRestrictionError {
1722                     feature: "format_a4b4g4r4",
1723                     restriction: crate::device::FeatureRestriction::NotSupported,
1724                 });
1725             }
1726         } else {
1727         }
1728         if self.format_a4r4g4b4 {
1729             if !supported.format_a4r4g4b4 {
1730                 return Err(crate::device::FeatureRestrictionError {
1731                     feature: "format_a4r4g4b4",
1732                     restriction: crate::device::FeatureRestriction::NotSupported,
1733                 });
1734             }
1735         } else {
1736         }
1737         if self.format_rgba10x6_without_y_cb_cr_sampler {
1738             if !supported.format_rgba10x6_without_y_cb_cr_sampler {
1739                 return Err(crate::device::FeatureRestrictionError {
1740                     feature: "format_rgba10x6_without_y_cb_cr_sampler",
1741                     restriction: crate::device::FeatureRestriction::NotSupported,
1742                 });
1743             }
1744         } else {
1745         }
1746         if self.fragment_density_map {
1747             if !supported.fragment_density_map {
1748                 return Err(crate::device::FeatureRestrictionError {
1749                     feature: "fragment_density_map",
1750                     restriction: crate::device::FeatureRestriction::NotSupported,
1751                 });
1752             }
1753             if self.pipeline_fragment_shading_rate {
1754                 return Err(crate::device::FeatureRestrictionError {
1755                     feature: "fragment_density_map",
1756                     restriction: crate::device::FeatureRestriction::ConflictsFeature(
1757                         "pipeline_fragment_shading_rate",
1758                     ),
1759                 });
1760             }
1761             if self.primitive_fragment_shading_rate {
1762                 return Err(crate::device::FeatureRestrictionError {
1763                     feature: "fragment_density_map",
1764                     restriction: crate::device::FeatureRestriction::ConflictsFeature(
1765                         "primitive_fragment_shading_rate",
1766                     ),
1767                 });
1768             }
1769             if self.attachment_fragment_shading_rate {
1770                 return Err(crate::device::FeatureRestrictionError {
1771                     feature: "fragment_density_map",
1772                     restriction: crate::device::FeatureRestriction::ConflictsFeature(
1773                         "attachment_fragment_shading_rate",
1774                     ),
1775                 });
1776             }
1777         } else {
1778         }
1779         if self.fragment_density_map_deferred {
1780             if !supported.fragment_density_map_deferred {
1781                 return Err(crate::device::FeatureRestrictionError {
1782                     feature: "fragment_density_map_deferred",
1783                     restriction: crate::device::FeatureRestriction::NotSupported,
1784                 });
1785             }
1786         } else {
1787         }
1788         if self.fragment_density_map_dynamic {
1789             if !supported.fragment_density_map_dynamic {
1790                 return Err(crate::device::FeatureRestrictionError {
1791                     feature: "fragment_density_map_dynamic",
1792                     restriction: crate::device::FeatureRestriction::NotSupported,
1793                 });
1794             }
1795         } else {
1796         }
1797         if self.fragment_density_map_non_subsampled_images {
1798             if !supported.fragment_density_map_non_subsampled_images {
1799                 return Err(crate::device::FeatureRestrictionError {
1800                     feature: "fragment_density_map_non_subsampled_images",
1801                     restriction: crate::device::FeatureRestriction::NotSupported,
1802                 });
1803             }
1804         } else {
1805         }
1806         if self.fragment_density_map_offset {
1807             if !supported.fragment_density_map_offset {
1808                 return Err(crate::device::FeatureRestrictionError {
1809                     feature: "fragment_density_map_offset",
1810                     restriction: crate::device::FeatureRestriction::NotSupported,
1811                 });
1812             }
1813         } else {
1814         }
1815         if self.fragment_shader_barycentric {
1816             if !supported.fragment_shader_barycentric {
1817                 return Err(crate::device::FeatureRestrictionError {
1818                     feature: "fragment_shader_barycentric",
1819                     restriction: crate::device::FeatureRestriction::NotSupported,
1820                 });
1821             }
1822         } else {
1823         }
1824         if self.fragment_shader_pixel_interlock {
1825             if !supported.fragment_shader_pixel_interlock {
1826                 return Err(crate::device::FeatureRestrictionError {
1827                     feature: "fragment_shader_pixel_interlock",
1828                     restriction: crate::device::FeatureRestriction::NotSupported,
1829                 });
1830             }
1831         } else {
1832         }
1833         if self.fragment_shader_sample_interlock {
1834             if !supported.fragment_shader_sample_interlock {
1835                 return Err(crate::device::FeatureRestrictionError {
1836                     feature: "fragment_shader_sample_interlock",
1837                     restriction: crate::device::FeatureRestriction::NotSupported,
1838                 });
1839             }
1840         } else {
1841         }
1842         if self.fragment_shader_shading_rate_interlock {
1843             if !supported.fragment_shader_shading_rate_interlock {
1844                 return Err(crate::device::FeatureRestrictionError {
1845                     feature: "fragment_shader_shading_rate_interlock",
1846                     restriction: crate::device::FeatureRestriction::NotSupported,
1847                 });
1848             }
1849         } else {
1850         }
1851         if self.fragment_shading_rate_enums {
1852             if !supported.fragment_shading_rate_enums {
1853                 return Err(crate::device::FeatureRestrictionError {
1854                     feature: "fragment_shading_rate_enums",
1855                     restriction: crate::device::FeatureRestriction::NotSupported,
1856                 });
1857             }
1858         } else {
1859         }
1860         if self.fragment_stores_and_atomics {
1861             if !supported.fragment_stores_and_atomics {
1862                 return Err(crate::device::FeatureRestrictionError {
1863                     feature: "fragment_stores_and_atomics",
1864                     restriction: crate::device::FeatureRestriction::NotSupported,
1865                 });
1866             }
1867         } else {
1868         }
1869         if self.full_draw_index_uint32 {
1870             if !supported.full_draw_index_uint32 {
1871                 return Err(crate::device::FeatureRestrictionError {
1872                     feature: "full_draw_index_uint32",
1873                     restriction: crate::device::FeatureRestriction::NotSupported,
1874                 });
1875             }
1876         } else {
1877         }
1878         if self.geometry_shader {
1879             if !supported.geometry_shader {
1880                 return Err(crate::device::FeatureRestrictionError {
1881                     feature: "geometry_shader",
1882                     restriction: crate::device::FeatureRestriction::NotSupported,
1883                 });
1884             }
1885         } else {
1886         }
1887         if self.geometry_streams {
1888             if !supported.geometry_streams {
1889                 return Err(crate::device::FeatureRestrictionError {
1890                     feature: "geometry_streams",
1891                     restriction: crate::device::FeatureRestriction::NotSupported,
1892                 });
1893             }
1894         } else {
1895         }
1896         if self.global_priority_query {
1897             if !supported.global_priority_query {
1898                 return Err(crate::device::FeatureRestrictionError {
1899                     feature: "global_priority_query",
1900                     restriction: crate::device::FeatureRestriction::NotSupported,
1901                 });
1902             }
1903         } else {
1904         }
1905         if self.graphics_pipeline_library {
1906             if !supported.graphics_pipeline_library {
1907                 return Err(crate::device::FeatureRestrictionError {
1908                     feature: "graphics_pipeline_library",
1909                     restriction: crate::device::FeatureRestriction::NotSupported,
1910                 });
1911             }
1912         } else {
1913         }
1914         if self.host_query_reset {
1915             if !supported.host_query_reset {
1916                 return Err(crate::device::FeatureRestrictionError {
1917                     feature: "host_query_reset",
1918                     restriction: crate::device::FeatureRestriction::NotSupported,
1919                 });
1920             }
1921         } else {
1922         }
1923         if self.image2_d_view_of3_d {
1924             if !supported.image2_d_view_of3_d {
1925                 return Err(crate::device::FeatureRestrictionError {
1926                     feature: "image2_d_view_of3_d",
1927                     restriction: crate::device::FeatureRestriction::NotSupported,
1928                 });
1929             }
1930         } else {
1931         }
1932         if self.image_compression_control {
1933             if !supported.image_compression_control {
1934                 return Err(crate::device::FeatureRestrictionError {
1935                     feature: "image_compression_control",
1936                     restriction: crate::device::FeatureRestriction::NotSupported,
1937                 });
1938             }
1939         } else {
1940         }
1941         if self.image_compression_control_swapchain {
1942             if !supported.image_compression_control_swapchain {
1943                 return Err(crate::device::FeatureRestrictionError {
1944                     feature: "image_compression_control_swapchain",
1945                     restriction: crate::device::FeatureRestriction::NotSupported,
1946                 });
1947             }
1948         } else {
1949         }
1950         if self.image_cube_array {
1951             if !supported.image_cube_array {
1952                 return Err(crate::device::FeatureRestrictionError {
1953                     feature: "image_cube_array",
1954                     restriction: crate::device::FeatureRestriction::NotSupported,
1955                 });
1956             }
1957         } else {
1958         }
1959         if self.image_footprint {
1960             if !supported.image_footprint {
1961                 return Err(crate::device::FeatureRestrictionError {
1962                     feature: "image_footprint",
1963                     restriction: crate::device::FeatureRestriction::NotSupported,
1964                 });
1965             }
1966         } else {
1967         }
1968         if self.image_view2_d_on3_d_image {
1969             if !supported.image_view2_d_on3_d_image {
1970                 return Err(crate::device::FeatureRestrictionError {
1971                     feature: "image_view2_d_on3_d_image",
1972                     restriction: crate::device::FeatureRestriction::NotSupported,
1973                 });
1974             }
1975         } else {
1976         }
1977         if self.image_view_format_reinterpretation {
1978             if !supported.image_view_format_reinterpretation {
1979                 return Err(crate::device::FeatureRestrictionError {
1980                     feature: "image_view_format_reinterpretation",
1981                     restriction: crate::device::FeatureRestriction::NotSupported,
1982                 });
1983             }
1984         } else {
1985         }
1986         if self.image_view_format_swizzle {
1987             if !supported.image_view_format_swizzle {
1988                 return Err(crate::device::FeatureRestrictionError {
1989                     feature: "image_view_format_swizzle",
1990                     restriction: crate::device::FeatureRestriction::NotSupported,
1991                 });
1992             }
1993         } else {
1994         }
1995         if self.imageless_framebuffer {
1996             if !supported.imageless_framebuffer {
1997                 return Err(crate::device::FeatureRestrictionError {
1998                     feature: "imageless_framebuffer",
1999                     restriction: crate::device::FeatureRestriction::NotSupported,
2000                 });
2001             }
2002         } else {
2003         }
2004         if self.independent_blend {
2005             if !supported.independent_blend {
2006                 return Err(crate::device::FeatureRestrictionError {
2007                     feature: "independent_blend",
2008                     restriction: crate::device::FeatureRestriction::NotSupported,
2009                 });
2010             }
2011         } else {
2012         }
2013         if self.index_type_uint8 {
2014             if !supported.index_type_uint8 {
2015                 return Err(crate::device::FeatureRestrictionError {
2016                     feature: "index_type_uint8",
2017                     restriction: crate::device::FeatureRestriction::NotSupported,
2018                 });
2019             }
2020         } else {
2021         }
2022         if self.indirect_copy {
2023             if !supported.indirect_copy {
2024                 return Err(crate::device::FeatureRestrictionError {
2025                     feature: "indirect_copy",
2026                     restriction: crate::device::FeatureRestriction::NotSupported,
2027                 });
2028             }
2029         } else {
2030         }
2031         if self.inherited_conditional_rendering {
2032             if !supported.inherited_conditional_rendering {
2033                 return Err(crate::device::FeatureRestrictionError {
2034                     feature: "inherited_conditional_rendering",
2035                     restriction: crate::device::FeatureRestriction::NotSupported,
2036                 });
2037             }
2038         } else {
2039         }
2040         if self.inherited_queries {
2041             if !supported.inherited_queries {
2042                 return Err(crate::device::FeatureRestrictionError {
2043                     feature: "inherited_queries",
2044                     restriction: crate::device::FeatureRestriction::NotSupported,
2045                 });
2046             }
2047         } else {
2048         }
2049         if self.inherited_viewport_scissor2_d {
2050             if !supported.inherited_viewport_scissor2_d {
2051                 return Err(crate::device::FeatureRestrictionError {
2052                     feature: "inherited_viewport_scissor2_d",
2053                     restriction: crate::device::FeatureRestriction::NotSupported,
2054                 });
2055             }
2056         } else {
2057         }
2058         if self.inline_uniform_block {
2059             if !supported.inline_uniform_block {
2060                 return Err(crate::device::FeatureRestrictionError {
2061                     feature: "inline_uniform_block",
2062                     restriction: crate::device::FeatureRestriction::NotSupported,
2063                 });
2064             }
2065         } else {
2066         }
2067         if self.invocation_mask {
2068             if !supported.invocation_mask {
2069                 return Err(crate::device::FeatureRestrictionError {
2070                     feature: "invocation_mask",
2071                     restriction: crate::device::FeatureRestriction::NotSupported,
2072                 });
2073             }
2074         } else {
2075         }
2076         if self.large_points {
2077             if !supported.large_points {
2078                 return Err(crate::device::FeatureRestrictionError {
2079                     feature: "large_points",
2080                     restriction: crate::device::FeatureRestriction::NotSupported,
2081                 });
2082             }
2083         } else {
2084         }
2085         if self.legacy_dithering {
2086             if !supported.legacy_dithering {
2087                 return Err(crate::device::FeatureRestrictionError {
2088                     feature: "legacy_dithering",
2089                     restriction: crate::device::FeatureRestriction::NotSupported,
2090                 });
2091             }
2092         } else {
2093         }
2094         if self.linear_color_attachment {
2095             if !supported.linear_color_attachment {
2096                 return Err(crate::device::FeatureRestrictionError {
2097                     feature: "linear_color_attachment",
2098                     restriction: crate::device::FeatureRestriction::NotSupported,
2099                 });
2100             }
2101         } else {
2102         }
2103         if self.logic_op {
2104             if !supported.logic_op {
2105                 return Err(crate::device::FeatureRestrictionError {
2106                     feature: "logic_op",
2107                     restriction: crate::device::FeatureRestriction::NotSupported,
2108                 });
2109             }
2110         } else {
2111         }
2112         if self.maintenance4 {
2113             if !supported.maintenance4 {
2114                 return Err(crate::device::FeatureRestrictionError {
2115                     feature: "maintenance4",
2116                     restriction: crate::device::FeatureRestriction::NotSupported,
2117                 });
2118             }
2119         } else {
2120         }
2121         if self.memory_decompression {
2122             if !supported.memory_decompression {
2123                 return Err(crate::device::FeatureRestrictionError {
2124                     feature: "memory_decompression",
2125                     restriction: crate::device::FeatureRestriction::NotSupported,
2126                 });
2127             }
2128         } else {
2129         }
2130         if self.memory_priority {
2131             if !supported.memory_priority {
2132                 return Err(crate::device::FeatureRestrictionError {
2133                     feature: "memory_priority",
2134                     restriction: crate::device::FeatureRestriction::NotSupported,
2135                 });
2136             }
2137         } else {
2138         }
2139         if self.mesh_shader {
2140             if !supported.mesh_shader {
2141                 return Err(crate::device::FeatureRestrictionError {
2142                     feature: "mesh_shader",
2143                     restriction: crate::device::FeatureRestriction::NotSupported,
2144                 });
2145             }
2146         } else {
2147         }
2148         if self.mesh_shader_queries {
2149             if !supported.mesh_shader_queries {
2150                 return Err(crate::device::FeatureRestrictionError {
2151                     feature: "mesh_shader_queries",
2152                     restriction: crate::device::FeatureRestriction::NotSupported,
2153                 });
2154             }
2155         } else {
2156         }
2157         if self.micromap {
2158             if !supported.micromap {
2159                 return Err(crate::device::FeatureRestrictionError {
2160                     feature: "micromap",
2161                     restriction: crate::device::FeatureRestriction::NotSupported,
2162                 });
2163             }
2164         } else {
2165         }
2166         if self.micromap_capture_replay {
2167             if !supported.micromap_capture_replay {
2168                 return Err(crate::device::FeatureRestrictionError {
2169                     feature: "micromap_capture_replay",
2170                     restriction: crate::device::FeatureRestriction::NotSupported,
2171                 });
2172             }
2173         } else {
2174         }
2175         if self.micromap_host_commands {
2176             if !supported.micromap_host_commands {
2177                 return Err(crate::device::FeatureRestrictionError {
2178                     feature: "micromap_host_commands",
2179                     restriction: crate::device::FeatureRestriction::NotSupported,
2180                 });
2181             }
2182         } else {
2183         }
2184         if self.min_lod {
2185             if !supported.min_lod {
2186                 return Err(crate::device::FeatureRestrictionError {
2187                     feature: "min_lod",
2188                     restriction: crate::device::FeatureRestriction::NotSupported,
2189                 });
2190             }
2191         } else {
2192         }
2193         if self.multi_draw {
2194             if !supported.multi_draw {
2195                 return Err(crate::device::FeatureRestrictionError {
2196                     feature: "multi_draw",
2197                     restriction: crate::device::FeatureRestriction::NotSupported,
2198                 });
2199             }
2200         } else {
2201         }
2202         if self.multi_draw_indirect {
2203             if !supported.multi_draw_indirect {
2204                 return Err(crate::device::FeatureRestrictionError {
2205                     feature: "multi_draw_indirect",
2206                     restriction: crate::device::FeatureRestriction::NotSupported,
2207                 });
2208             }
2209         } else {
2210         }
2211         if self.multi_viewport {
2212             if !supported.multi_viewport {
2213                 return Err(crate::device::FeatureRestrictionError {
2214                     feature: "multi_viewport",
2215                     restriction: crate::device::FeatureRestriction::NotSupported,
2216                 });
2217             }
2218         } else {
2219         }
2220         if self.multisample_array_image {
2221             if !supported.multisample_array_image {
2222                 return Err(crate::device::FeatureRestrictionError {
2223                     feature: "multisample_array_image",
2224                     restriction: crate::device::FeatureRestriction::NotSupported,
2225                 });
2226             }
2227         } else {
2228         }
2229         if self.multisampled_render_to_single_sampled {
2230             if !supported.multisampled_render_to_single_sampled {
2231                 return Err(crate::device::FeatureRestrictionError {
2232                     feature: "multisampled_render_to_single_sampled",
2233                     restriction: crate::device::FeatureRestriction::NotSupported,
2234                 });
2235             }
2236         } else {
2237         }
2238         if self.multiview {
2239             if !supported.multiview {
2240                 return Err(crate::device::FeatureRestrictionError {
2241                     feature: "multiview",
2242                     restriction: crate::device::FeatureRestriction::NotSupported,
2243                 });
2244             }
2245         } else {
2246         }
2247         if self.multiview_geometry_shader {
2248             if !supported.multiview_geometry_shader {
2249                 return Err(crate::device::FeatureRestrictionError {
2250                     feature: "multiview_geometry_shader",
2251                     restriction: crate::device::FeatureRestriction::NotSupported,
2252                 });
2253             }
2254         } else {
2255         }
2256         if self.multiview_mesh_shader {
2257             if !supported.multiview_mesh_shader {
2258                 return Err(crate::device::FeatureRestrictionError {
2259                     feature: "multiview_mesh_shader",
2260                     restriction: crate::device::FeatureRestriction::NotSupported,
2261                 });
2262             }
2263         } else {
2264         }
2265         if self.multiview_per_view_viewports {
2266             if !supported.multiview_per_view_viewports {
2267                 return Err(crate::device::FeatureRestrictionError {
2268                     feature: "multiview_per_view_viewports",
2269                     restriction: crate::device::FeatureRestriction::NotSupported,
2270                 });
2271             }
2272         } else {
2273         }
2274         if self.multiview_tessellation_shader {
2275             if !supported.multiview_tessellation_shader {
2276                 return Err(crate::device::FeatureRestrictionError {
2277                     feature: "multiview_tessellation_shader",
2278                     restriction: crate::device::FeatureRestriction::NotSupported,
2279                 });
2280             }
2281         } else {
2282         }
2283         if self.mutable_comparison_samplers {
2284             if !supported.mutable_comparison_samplers {
2285                 return Err(crate::device::FeatureRestrictionError {
2286                     feature: "mutable_comparison_samplers",
2287                     restriction: crate::device::FeatureRestriction::NotSupported,
2288                 });
2289             }
2290         } else {
2291         }
2292         if self.mutable_descriptor_type {
2293             if !supported.mutable_descriptor_type {
2294                 return Err(crate::device::FeatureRestrictionError {
2295                     feature: "mutable_descriptor_type",
2296                     restriction: crate::device::FeatureRestriction::NotSupported,
2297                 });
2298             }
2299         } else {
2300         }
2301         if self.no_invocation_fragment_shading_rates {
2302             if !supported.no_invocation_fragment_shading_rates {
2303                 return Err(crate::device::FeatureRestrictionError {
2304                     feature: "no_invocation_fragment_shading_rates",
2305                     restriction: crate::device::FeatureRestriction::NotSupported,
2306                 });
2307             }
2308         } else {
2309         }
2310         if self.non_seamless_cube_map {
2311             if !supported.non_seamless_cube_map {
2312                 return Err(crate::device::FeatureRestrictionError {
2313                     feature: "non_seamless_cube_map",
2314                     restriction: crate::device::FeatureRestriction::NotSupported,
2315                 });
2316             }
2317         } else {
2318         }
2319         if self.null_descriptor {
2320             if !supported.null_descriptor {
2321                 return Err(crate::device::FeatureRestrictionError {
2322                     feature: "null_descriptor",
2323                     restriction: crate::device::FeatureRestriction::NotSupported,
2324                 });
2325             }
2326         } else {
2327         }
2328         if self.occlusion_query_precise {
2329             if !supported.occlusion_query_precise {
2330                 return Err(crate::device::FeatureRestrictionError {
2331                     feature: "occlusion_query_precise",
2332                     restriction: crate::device::FeatureRestriction::NotSupported,
2333                 });
2334             }
2335         } else {
2336         }
2337         if self.optical_flow {
2338             if !supported.optical_flow {
2339                 return Err(crate::device::FeatureRestrictionError {
2340                     feature: "optical_flow",
2341                     restriction: crate::device::FeatureRestriction::NotSupported,
2342                 });
2343             }
2344         } else {
2345         }
2346         if self.pageable_device_local_memory {
2347             if !supported.pageable_device_local_memory {
2348                 return Err(crate::device::FeatureRestrictionError {
2349                     feature: "pageable_device_local_memory",
2350                     restriction: crate::device::FeatureRestriction::NotSupported,
2351                 });
2352             }
2353         } else {
2354         }
2355         if self.performance_counter_multiple_query_pools {
2356             if !supported.performance_counter_multiple_query_pools {
2357                 return Err(crate::device::FeatureRestrictionError {
2358                     feature: "performance_counter_multiple_query_pools",
2359                     restriction: crate::device::FeatureRestriction::NotSupported,
2360                 });
2361             }
2362         } else {
2363         }
2364         if self.performance_counter_query_pools {
2365             if !supported.performance_counter_query_pools {
2366                 return Err(crate::device::FeatureRestrictionError {
2367                     feature: "performance_counter_query_pools",
2368                     restriction: crate::device::FeatureRestriction::NotSupported,
2369                 });
2370             }
2371         } else {
2372         }
2373         if self.pipeline_creation_cache_control {
2374             if !supported.pipeline_creation_cache_control {
2375                 return Err(crate::device::FeatureRestrictionError {
2376                     feature: "pipeline_creation_cache_control",
2377                     restriction: crate::device::FeatureRestriction::NotSupported,
2378                 });
2379             }
2380         } else {
2381         }
2382         if self.pipeline_executable_info {
2383             if !supported.pipeline_executable_info {
2384                 return Err(crate::device::FeatureRestrictionError {
2385                     feature: "pipeline_executable_info",
2386                     restriction: crate::device::FeatureRestriction::NotSupported,
2387                 });
2388             }
2389         } else {
2390         }
2391         if self.pipeline_fragment_shading_rate {
2392             if !supported.pipeline_fragment_shading_rate {
2393                 return Err(crate::device::FeatureRestrictionError {
2394                     feature: "pipeline_fragment_shading_rate",
2395                     restriction: crate::device::FeatureRestriction::NotSupported,
2396                 });
2397             }
2398             if self.shading_rate_image {
2399                 return Err(crate::device::FeatureRestrictionError {
2400                     feature: "pipeline_fragment_shading_rate",
2401                     restriction: crate::device::FeatureRestriction::ConflictsFeature(
2402                         "shading_rate_image",
2403                     ),
2404                 });
2405             }
2406             if self.fragment_density_map {
2407                 return Err(crate::device::FeatureRestrictionError {
2408                     feature: "pipeline_fragment_shading_rate",
2409                     restriction: crate::device::FeatureRestriction::ConflictsFeature(
2410                         "fragment_density_map",
2411                     ),
2412                 });
2413             }
2414         } else {
2415         }
2416         if self.pipeline_properties_identifier {
2417             if !supported.pipeline_properties_identifier {
2418                 return Err(crate::device::FeatureRestrictionError {
2419                     feature: "pipeline_properties_identifier",
2420                     restriction: crate::device::FeatureRestriction::NotSupported,
2421                 });
2422             }
2423         } else {
2424         }
2425         if self.pipeline_protected_access {
2426             if !supported.pipeline_protected_access {
2427                 return Err(crate::device::FeatureRestrictionError {
2428                     feature: "pipeline_protected_access",
2429                     restriction: crate::device::FeatureRestriction::NotSupported,
2430                 });
2431             }
2432         } else {
2433         }
2434         if self.pipeline_robustness {
2435             if !supported.pipeline_robustness {
2436                 return Err(crate::device::FeatureRestrictionError {
2437                     feature: "pipeline_robustness",
2438                     restriction: crate::device::FeatureRestriction::NotSupported,
2439                 });
2440             }
2441         } else {
2442         }
2443         if self.pipeline_statistics_query {
2444             if !supported.pipeline_statistics_query {
2445                 return Err(crate::device::FeatureRestrictionError {
2446                     feature: "pipeline_statistics_query",
2447                     restriction: crate::device::FeatureRestriction::NotSupported,
2448                 });
2449             }
2450         } else {
2451         }
2452         if self.point_polygons {
2453             if !supported.point_polygons {
2454                 return Err(crate::device::FeatureRestrictionError {
2455                     feature: "point_polygons",
2456                     restriction: crate::device::FeatureRestriction::NotSupported,
2457                 });
2458             }
2459         } else {
2460         }
2461         if self.present_barrier {
2462             if !supported.present_barrier {
2463                 return Err(crate::device::FeatureRestrictionError {
2464                     feature: "present_barrier",
2465                     restriction: crate::device::FeatureRestriction::NotSupported,
2466                 });
2467             }
2468         } else {
2469         }
2470         if self.present_id {
2471             if !supported.present_id {
2472                 return Err(crate::device::FeatureRestrictionError {
2473                     feature: "present_id",
2474                     restriction: crate::device::FeatureRestriction::NotSupported,
2475                 });
2476             }
2477         } else {
2478         }
2479         if self.present_wait {
2480             if !supported.present_wait {
2481                 return Err(crate::device::FeatureRestrictionError {
2482                     feature: "present_wait",
2483                     restriction: crate::device::FeatureRestriction::NotSupported,
2484                 });
2485             }
2486         } else {
2487         }
2488         if self.primitive_fragment_shading_rate {
2489             if !supported.primitive_fragment_shading_rate {
2490                 return Err(crate::device::FeatureRestrictionError {
2491                     feature: "primitive_fragment_shading_rate",
2492                     restriction: crate::device::FeatureRestriction::NotSupported,
2493                 });
2494             }
2495             if self.shading_rate_image {
2496                 return Err(crate::device::FeatureRestrictionError {
2497                     feature: "primitive_fragment_shading_rate",
2498                     restriction: crate::device::FeatureRestriction::ConflictsFeature(
2499                         "shading_rate_image",
2500                     ),
2501                 });
2502             }
2503             if self.fragment_density_map {
2504                 return Err(crate::device::FeatureRestrictionError {
2505                     feature: "primitive_fragment_shading_rate",
2506                     restriction: crate::device::FeatureRestriction::ConflictsFeature(
2507                         "fragment_density_map",
2508                     ),
2509                 });
2510             }
2511         } else {
2512         }
2513         if self.primitive_fragment_shading_rate_mesh_shader {
2514             if !supported.primitive_fragment_shading_rate_mesh_shader {
2515                 return Err(crate::device::FeatureRestrictionError {
2516                     feature: "primitive_fragment_shading_rate_mesh_shader",
2517                     restriction: crate::device::FeatureRestriction::NotSupported,
2518                 });
2519             }
2520         } else {
2521         }
2522         if self.primitive_topology_list_restart {
2523             if !supported.primitive_topology_list_restart {
2524                 return Err(crate::device::FeatureRestrictionError {
2525                     feature: "primitive_topology_list_restart",
2526                     restriction: crate::device::FeatureRestriction::NotSupported,
2527                 });
2528             }
2529         } else {
2530         }
2531         if self.primitive_topology_patch_list_restart {
2532             if !supported.primitive_topology_patch_list_restart {
2533                 return Err(crate::device::FeatureRestrictionError {
2534                     feature: "primitive_topology_patch_list_restart",
2535                     restriction: crate::device::FeatureRestriction::NotSupported,
2536                 });
2537             }
2538         } else {
2539         }
2540         if self.primitives_generated_query {
2541             if !supported.primitives_generated_query {
2542                 return Err(crate::device::FeatureRestrictionError {
2543                     feature: "primitives_generated_query",
2544                     restriction: crate::device::FeatureRestriction::NotSupported,
2545                 });
2546             }
2547         } else {
2548         }
2549         if self.primitives_generated_query_with_non_zero_streams {
2550             if !supported.primitives_generated_query_with_non_zero_streams {
2551                 return Err(crate::device::FeatureRestrictionError {
2552                     feature: "primitives_generated_query_with_non_zero_streams",
2553                     restriction: crate::device::FeatureRestriction::NotSupported,
2554                 });
2555             }
2556         } else {
2557         }
2558         if self.primitives_generated_query_with_rasterizer_discard {
2559             if !supported.primitives_generated_query_with_rasterizer_discard {
2560                 return Err(crate::device::FeatureRestrictionError {
2561                     feature: "primitives_generated_query_with_rasterizer_discard",
2562                     restriction: crate::device::FeatureRestriction::NotSupported,
2563                 });
2564             }
2565         } else {
2566         }
2567         if self.private_data {
2568             if !supported.private_data {
2569                 return Err(crate::device::FeatureRestrictionError {
2570                     feature: "private_data",
2571                     restriction: crate::device::FeatureRestriction::NotSupported,
2572                 });
2573             }
2574         } else {
2575         }
2576         if self.protected_memory {
2577             if !supported.protected_memory {
2578                 return Err(crate::device::FeatureRestrictionError {
2579                     feature: "protected_memory",
2580                     restriction: crate::device::FeatureRestriction::NotSupported,
2581                 });
2582             }
2583         } else {
2584         }
2585         if self.provoking_vertex_last {
2586             if !supported.provoking_vertex_last {
2587                 return Err(crate::device::FeatureRestrictionError {
2588                     feature: "provoking_vertex_last",
2589                     restriction: crate::device::FeatureRestriction::NotSupported,
2590                 });
2591             }
2592         } else {
2593         }
2594         if self.rasterization_order_color_attachment_access {
2595             if !supported.rasterization_order_color_attachment_access {
2596                 return Err(crate::device::FeatureRestrictionError {
2597                     feature: "rasterization_order_color_attachment_access",
2598                     restriction: crate::device::FeatureRestriction::NotSupported,
2599                 });
2600             }
2601         } else {
2602         }
2603         if self.rasterization_order_depth_attachment_access {
2604             if !supported.rasterization_order_depth_attachment_access {
2605                 return Err(crate::device::FeatureRestrictionError {
2606                     feature: "rasterization_order_depth_attachment_access",
2607                     restriction: crate::device::FeatureRestriction::NotSupported,
2608                 });
2609             }
2610         } else {
2611         }
2612         if self.rasterization_order_stencil_attachment_access {
2613             if !supported.rasterization_order_stencil_attachment_access {
2614                 return Err(crate::device::FeatureRestrictionError {
2615                     feature: "rasterization_order_stencil_attachment_access",
2616                     restriction: crate::device::FeatureRestriction::NotSupported,
2617                 });
2618             }
2619         } else {
2620         }
2621         if self.ray_query {
2622             if !supported.ray_query {
2623                 return Err(crate::device::FeatureRestrictionError {
2624                     feature: "ray_query",
2625                     restriction: crate::device::FeatureRestriction::NotSupported,
2626                 });
2627             }
2628         } else {
2629         }
2630         if self.ray_tracing_invocation_reorder {
2631             if !supported.ray_tracing_invocation_reorder {
2632                 return Err(crate::device::FeatureRestrictionError {
2633                     feature: "ray_tracing_invocation_reorder",
2634                     restriction: crate::device::FeatureRestriction::NotSupported,
2635                 });
2636             }
2637         } else {
2638         }
2639         if self.ray_tracing_maintenance1 {
2640             if !supported.ray_tracing_maintenance1 {
2641                 return Err(crate::device::FeatureRestrictionError {
2642                     feature: "ray_tracing_maintenance1",
2643                     restriction: crate::device::FeatureRestriction::NotSupported,
2644                 });
2645             }
2646         } else {
2647         }
2648         if self.ray_tracing_motion_blur {
2649             if !supported.ray_tracing_motion_blur {
2650                 return Err(crate::device::FeatureRestrictionError {
2651                     feature: "ray_tracing_motion_blur",
2652                     restriction: crate::device::FeatureRestriction::NotSupported,
2653                 });
2654             }
2655         } else {
2656         }
2657         if self.ray_tracing_motion_blur_pipeline_trace_rays_indirect {
2658             if !supported.ray_tracing_motion_blur_pipeline_trace_rays_indirect {
2659                 return Err(crate::device::FeatureRestrictionError {
2660                     feature: "ray_tracing_motion_blur_pipeline_trace_rays_indirect",
2661                     restriction: crate::device::FeatureRestriction::NotSupported,
2662                 });
2663             }
2664         } else {
2665         }
2666         if self.ray_tracing_pipeline {
2667             if !supported.ray_tracing_pipeline {
2668                 return Err(crate::device::FeatureRestrictionError {
2669                     feature: "ray_tracing_pipeline",
2670                     restriction: crate::device::FeatureRestriction::NotSupported,
2671                 });
2672             }
2673         } else {
2674         }
2675         if self.ray_tracing_pipeline_shader_group_handle_capture_replay {
2676             if !supported.ray_tracing_pipeline_shader_group_handle_capture_replay {
2677                 return Err(crate::device::FeatureRestrictionError {
2678                     feature: "ray_tracing_pipeline_shader_group_handle_capture_replay",
2679                     restriction: crate::device::FeatureRestriction::NotSupported,
2680                 });
2681             }
2682         } else {
2683         }
2684         if self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed {
2685             if !supported.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed {
2686                 return Err(crate::device::FeatureRestrictionError {
2687                     feature: "ray_tracing_pipeline_shader_group_handle_capture_replay_mixed",
2688                     restriction: crate::device::FeatureRestriction::NotSupported,
2689                 });
2690             }
2691         } else {
2692         }
2693         if self.ray_tracing_pipeline_trace_rays_indirect {
2694             if !supported.ray_tracing_pipeline_trace_rays_indirect {
2695                 return Err(crate::device::FeatureRestrictionError {
2696                     feature: "ray_tracing_pipeline_trace_rays_indirect",
2697                     restriction: crate::device::FeatureRestriction::NotSupported,
2698                 });
2699             }
2700         } else {
2701         }
2702         if self.ray_tracing_pipeline_trace_rays_indirect2 {
2703             if !supported.ray_tracing_pipeline_trace_rays_indirect2 {
2704                 return Err(crate::device::FeatureRestrictionError {
2705                     feature: "ray_tracing_pipeline_trace_rays_indirect2",
2706                     restriction: crate::device::FeatureRestriction::NotSupported,
2707                 });
2708             }
2709         } else {
2710         }
2711         if self.ray_traversal_primitive_culling {
2712             if !supported.ray_traversal_primitive_culling {
2713                 return Err(crate::device::FeatureRestrictionError {
2714                     feature: "ray_traversal_primitive_culling",
2715                     restriction: crate::device::FeatureRestriction::NotSupported,
2716                 });
2717             }
2718         } else {
2719         }
2720         if self.rectangular_lines {
2721             if !supported.rectangular_lines {
2722                 return Err(crate::device::FeatureRestrictionError {
2723                     feature: "rectangular_lines",
2724                     restriction: crate::device::FeatureRestriction::NotSupported,
2725                 });
2726             }
2727         } else {
2728         }
2729         if self.report_address_binding {
2730             if !supported.report_address_binding {
2731                 return Err(crate::device::FeatureRestrictionError {
2732                     feature: "report_address_binding",
2733                     restriction: crate::device::FeatureRestriction::NotSupported,
2734                 });
2735             }
2736         } else {
2737         }
2738         if self.representative_fragment_test {
2739             if !supported.representative_fragment_test {
2740                 return Err(crate::device::FeatureRestrictionError {
2741                     feature: "representative_fragment_test",
2742                     restriction: crate::device::FeatureRestriction::NotSupported,
2743                 });
2744             }
2745         } else {
2746         }
2747         if self.robust_buffer_access {
2748             if !supported.robust_buffer_access {
2749                 return Err(crate::device::FeatureRestrictionError {
2750                     feature: "robust_buffer_access",
2751                     restriction: crate::device::FeatureRestriction::NotSupported,
2752                 });
2753             }
2754         } else {
2755         }
2756         if self.robust_buffer_access2 {
2757             if !supported.robust_buffer_access2 {
2758                 return Err(crate::device::FeatureRestrictionError {
2759                     feature: "robust_buffer_access2",
2760                     restriction: crate::device::FeatureRestriction::NotSupported,
2761                 });
2762             }
2763         } else {
2764         }
2765         if self.robust_image_access {
2766             if !supported.robust_image_access {
2767                 return Err(crate::device::FeatureRestrictionError {
2768                     feature: "robust_image_access",
2769                     restriction: crate::device::FeatureRestriction::NotSupported,
2770                 });
2771             }
2772         } else {
2773         }
2774         if self.robust_image_access2 {
2775             if !supported.robust_image_access2 {
2776                 return Err(crate::device::FeatureRestrictionError {
2777                     feature: "robust_image_access2",
2778                     restriction: crate::device::FeatureRestriction::NotSupported,
2779                 });
2780             }
2781         } else {
2782         }
2783         if self.runtime_descriptor_array {
2784             if !supported.runtime_descriptor_array {
2785                 return Err(crate::device::FeatureRestrictionError {
2786                     feature: "runtime_descriptor_array",
2787                     restriction: crate::device::FeatureRestriction::NotSupported,
2788                 });
2789             }
2790         } else {
2791         }
2792         if self.sample_rate_shading {
2793             if !supported.sample_rate_shading {
2794                 return Err(crate::device::FeatureRestrictionError {
2795                     feature: "sample_rate_shading",
2796                     restriction: crate::device::FeatureRestriction::NotSupported,
2797                 });
2798             }
2799         } else {
2800         }
2801         if self.sampler2_d_view_of3_d {
2802             if !supported.sampler2_d_view_of3_d {
2803                 return Err(crate::device::FeatureRestrictionError {
2804                     feature: "sampler2_d_view_of3_d",
2805                     restriction: crate::device::FeatureRestriction::NotSupported,
2806                 });
2807             }
2808         } else {
2809         }
2810         if self.sampler_anisotropy {
2811             if !supported.sampler_anisotropy {
2812                 return Err(crate::device::FeatureRestrictionError {
2813                     feature: "sampler_anisotropy",
2814                     restriction: crate::device::FeatureRestriction::NotSupported,
2815                 });
2816             }
2817         } else {
2818         }
2819         if self.sampler_filter_minmax {
2820             if !supported.sampler_filter_minmax {
2821                 return Err(crate::device::FeatureRestrictionError {
2822                     feature: "sampler_filter_minmax",
2823                     restriction: crate::device::FeatureRestriction::NotSupported,
2824                 });
2825             }
2826         } else {
2827             if extensions.ext_sampler_filter_minmax && api_version >= crate::Version::V1_2 {
2828                 return Err(crate::device::FeatureRestrictionError {
2829                     feature: "sampler_filter_minmax",
2830                     restriction: crate::device::FeatureRestriction::RequiredByExtension(
2831                         "ext_sampler_filter_minmax",
2832                     ),
2833                 });
2834             }
2835         }
2836         if self.sampler_mip_lod_bias {
2837             if !supported.sampler_mip_lod_bias {
2838                 return Err(crate::device::FeatureRestrictionError {
2839                     feature: "sampler_mip_lod_bias",
2840                     restriction: crate::device::FeatureRestriction::NotSupported,
2841                 });
2842             }
2843         } else {
2844         }
2845         if self.sampler_mirror_clamp_to_edge {
2846             if !supported.sampler_mirror_clamp_to_edge {
2847                 return Err(crate::device::FeatureRestrictionError {
2848                     feature: "sampler_mirror_clamp_to_edge",
2849                     restriction: crate::device::FeatureRestriction::NotSupported,
2850                 });
2851             }
2852         } else {
2853             if extensions.khr_sampler_mirror_clamp_to_edge && api_version >= crate::Version::V1_2 {
2854                 return Err(crate::device::FeatureRestrictionError {
2855                     feature: "sampler_mirror_clamp_to_edge",
2856                     restriction: crate::device::FeatureRestriction::RequiredByExtension(
2857                         "khr_sampler_mirror_clamp_to_edge",
2858                     ),
2859                 });
2860             }
2861         }
2862         if self.sampler_ycbcr_conversion {
2863             if !supported.sampler_ycbcr_conversion {
2864                 return Err(crate::device::FeatureRestrictionError {
2865                     feature: "sampler_ycbcr_conversion",
2866                     restriction: crate::device::FeatureRestriction::NotSupported,
2867                 });
2868             }
2869         } else {
2870         }
2871         if self.scalar_block_layout {
2872             if !supported.scalar_block_layout {
2873                 return Err(crate::device::FeatureRestrictionError {
2874                     feature: "scalar_block_layout",
2875                     restriction: crate::device::FeatureRestriction::NotSupported,
2876                 });
2877             }
2878         } else {
2879         }
2880         if self.separate_depth_stencil_layouts {
2881             if !supported.separate_depth_stencil_layouts {
2882                 return Err(crate::device::FeatureRestrictionError {
2883                     feature: "separate_depth_stencil_layouts",
2884                     restriction: crate::device::FeatureRestriction::NotSupported,
2885                 });
2886             }
2887         } else {
2888         }
2889         if self.separate_stencil_mask_ref {
2890             if !supported.separate_stencil_mask_ref {
2891                 return Err(crate::device::FeatureRestrictionError {
2892                     feature: "separate_stencil_mask_ref",
2893                     restriction: crate::device::FeatureRestriction::NotSupported,
2894                 });
2895             }
2896         } else {
2897         }
2898         if self.shader_buffer_float16_atomic_add {
2899             if !supported.shader_buffer_float16_atomic_add {
2900                 return Err(crate::device::FeatureRestrictionError {
2901                     feature: "shader_buffer_float16_atomic_add",
2902                     restriction: crate::device::FeatureRestriction::NotSupported,
2903                 });
2904             }
2905         } else {
2906         }
2907         if self.shader_buffer_float16_atomic_min_max {
2908             if !supported.shader_buffer_float16_atomic_min_max {
2909                 return Err(crate::device::FeatureRestrictionError {
2910                     feature: "shader_buffer_float16_atomic_min_max",
2911                     restriction: crate::device::FeatureRestriction::NotSupported,
2912                 });
2913             }
2914         } else {
2915         }
2916         if self.shader_buffer_float16_atomics {
2917             if !supported.shader_buffer_float16_atomics {
2918                 return Err(crate::device::FeatureRestrictionError {
2919                     feature: "shader_buffer_float16_atomics",
2920                     restriction: crate::device::FeatureRestriction::NotSupported,
2921                 });
2922             }
2923         } else {
2924         }
2925         if self.shader_buffer_float32_atomic_add {
2926             if !supported.shader_buffer_float32_atomic_add {
2927                 return Err(crate::device::FeatureRestrictionError {
2928                     feature: "shader_buffer_float32_atomic_add",
2929                     restriction: crate::device::FeatureRestriction::NotSupported,
2930                 });
2931             }
2932         } else {
2933         }
2934         if self.shader_buffer_float32_atomic_min_max {
2935             if !supported.shader_buffer_float32_atomic_min_max {
2936                 return Err(crate::device::FeatureRestrictionError {
2937                     feature: "shader_buffer_float32_atomic_min_max",
2938                     restriction: crate::device::FeatureRestriction::NotSupported,
2939                 });
2940             }
2941         } else {
2942         }
2943         if self.shader_buffer_float32_atomics {
2944             if !supported.shader_buffer_float32_atomics {
2945                 return Err(crate::device::FeatureRestrictionError {
2946                     feature: "shader_buffer_float32_atomics",
2947                     restriction: crate::device::FeatureRestriction::NotSupported,
2948                 });
2949             }
2950         } else {
2951         }
2952         if self.shader_buffer_float64_atomic_add {
2953             if !supported.shader_buffer_float64_atomic_add {
2954                 return Err(crate::device::FeatureRestrictionError {
2955                     feature: "shader_buffer_float64_atomic_add",
2956                     restriction: crate::device::FeatureRestriction::NotSupported,
2957                 });
2958             }
2959         } else {
2960         }
2961         if self.shader_buffer_float64_atomic_min_max {
2962             if !supported.shader_buffer_float64_atomic_min_max {
2963                 return Err(crate::device::FeatureRestrictionError {
2964                     feature: "shader_buffer_float64_atomic_min_max",
2965                     restriction: crate::device::FeatureRestriction::NotSupported,
2966                 });
2967             }
2968         } else {
2969         }
2970         if self.shader_buffer_float64_atomics {
2971             if !supported.shader_buffer_float64_atomics {
2972                 return Err(crate::device::FeatureRestrictionError {
2973                     feature: "shader_buffer_float64_atomics",
2974                     restriction: crate::device::FeatureRestriction::NotSupported,
2975                 });
2976             }
2977         } else {
2978         }
2979         if self.shader_buffer_int64_atomics {
2980             if !supported.shader_buffer_int64_atomics {
2981                 return Err(crate::device::FeatureRestrictionError {
2982                     feature: "shader_buffer_int64_atomics",
2983                     restriction: crate::device::FeatureRestriction::NotSupported,
2984                 });
2985             }
2986         } else {
2987         }
2988         if self.shader_clip_distance {
2989             if !supported.shader_clip_distance {
2990                 return Err(crate::device::FeatureRestrictionError {
2991                     feature: "shader_clip_distance",
2992                     restriction: crate::device::FeatureRestriction::NotSupported,
2993                 });
2994             }
2995         } else {
2996         }
2997         if self.shader_core_builtins {
2998             if !supported.shader_core_builtins {
2999                 return Err(crate::device::FeatureRestrictionError {
3000                     feature: "shader_core_builtins",
3001                     restriction: crate::device::FeatureRestriction::NotSupported,
3002                 });
3003             }
3004         } else {
3005         }
3006         if self.shader_cull_distance {
3007             if !supported.shader_cull_distance {
3008                 return Err(crate::device::FeatureRestrictionError {
3009                     feature: "shader_cull_distance",
3010                     restriction: crate::device::FeatureRestriction::NotSupported,
3011                 });
3012             }
3013         } else {
3014         }
3015         if self.shader_demote_to_helper_invocation {
3016             if !supported.shader_demote_to_helper_invocation {
3017                 return Err(crate::device::FeatureRestrictionError {
3018                     feature: "shader_demote_to_helper_invocation",
3019                     restriction: crate::device::FeatureRestriction::NotSupported,
3020                 });
3021             }
3022         } else {
3023         }
3024         if self.shader_device_clock {
3025             if !supported.shader_device_clock {
3026                 return Err(crate::device::FeatureRestrictionError {
3027                     feature: "shader_device_clock",
3028                     restriction: crate::device::FeatureRestriction::NotSupported,
3029                 });
3030             }
3031         } else {
3032         }
3033         if self.shader_draw_parameters {
3034             if !supported.shader_draw_parameters {
3035                 return Err(crate::device::FeatureRestrictionError {
3036                     feature: "shader_draw_parameters",
3037                     restriction: crate::device::FeatureRestriction::NotSupported,
3038                 });
3039             }
3040         } else {
3041             if extensions.khr_shader_draw_parameters && api_version >= crate::Version::V1_2 {
3042                 return Err(crate::device::FeatureRestrictionError {
3043                     feature: "shader_draw_parameters",
3044                     restriction: crate::device::FeatureRestriction::RequiredByExtension(
3045                         "khr_shader_draw_parameters",
3046                     ),
3047                 });
3048             }
3049         }
3050         if self.shader_early_and_late_fragment_tests {
3051             if !supported.shader_early_and_late_fragment_tests {
3052                 return Err(crate::device::FeatureRestrictionError {
3053                     feature: "shader_early_and_late_fragment_tests",
3054                     restriction: crate::device::FeatureRestriction::NotSupported,
3055                 });
3056             }
3057         } else {
3058         }
3059         if self.shader_float16 {
3060             if !supported.shader_float16 {
3061                 return Err(crate::device::FeatureRestrictionError {
3062                     feature: "shader_float16",
3063                     restriction: crate::device::FeatureRestriction::NotSupported,
3064                 });
3065             }
3066         } else {
3067         }
3068         if self.shader_float64 {
3069             if !supported.shader_float64 {
3070                 return Err(crate::device::FeatureRestrictionError {
3071                     feature: "shader_float64",
3072                     restriction: crate::device::FeatureRestriction::NotSupported,
3073                 });
3074             }
3075         } else {
3076         }
3077         if self.shader_image_float32_atomic_add {
3078             if !supported.shader_image_float32_atomic_add {
3079                 return Err(crate::device::FeatureRestrictionError {
3080                     feature: "shader_image_float32_atomic_add",
3081                     restriction: crate::device::FeatureRestriction::NotSupported,
3082                 });
3083             }
3084         } else {
3085         }
3086         if self.shader_image_float32_atomic_min_max {
3087             if !supported.shader_image_float32_atomic_min_max {
3088                 return Err(crate::device::FeatureRestrictionError {
3089                     feature: "shader_image_float32_atomic_min_max",
3090                     restriction: crate::device::FeatureRestriction::NotSupported,
3091                 });
3092             }
3093         } else {
3094         }
3095         if self.shader_image_float32_atomics {
3096             if !supported.shader_image_float32_atomics {
3097                 return Err(crate::device::FeatureRestrictionError {
3098                     feature: "shader_image_float32_atomics",
3099                     restriction: crate::device::FeatureRestriction::NotSupported,
3100                 });
3101             }
3102         } else {
3103         }
3104         if self.shader_image_gather_extended {
3105             if !supported.shader_image_gather_extended {
3106                 return Err(crate::device::FeatureRestrictionError {
3107                     feature: "shader_image_gather_extended",
3108                     restriction: crate::device::FeatureRestriction::NotSupported,
3109                 });
3110             }
3111         } else {
3112         }
3113         if self.shader_image_int64_atomics {
3114             if !supported.shader_image_int64_atomics {
3115                 return Err(crate::device::FeatureRestrictionError {
3116                     feature: "shader_image_int64_atomics",
3117                     restriction: crate::device::FeatureRestriction::NotSupported,
3118                 });
3119             }
3120         } else {
3121         }
3122         if self.shader_input_attachment_array_dynamic_indexing {
3123             if !supported.shader_input_attachment_array_dynamic_indexing {
3124                 return Err(crate::device::FeatureRestrictionError {
3125                     feature: "shader_input_attachment_array_dynamic_indexing",
3126                     restriction: crate::device::FeatureRestriction::NotSupported,
3127                 });
3128             }
3129         } else {
3130         }
3131         if self.shader_input_attachment_array_non_uniform_indexing {
3132             if !supported.shader_input_attachment_array_non_uniform_indexing {
3133                 return Err(crate::device::FeatureRestrictionError {
3134                     feature: "shader_input_attachment_array_non_uniform_indexing",
3135                     restriction: crate::device::FeatureRestriction::NotSupported,
3136                 });
3137             }
3138         } else {
3139         }
3140         if self.shader_int16 {
3141             if !supported.shader_int16 {
3142                 return Err(crate::device::FeatureRestrictionError {
3143                     feature: "shader_int16",
3144                     restriction: crate::device::FeatureRestriction::NotSupported,
3145                 });
3146             }
3147         } else {
3148         }
3149         if self.shader_int64 {
3150             if !supported.shader_int64 {
3151                 return Err(crate::device::FeatureRestrictionError {
3152                     feature: "shader_int64",
3153                     restriction: crate::device::FeatureRestriction::NotSupported,
3154                 });
3155             }
3156         } else {
3157         }
3158         if self.shader_int8 {
3159             if !supported.shader_int8 {
3160                 return Err(crate::device::FeatureRestrictionError {
3161                     feature: "shader_int8",
3162                     restriction: crate::device::FeatureRestriction::NotSupported,
3163                 });
3164             }
3165         } else {
3166         }
3167         if self.shader_integer_dot_product {
3168             if !supported.shader_integer_dot_product {
3169                 return Err(crate::device::FeatureRestrictionError {
3170                     feature: "shader_integer_dot_product",
3171                     restriction: crate::device::FeatureRestriction::NotSupported,
3172                 });
3173             }
3174         } else {
3175         }
3176         if self.shader_integer_functions2 {
3177             if !supported.shader_integer_functions2 {
3178                 return Err(crate::device::FeatureRestrictionError {
3179                     feature: "shader_integer_functions2",
3180                     restriction: crate::device::FeatureRestriction::NotSupported,
3181                 });
3182             }
3183         } else {
3184         }
3185         if self.shader_module_identifier {
3186             if !supported.shader_module_identifier {
3187                 return Err(crate::device::FeatureRestrictionError {
3188                     feature: "shader_module_identifier",
3189                     restriction: crate::device::FeatureRestriction::NotSupported,
3190                 });
3191             }
3192         } else {
3193         }
3194         if self.shader_output_layer {
3195             if !supported.shader_output_layer {
3196                 return Err(crate::device::FeatureRestrictionError {
3197                     feature: "shader_output_layer",
3198                     restriction: crate::device::FeatureRestriction::NotSupported,
3199                 });
3200             }
3201         } else {
3202             if extensions.ext_shader_viewport_index_layer && api_version >= crate::Version::V1_2 {
3203                 return Err(crate::device::FeatureRestrictionError {
3204                     feature: "shader_output_layer",
3205                     restriction: crate::device::FeatureRestriction::RequiredByExtension(
3206                         "ext_shader_viewport_index_layer",
3207                     ),
3208                 });
3209             }
3210         }
3211         if self.shader_output_viewport_index {
3212             if !supported.shader_output_viewport_index {
3213                 return Err(crate::device::FeatureRestrictionError {
3214                     feature: "shader_output_viewport_index",
3215                     restriction: crate::device::FeatureRestriction::NotSupported,
3216                 });
3217             }
3218         } else {
3219             if extensions.ext_shader_viewport_index_layer && api_version >= crate::Version::V1_2 {
3220                 return Err(crate::device::FeatureRestrictionError {
3221                     feature: "shader_output_viewport_index",
3222                     restriction: crate::device::FeatureRestriction::RequiredByExtension(
3223                         "ext_shader_viewport_index_layer",
3224                     ),
3225                 });
3226             }
3227         }
3228         if self.shader_resource_min_lod {
3229             if !supported.shader_resource_min_lod {
3230                 return Err(crate::device::FeatureRestrictionError {
3231                     feature: "shader_resource_min_lod",
3232                     restriction: crate::device::FeatureRestriction::NotSupported,
3233                 });
3234             }
3235         } else {
3236         }
3237         if self.shader_resource_residency {
3238             if !supported.shader_resource_residency {
3239                 return Err(crate::device::FeatureRestrictionError {
3240                     feature: "shader_resource_residency",
3241                     restriction: crate::device::FeatureRestriction::NotSupported,
3242                 });
3243             }
3244         } else {
3245         }
3246         if self.shader_sample_rate_interpolation_functions {
3247             if !supported.shader_sample_rate_interpolation_functions {
3248                 return Err(crate::device::FeatureRestrictionError {
3249                     feature: "shader_sample_rate_interpolation_functions",
3250                     restriction: crate::device::FeatureRestriction::NotSupported,
3251                 });
3252             }
3253         } else {
3254         }
3255         if self.shader_sampled_image_array_dynamic_indexing {
3256             if !supported.shader_sampled_image_array_dynamic_indexing {
3257                 return Err(crate::device::FeatureRestrictionError {
3258                     feature: "shader_sampled_image_array_dynamic_indexing",
3259                     restriction: crate::device::FeatureRestriction::NotSupported,
3260                 });
3261             }
3262         } else {
3263         }
3264         if self.shader_sampled_image_array_non_uniform_indexing {
3265             if !supported.shader_sampled_image_array_non_uniform_indexing {
3266                 return Err(crate::device::FeatureRestrictionError {
3267                     feature: "shader_sampled_image_array_non_uniform_indexing",
3268                     restriction: crate::device::FeatureRestriction::NotSupported,
3269                 });
3270             }
3271         } else {
3272         }
3273         if self.shader_shared_float16_atomic_add {
3274             if !supported.shader_shared_float16_atomic_add {
3275                 return Err(crate::device::FeatureRestrictionError {
3276                     feature: "shader_shared_float16_atomic_add",
3277                     restriction: crate::device::FeatureRestriction::NotSupported,
3278                 });
3279             }
3280         } else {
3281         }
3282         if self.shader_shared_float16_atomic_min_max {
3283             if !supported.shader_shared_float16_atomic_min_max {
3284                 return Err(crate::device::FeatureRestrictionError {
3285                     feature: "shader_shared_float16_atomic_min_max",
3286                     restriction: crate::device::FeatureRestriction::NotSupported,
3287                 });
3288             }
3289         } else {
3290         }
3291         if self.shader_shared_float16_atomics {
3292             if !supported.shader_shared_float16_atomics {
3293                 return Err(crate::device::FeatureRestrictionError {
3294                     feature: "shader_shared_float16_atomics",
3295                     restriction: crate::device::FeatureRestriction::NotSupported,
3296                 });
3297             }
3298         } else {
3299         }
3300         if self.shader_shared_float32_atomic_add {
3301             if !supported.shader_shared_float32_atomic_add {
3302                 return Err(crate::device::FeatureRestrictionError {
3303                     feature: "shader_shared_float32_atomic_add",
3304                     restriction: crate::device::FeatureRestriction::NotSupported,
3305                 });
3306             }
3307         } else {
3308         }
3309         if self.shader_shared_float32_atomic_min_max {
3310             if !supported.shader_shared_float32_atomic_min_max {
3311                 return Err(crate::device::FeatureRestrictionError {
3312                     feature: "shader_shared_float32_atomic_min_max",
3313                     restriction: crate::device::FeatureRestriction::NotSupported,
3314                 });
3315             }
3316         } else {
3317         }
3318         if self.shader_shared_float32_atomics {
3319             if !supported.shader_shared_float32_atomics {
3320                 return Err(crate::device::FeatureRestrictionError {
3321                     feature: "shader_shared_float32_atomics",
3322                     restriction: crate::device::FeatureRestriction::NotSupported,
3323                 });
3324             }
3325         } else {
3326         }
3327         if self.shader_shared_float64_atomic_add {
3328             if !supported.shader_shared_float64_atomic_add {
3329                 return Err(crate::device::FeatureRestrictionError {
3330                     feature: "shader_shared_float64_atomic_add",
3331                     restriction: crate::device::FeatureRestriction::NotSupported,
3332                 });
3333             }
3334         } else {
3335         }
3336         if self.shader_shared_float64_atomic_min_max {
3337             if !supported.shader_shared_float64_atomic_min_max {
3338                 return Err(crate::device::FeatureRestrictionError {
3339                     feature: "shader_shared_float64_atomic_min_max",
3340                     restriction: crate::device::FeatureRestriction::NotSupported,
3341                 });
3342             }
3343         } else {
3344         }
3345         if self.shader_shared_float64_atomics {
3346             if !supported.shader_shared_float64_atomics {
3347                 return Err(crate::device::FeatureRestrictionError {
3348                     feature: "shader_shared_float64_atomics",
3349                     restriction: crate::device::FeatureRestriction::NotSupported,
3350                 });
3351             }
3352         } else {
3353         }
3354         if self.shader_shared_int64_atomics {
3355             if !supported.shader_shared_int64_atomics {
3356                 return Err(crate::device::FeatureRestrictionError {
3357                     feature: "shader_shared_int64_atomics",
3358                     restriction: crate::device::FeatureRestriction::NotSupported,
3359                 });
3360             }
3361         } else {
3362         }
3363         if self.shader_sm_builtins {
3364             if !supported.shader_sm_builtins {
3365                 return Err(crate::device::FeatureRestrictionError {
3366                     feature: "shader_sm_builtins",
3367                     restriction: crate::device::FeatureRestriction::NotSupported,
3368                 });
3369             }
3370         } else {
3371         }
3372         if self.shader_storage_buffer_array_dynamic_indexing {
3373             if !supported.shader_storage_buffer_array_dynamic_indexing {
3374                 return Err(crate::device::FeatureRestrictionError {
3375                     feature: "shader_storage_buffer_array_dynamic_indexing",
3376                     restriction: crate::device::FeatureRestriction::NotSupported,
3377                 });
3378             }
3379         } else {
3380         }
3381         if self.shader_storage_buffer_array_non_uniform_indexing {
3382             if !supported.shader_storage_buffer_array_non_uniform_indexing {
3383                 return Err(crate::device::FeatureRestrictionError {
3384                     feature: "shader_storage_buffer_array_non_uniform_indexing",
3385                     restriction: crate::device::FeatureRestriction::NotSupported,
3386                 });
3387             }
3388         } else {
3389         }
3390         if self.shader_storage_image_array_dynamic_indexing {
3391             if !supported.shader_storage_image_array_dynamic_indexing {
3392                 return Err(crate::device::FeatureRestrictionError {
3393                     feature: "shader_storage_image_array_dynamic_indexing",
3394                     restriction: crate::device::FeatureRestriction::NotSupported,
3395                 });
3396             }
3397         } else {
3398         }
3399         if self.shader_storage_image_array_non_uniform_indexing {
3400             if !supported.shader_storage_image_array_non_uniform_indexing {
3401                 return Err(crate::device::FeatureRestrictionError {
3402                     feature: "shader_storage_image_array_non_uniform_indexing",
3403                     restriction: crate::device::FeatureRestriction::NotSupported,
3404                 });
3405             }
3406         } else {
3407         }
3408         if self.shader_storage_image_extended_formats {
3409             if !supported.shader_storage_image_extended_formats {
3410                 return Err(crate::device::FeatureRestrictionError {
3411                     feature: "shader_storage_image_extended_formats",
3412                     restriction: crate::device::FeatureRestriction::NotSupported,
3413                 });
3414             }
3415         } else {
3416         }
3417         if self.shader_storage_image_multisample {
3418             if !supported.shader_storage_image_multisample {
3419                 return Err(crate::device::FeatureRestrictionError {
3420                     feature: "shader_storage_image_multisample",
3421                     restriction: crate::device::FeatureRestriction::NotSupported,
3422                 });
3423             }
3424         } else {
3425         }
3426         if self.shader_storage_image_read_without_format {
3427             if !supported.shader_storage_image_read_without_format {
3428                 return Err(crate::device::FeatureRestrictionError {
3429                     feature: "shader_storage_image_read_without_format",
3430                     restriction: crate::device::FeatureRestriction::NotSupported,
3431                 });
3432             }
3433         } else {
3434         }
3435         if self.shader_storage_image_write_without_format {
3436             if !supported.shader_storage_image_write_without_format {
3437                 return Err(crate::device::FeatureRestrictionError {
3438                     feature: "shader_storage_image_write_without_format",
3439                     restriction: crate::device::FeatureRestriction::NotSupported,
3440                 });
3441             }
3442         } else {
3443         }
3444         if self.shader_storage_texel_buffer_array_dynamic_indexing {
3445             if !supported.shader_storage_texel_buffer_array_dynamic_indexing {
3446                 return Err(crate::device::FeatureRestrictionError {
3447                     feature: "shader_storage_texel_buffer_array_dynamic_indexing",
3448                     restriction: crate::device::FeatureRestriction::NotSupported,
3449                 });
3450             }
3451         } else {
3452         }
3453         if self.shader_storage_texel_buffer_array_non_uniform_indexing {
3454             if !supported.shader_storage_texel_buffer_array_non_uniform_indexing {
3455                 return Err(crate::device::FeatureRestrictionError {
3456                     feature: "shader_storage_texel_buffer_array_non_uniform_indexing",
3457                     restriction: crate::device::FeatureRestriction::NotSupported,
3458                 });
3459             }
3460         } else {
3461         }
3462         if self.shader_subgroup_clock {
3463             if !supported.shader_subgroup_clock {
3464                 return Err(crate::device::FeatureRestrictionError {
3465                     feature: "shader_subgroup_clock",
3466                     restriction: crate::device::FeatureRestriction::NotSupported,
3467                 });
3468             }
3469         } else {
3470         }
3471         if self.shader_subgroup_extended_types {
3472             if !supported.shader_subgroup_extended_types {
3473                 return Err(crate::device::FeatureRestrictionError {
3474                     feature: "shader_subgroup_extended_types",
3475                     restriction: crate::device::FeatureRestriction::NotSupported,
3476                 });
3477             }
3478         } else {
3479         }
3480         if self.shader_subgroup_uniform_control_flow {
3481             if !supported.shader_subgroup_uniform_control_flow {
3482                 return Err(crate::device::FeatureRestrictionError {
3483                     feature: "shader_subgroup_uniform_control_flow",
3484                     restriction: crate::device::FeatureRestriction::NotSupported,
3485                 });
3486             }
3487         } else {
3488         }
3489         if self.shader_terminate_invocation {
3490             if !supported.shader_terminate_invocation {
3491                 return Err(crate::device::FeatureRestrictionError {
3492                     feature: "shader_terminate_invocation",
3493                     restriction: crate::device::FeatureRestriction::NotSupported,
3494                 });
3495             }
3496         } else {
3497         }
3498         if self.shader_tessellation_and_geometry_point_size {
3499             if !supported.shader_tessellation_and_geometry_point_size {
3500                 return Err(crate::device::FeatureRestrictionError {
3501                     feature: "shader_tessellation_and_geometry_point_size",
3502                     restriction: crate::device::FeatureRestriction::NotSupported,
3503                 });
3504             }
3505         } else {
3506         }
3507         if self.shader_uniform_buffer_array_dynamic_indexing {
3508             if !supported.shader_uniform_buffer_array_dynamic_indexing {
3509                 return Err(crate::device::FeatureRestrictionError {
3510                     feature: "shader_uniform_buffer_array_dynamic_indexing",
3511                     restriction: crate::device::FeatureRestriction::NotSupported,
3512                 });
3513             }
3514         } else {
3515         }
3516         if self.shader_uniform_buffer_array_non_uniform_indexing {
3517             if !supported.shader_uniform_buffer_array_non_uniform_indexing {
3518                 return Err(crate::device::FeatureRestrictionError {
3519                     feature: "shader_uniform_buffer_array_non_uniform_indexing",
3520                     restriction: crate::device::FeatureRestriction::NotSupported,
3521                 });
3522             }
3523         } else {
3524         }
3525         if self.shader_uniform_texel_buffer_array_dynamic_indexing {
3526             if !supported.shader_uniform_texel_buffer_array_dynamic_indexing {
3527                 return Err(crate::device::FeatureRestrictionError {
3528                     feature: "shader_uniform_texel_buffer_array_dynamic_indexing",
3529                     restriction: crate::device::FeatureRestriction::NotSupported,
3530                 });
3531             }
3532         } else {
3533         }
3534         if self.shader_uniform_texel_buffer_array_non_uniform_indexing {
3535             if !supported.shader_uniform_texel_buffer_array_non_uniform_indexing {
3536                 return Err(crate::device::FeatureRestrictionError {
3537                     feature: "shader_uniform_texel_buffer_array_non_uniform_indexing",
3538                     restriction: crate::device::FeatureRestriction::NotSupported,
3539                 });
3540             }
3541         } else {
3542         }
3543         if self.shader_zero_initialize_workgroup_memory {
3544             if !supported.shader_zero_initialize_workgroup_memory {
3545                 return Err(crate::device::FeatureRestrictionError {
3546                     feature: "shader_zero_initialize_workgroup_memory",
3547                     restriction: crate::device::FeatureRestriction::NotSupported,
3548                 });
3549             }
3550         } else {
3551         }
3552         if self.shading_rate_coarse_sample_order {
3553             if !supported.shading_rate_coarse_sample_order {
3554                 return Err(crate::device::FeatureRestrictionError {
3555                     feature: "shading_rate_coarse_sample_order",
3556                     restriction: crate::device::FeatureRestriction::NotSupported,
3557                 });
3558             }
3559         } else {
3560         }
3561         if self.shading_rate_image {
3562             if !supported.shading_rate_image {
3563                 return Err(crate::device::FeatureRestrictionError {
3564                     feature: "shading_rate_image",
3565                     restriction: crate::device::FeatureRestriction::NotSupported,
3566                 });
3567             }
3568             if self.pipeline_fragment_shading_rate {
3569                 return Err(crate::device::FeatureRestrictionError {
3570                     feature: "shading_rate_image",
3571                     restriction: crate::device::FeatureRestriction::ConflictsFeature(
3572                         "pipeline_fragment_shading_rate",
3573                     ),
3574                 });
3575             }
3576             if self.primitive_fragment_shading_rate {
3577                 return Err(crate::device::FeatureRestrictionError {
3578                     feature: "shading_rate_image",
3579                     restriction: crate::device::FeatureRestriction::ConflictsFeature(
3580                         "primitive_fragment_shading_rate",
3581                     ),
3582                 });
3583             }
3584             if self.attachment_fragment_shading_rate {
3585                 return Err(crate::device::FeatureRestrictionError {
3586                     feature: "shading_rate_image",
3587                     restriction: crate::device::FeatureRestriction::ConflictsFeature(
3588                         "attachment_fragment_shading_rate",
3589                     ),
3590                 });
3591             }
3592         } else {
3593         }
3594         if self.smooth_lines {
3595             if !supported.smooth_lines {
3596                 return Err(crate::device::FeatureRestrictionError {
3597                     feature: "smooth_lines",
3598                     restriction: crate::device::FeatureRestriction::NotSupported,
3599                 });
3600             }
3601         } else {
3602         }
3603         if self.sparse_binding {
3604             if !supported.sparse_binding {
3605                 return Err(crate::device::FeatureRestrictionError {
3606                     feature: "sparse_binding",
3607                     restriction: crate::device::FeatureRestriction::NotSupported,
3608                 });
3609             }
3610         } else {
3611         }
3612         if self.sparse_image_float32_atomic_add {
3613             if !supported.sparse_image_float32_atomic_add {
3614                 return Err(crate::device::FeatureRestrictionError {
3615                     feature: "sparse_image_float32_atomic_add",
3616                     restriction: crate::device::FeatureRestriction::NotSupported,
3617                 });
3618             }
3619             if !self.shader_image_float32_atomic_add {
3620                 return Err(crate::device::FeatureRestrictionError {
3621                     feature: "sparse_image_float32_atomic_add",
3622                     restriction: crate::device::FeatureRestriction::RequiresFeature(
3623                         "shader_image_float32_atomic_add",
3624                     ),
3625                 });
3626             }
3627         } else {
3628         }
3629         if self.sparse_image_float32_atomic_min_max {
3630             if !supported.sparse_image_float32_atomic_min_max {
3631                 return Err(crate::device::FeatureRestrictionError {
3632                     feature: "sparse_image_float32_atomic_min_max",
3633                     restriction: crate::device::FeatureRestriction::NotSupported,
3634                 });
3635             }
3636             if !self.shader_image_float32_atomic_min_max {
3637                 return Err(crate::device::FeatureRestrictionError {
3638                     feature: "sparse_image_float32_atomic_min_max",
3639                     restriction: crate::device::FeatureRestriction::RequiresFeature(
3640                         "shader_image_float32_atomic_min_max",
3641                     ),
3642                 });
3643             }
3644         } else {
3645         }
3646         if self.sparse_image_float32_atomics {
3647             if !supported.sparse_image_float32_atomics {
3648                 return Err(crate::device::FeatureRestrictionError {
3649                     feature: "sparse_image_float32_atomics",
3650                     restriction: crate::device::FeatureRestriction::NotSupported,
3651                 });
3652             }
3653             if !self.shader_image_float32_atomics {
3654                 return Err(crate::device::FeatureRestrictionError {
3655                     feature: "sparse_image_float32_atomics",
3656                     restriction: crate::device::FeatureRestriction::RequiresFeature(
3657                         "shader_image_float32_atomics",
3658                     ),
3659                 });
3660             }
3661         } else {
3662         }
3663         if self.sparse_image_int64_atomics {
3664             if !supported.sparse_image_int64_atomics {
3665                 return Err(crate::device::FeatureRestrictionError {
3666                     feature: "sparse_image_int64_atomics",
3667                     restriction: crate::device::FeatureRestriction::NotSupported,
3668                 });
3669             }
3670             if !self.shader_image_int64_atomics {
3671                 return Err(crate::device::FeatureRestrictionError {
3672                     feature: "sparse_image_int64_atomics",
3673                     restriction: crate::device::FeatureRestriction::RequiresFeature(
3674                         "shader_image_int64_atomics",
3675                     ),
3676                 });
3677             }
3678         } else {
3679         }
3680         if self.sparse_residency16_samples {
3681             if !supported.sparse_residency16_samples {
3682                 return Err(crate::device::FeatureRestrictionError {
3683                     feature: "sparse_residency16_samples",
3684                     restriction: crate::device::FeatureRestriction::NotSupported,
3685                 });
3686             }
3687         } else {
3688         }
3689         if self.sparse_residency2_samples {
3690             if !supported.sparse_residency2_samples {
3691                 return Err(crate::device::FeatureRestrictionError {
3692                     feature: "sparse_residency2_samples",
3693                     restriction: crate::device::FeatureRestriction::NotSupported,
3694                 });
3695             }
3696         } else {
3697         }
3698         if self.sparse_residency4_samples {
3699             if !supported.sparse_residency4_samples {
3700                 return Err(crate::device::FeatureRestrictionError {
3701                     feature: "sparse_residency4_samples",
3702                     restriction: crate::device::FeatureRestriction::NotSupported,
3703                 });
3704             }
3705         } else {
3706         }
3707         if self.sparse_residency8_samples {
3708             if !supported.sparse_residency8_samples {
3709                 return Err(crate::device::FeatureRestrictionError {
3710                     feature: "sparse_residency8_samples",
3711                     restriction: crate::device::FeatureRestriction::NotSupported,
3712                 });
3713             }
3714         } else {
3715         }
3716         if self.sparse_residency_aliased {
3717             if !supported.sparse_residency_aliased {
3718                 return Err(crate::device::FeatureRestrictionError {
3719                     feature: "sparse_residency_aliased",
3720                     restriction: crate::device::FeatureRestriction::NotSupported,
3721                 });
3722             }
3723         } else {
3724         }
3725         if self.sparse_residency_buffer {
3726             if !supported.sparse_residency_buffer {
3727                 return Err(crate::device::FeatureRestrictionError {
3728                     feature: "sparse_residency_buffer",
3729                     restriction: crate::device::FeatureRestriction::NotSupported,
3730                 });
3731             }
3732         } else {
3733         }
3734         if self.sparse_residency_image2_d {
3735             if !supported.sparse_residency_image2_d {
3736                 return Err(crate::device::FeatureRestrictionError {
3737                     feature: "sparse_residency_image2_d",
3738                     restriction: crate::device::FeatureRestriction::NotSupported,
3739                 });
3740             }
3741         } else {
3742         }
3743         if self.sparse_residency_image3_d {
3744             if !supported.sparse_residency_image3_d {
3745                 return Err(crate::device::FeatureRestrictionError {
3746                     feature: "sparse_residency_image3_d",
3747                     restriction: crate::device::FeatureRestriction::NotSupported,
3748                 });
3749             }
3750         } else {
3751         }
3752         if self.stippled_bresenham_lines {
3753             if !supported.stippled_bresenham_lines {
3754                 return Err(crate::device::FeatureRestrictionError {
3755                     feature: "stippled_bresenham_lines",
3756                     restriction: crate::device::FeatureRestriction::NotSupported,
3757                 });
3758             }
3759         } else {
3760         }
3761         if self.stippled_rectangular_lines {
3762             if !supported.stippled_rectangular_lines {
3763                 return Err(crate::device::FeatureRestrictionError {
3764                     feature: "stippled_rectangular_lines",
3765                     restriction: crate::device::FeatureRestriction::NotSupported,
3766                 });
3767             }
3768         } else {
3769         }
3770         if self.stippled_smooth_lines {
3771             if !supported.stippled_smooth_lines {
3772                 return Err(crate::device::FeatureRestrictionError {
3773                     feature: "stippled_smooth_lines",
3774                     restriction: crate::device::FeatureRestriction::NotSupported,
3775                 });
3776             }
3777         } else {
3778         }
3779         if self.storage_buffer16_bit_access {
3780             if !supported.storage_buffer16_bit_access {
3781                 return Err(crate::device::FeatureRestrictionError {
3782                     feature: "storage_buffer16_bit_access",
3783                     restriction: crate::device::FeatureRestriction::NotSupported,
3784                 });
3785             }
3786         } else {
3787         }
3788         if self.storage_buffer8_bit_access {
3789             if !supported.storage_buffer8_bit_access {
3790                 return Err(crate::device::FeatureRestrictionError {
3791                     feature: "storage_buffer8_bit_access",
3792                     restriction: crate::device::FeatureRestriction::NotSupported,
3793                 });
3794             }
3795         } else {
3796         }
3797         if self.storage_input_output16 {
3798             if !supported.storage_input_output16 {
3799                 return Err(crate::device::FeatureRestrictionError {
3800                     feature: "storage_input_output16",
3801                     restriction: crate::device::FeatureRestriction::NotSupported,
3802                 });
3803             }
3804         } else {
3805         }
3806         if self.storage_push_constant16 {
3807             if !supported.storage_push_constant16 {
3808                 return Err(crate::device::FeatureRestrictionError {
3809                     feature: "storage_push_constant16",
3810                     restriction: crate::device::FeatureRestriction::NotSupported,
3811                 });
3812             }
3813         } else {
3814         }
3815         if self.storage_push_constant8 {
3816             if !supported.storage_push_constant8 {
3817                 return Err(crate::device::FeatureRestrictionError {
3818                     feature: "storage_push_constant8",
3819                     restriction: crate::device::FeatureRestriction::NotSupported,
3820                 });
3821             }
3822         } else {
3823         }
3824         if self.subgroup_broadcast_dynamic_id {
3825             if !supported.subgroup_broadcast_dynamic_id {
3826                 return Err(crate::device::FeatureRestrictionError {
3827                     feature: "subgroup_broadcast_dynamic_id",
3828                     restriction: crate::device::FeatureRestriction::NotSupported,
3829                 });
3830             }
3831         } else {
3832         }
3833         if self.subgroup_size_control {
3834             if !supported.subgroup_size_control {
3835                 return Err(crate::device::FeatureRestrictionError {
3836                     feature: "subgroup_size_control",
3837                     restriction: crate::device::FeatureRestriction::NotSupported,
3838                 });
3839             }
3840         } else {
3841         }
3842         if self.subpass_merge_feedback {
3843             if !supported.subpass_merge_feedback {
3844                 return Err(crate::device::FeatureRestrictionError {
3845                     feature: "subpass_merge_feedback",
3846                     restriction: crate::device::FeatureRestriction::NotSupported,
3847                 });
3848             }
3849         } else {
3850         }
3851         if self.subpass_shading {
3852             if !supported.subpass_shading {
3853                 return Err(crate::device::FeatureRestrictionError {
3854                     feature: "subpass_shading",
3855                     restriction: crate::device::FeatureRestriction::NotSupported,
3856                 });
3857             }
3858         } else {
3859         }
3860         if self.supersample_fragment_shading_rates {
3861             if !supported.supersample_fragment_shading_rates {
3862                 return Err(crate::device::FeatureRestrictionError {
3863                     feature: "supersample_fragment_shading_rates",
3864                     restriction: crate::device::FeatureRestriction::NotSupported,
3865                 });
3866             }
3867         } else {
3868         }
3869         if self.swapchain_maintenance1 {
3870             if !supported.swapchain_maintenance1 {
3871                 return Err(crate::device::FeatureRestrictionError {
3872                     feature: "swapchain_maintenance1",
3873                     restriction: crate::device::FeatureRestriction::NotSupported,
3874                 });
3875             }
3876         } else {
3877         }
3878         if self.synchronization2 {
3879             if !supported.synchronization2 {
3880                 return Err(crate::device::FeatureRestrictionError {
3881                     feature: "synchronization2",
3882                     restriction: crate::device::FeatureRestriction::NotSupported,
3883                 });
3884             }
3885         } else {
3886         }
3887         if self.task_shader {
3888             if !supported.task_shader {
3889                 return Err(crate::device::FeatureRestrictionError {
3890                     feature: "task_shader",
3891                     restriction: crate::device::FeatureRestriction::NotSupported,
3892                 });
3893             }
3894         } else {
3895         }
3896         if self.tessellation_isolines {
3897             if !supported.tessellation_isolines {
3898                 return Err(crate::device::FeatureRestrictionError {
3899                     feature: "tessellation_isolines",
3900                     restriction: crate::device::FeatureRestriction::NotSupported,
3901                 });
3902             }
3903         } else {
3904         }
3905         if self.tessellation_point_mode {
3906             if !supported.tessellation_point_mode {
3907                 return Err(crate::device::FeatureRestrictionError {
3908                     feature: "tessellation_point_mode",
3909                     restriction: crate::device::FeatureRestriction::NotSupported,
3910                 });
3911             }
3912         } else {
3913         }
3914         if self.tessellation_shader {
3915             if !supported.tessellation_shader {
3916                 return Err(crate::device::FeatureRestrictionError {
3917                     feature: "tessellation_shader",
3918                     restriction: crate::device::FeatureRestriction::NotSupported,
3919                 });
3920             }
3921         } else {
3922         }
3923         if self.texel_buffer_alignment {
3924             if !supported.texel_buffer_alignment {
3925                 return Err(crate::device::FeatureRestrictionError {
3926                     feature: "texel_buffer_alignment",
3927                     restriction: crate::device::FeatureRestriction::NotSupported,
3928                 });
3929             }
3930         } else {
3931         }
3932         if self.texture_block_match {
3933             if !supported.texture_block_match {
3934                 return Err(crate::device::FeatureRestrictionError {
3935                     feature: "texture_block_match",
3936                     restriction: crate::device::FeatureRestriction::NotSupported,
3937                 });
3938             }
3939         } else {
3940         }
3941         if self.texture_box_filter {
3942             if !supported.texture_box_filter {
3943                 return Err(crate::device::FeatureRestrictionError {
3944                     feature: "texture_box_filter",
3945                     restriction: crate::device::FeatureRestriction::NotSupported,
3946                 });
3947             }
3948         } else {
3949         }
3950         if self.texture_compression_astc_hdr {
3951             if !supported.texture_compression_astc_hdr {
3952                 return Err(crate::device::FeatureRestrictionError {
3953                     feature: "texture_compression_astc_hdr",
3954                     restriction: crate::device::FeatureRestriction::NotSupported,
3955                 });
3956             }
3957         } else {
3958         }
3959         if self.texture_compression_astc_ldr {
3960             if !supported.texture_compression_astc_ldr {
3961                 return Err(crate::device::FeatureRestrictionError {
3962                     feature: "texture_compression_astc_ldr",
3963                     restriction: crate::device::FeatureRestriction::NotSupported,
3964                 });
3965             }
3966         } else {
3967         }
3968         if self.texture_compression_bc {
3969             if !supported.texture_compression_bc {
3970                 return Err(crate::device::FeatureRestrictionError {
3971                     feature: "texture_compression_bc",
3972                     restriction: crate::device::FeatureRestriction::NotSupported,
3973                 });
3974             }
3975         } else {
3976         }
3977         if self.texture_compression_etc2 {
3978             if !supported.texture_compression_etc2 {
3979                 return Err(crate::device::FeatureRestrictionError {
3980                     feature: "texture_compression_etc2",
3981                     restriction: crate::device::FeatureRestriction::NotSupported,
3982                 });
3983             }
3984         } else {
3985         }
3986         if self.texture_sample_weighted {
3987             if !supported.texture_sample_weighted {
3988                 return Err(crate::device::FeatureRestrictionError {
3989                     feature: "texture_sample_weighted",
3990                     restriction: crate::device::FeatureRestriction::NotSupported,
3991                 });
3992             }
3993         } else {
3994         }
3995         if self.tile_properties {
3996             if !supported.tile_properties {
3997                 return Err(crate::device::FeatureRestrictionError {
3998                     feature: "tile_properties",
3999                     restriction: crate::device::FeatureRestriction::NotSupported,
4000                 });
4001             }
4002         } else {
4003         }
4004         if self.timeline_semaphore {
4005             if !supported.timeline_semaphore {
4006                 return Err(crate::device::FeatureRestrictionError {
4007                     feature: "timeline_semaphore",
4008                     restriction: crate::device::FeatureRestriction::NotSupported,
4009                 });
4010             }
4011         } else {
4012         }
4013         if self.transform_feedback {
4014             if !supported.transform_feedback {
4015                 return Err(crate::device::FeatureRestrictionError {
4016                     feature: "transform_feedback",
4017                     restriction: crate::device::FeatureRestriction::NotSupported,
4018                 });
4019             }
4020         } else {
4021         }
4022         if self.transform_feedback_preserves_provoking_vertex {
4023             if !supported.transform_feedback_preserves_provoking_vertex {
4024                 return Err(crate::device::FeatureRestrictionError {
4025                     feature: "transform_feedback_preserves_provoking_vertex",
4026                     restriction: crate::device::FeatureRestriction::NotSupported,
4027                 });
4028             }
4029         } else {
4030         }
4031         if self.triangle_fans {
4032             if !supported.triangle_fans {
4033                 return Err(crate::device::FeatureRestrictionError {
4034                     feature: "triangle_fans",
4035                     restriction: crate::device::FeatureRestriction::NotSupported,
4036                 });
4037             }
4038         } else {
4039         }
4040         if self.uniform_and_storage_buffer16_bit_access {
4041             if !supported.uniform_and_storage_buffer16_bit_access {
4042                 return Err(crate::device::FeatureRestrictionError {
4043                     feature: "uniform_and_storage_buffer16_bit_access",
4044                     restriction: crate::device::FeatureRestriction::NotSupported,
4045                 });
4046             }
4047         } else {
4048         }
4049         if self.uniform_and_storage_buffer8_bit_access {
4050             if !supported.uniform_and_storage_buffer8_bit_access {
4051                 return Err(crate::device::FeatureRestrictionError {
4052                     feature: "uniform_and_storage_buffer8_bit_access",
4053                     restriction: crate::device::FeatureRestriction::NotSupported,
4054                 });
4055             }
4056         } else {
4057         }
4058         if self.uniform_buffer_standard_layout {
4059             if !supported.uniform_buffer_standard_layout {
4060                 return Err(crate::device::FeatureRestrictionError {
4061                     feature: "uniform_buffer_standard_layout",
4062                     restriction: crate::device::FeatureRestriction::NotSupported,
4063                 });
4064             }
4065         } else {
4066         }
4067         if self.variable_multisample_rate {
4068             if !supported.variable_multisample_rate {
4069                 return Err(crate::device::FeatureRestrictionError {
4070                     feature: "variable_multisample_rate",
4071                     restriction: crate::device::FeatureRestriction::NotSupported,
4072                 });
4073             }
4074         } else {
4075         }
4076         if self.variable_pointers {
4077             if !supported.variable_pointers {
4078                 return Err(crate::device::FeatureRestrictionError {
4079                     feature: "variable_pointers",
4080                     restriction: crate::device::FeatureRestriction::NotSupported,
4081                 });
4082             }
4083         } else {
4084         }
4085         if self.variable_pointers_storage_buffer {
4086             if !supported.variable_pointers_storage_buffer {
4087                 return Err(crate::device::FeatureRestrictionError {
4088                     feature: "variable_pointers_storage_buffer",
4089                     restriction: crate::device::FeatureRestriction::NotSupported,
4090                 });
4091             }
4092         } else {
4093         }
4094         if self.vertex_attribute_access_beyond_stride {
4095             if !supported.vertex_attribute_access_beyond_stride {
4096                 return Err(crate::device::FeatureRestrictionError {
4097                     feature: "vertex_attribute_access_beyond_stride",
4098                     restriction: crate::device::FeatureRestriction::NotSupported,
4099                 });
4100             }
4101         } else {
4102         }
4103         if self.vertex_attribute_instance_rate_divisor {
4104             if !supported.vertex_attribute_instance_rate_divisor {
4105                 return Err(crate::device::FeatureRestrictionError {
4106                     feature: "vertex_attribute_instance_rate_divisor",
4107                     restriction: crate::device::FeatureRestriction::NotSupported,
4108                 });
4109             }
4110         } else {
4111         }
4112         if self.vertex_attribute_instance_rate_zero_divisor {
4113             if !supported.vertex_attribute_instance_rate_zero_divisor {
4114                 return Err(crate::device::FeatureRestrictionError {
4115                     feature: "vertex_attribute_instance_rate_zero_divisor",
4116                     restriction: crate::device::FeatureRestriction::NotSupported,
4117                 });
4118             }
4119         } else {
4120         }
4121         if self.vertex_input_dynamic_state {
4122             if !supported.vertex_input_dynamic_state {
4123                 return Err(crate::device::FeatureRestrictionError {
4124                     feature: "vertex_input_dynamic_state",
4125                     restriction: crate::device::FeatureRestriction::NotSupported,
4126                 });
4127             }
4128         } else {
4129         }
4130         if self.vertex_pipeline_stores_and_atomics {
4131             if !supported.vertex_pipeline_stores_and_atomics {
4132                 return Err(crate::device::FeatureRestrictionError {
4133                     feature: "vertex_pipeline_stores_and_atomics",
4134                     restriction: crate::device::FeatureRestriction::NotSupported,
4135                 });
4136             }
4137         } else {
4138         }
4139         if self.vulkan_memory_model {
4140             if !supported.vulkan_memory_model {
4141                 return Err(crate::device::FeatureRestrictionError {
4142                     feature: "vulkan_memory_model",
4143                     restriction: crate::device::FeatureRestriction::NotSupported,
4144                 });
4145             }
4146         } else {
4147         }
4148         if self.vulkan_memory_model_availability_visibility_chains {
4149             if !supported.vulkan_memory_model_availability_visibility_chains {
4150                 return Err(crate::device::FeatureRestrictionError {
4151                     feature: "vulkan_memory_model_availability_visibility_chains",
4152                     restriction: crate::device::FeatureRestriction::NotSupported,
4153                 });
4154             }
4155         } else {
4156         }
4157         if self.vulkan_memory_model_device_scope {
4158             if !supported.vulkan_memory_model_device_scope {
4159                 return Err(crate::device::FeatureRestrictionError {
4160                     feature: "vulkan_memory_model_device_scope",
4161                     restriction: crate::device::FeatureRestriction::NotSupported,
4162                 });
4163             }
4164         } else {
4165         }
4166         if self.wide_lines {
4167             if !supported.wide_lines {
4168                 return Err(crate::device::FeatureRestrictionError {
4169                     feature: "wide_lines",
4170                     restriction: crate::device::FeatureRestriction::NotSupported,
4171                 });
4172             }
4173         } else {
4174         }
4175         if self.workgroup_memory_explicit_layout {
4176             if !supported.workgroup_memory_explicit_layout {
4177                 return Err(crate::device::FeatureRestrictionError {
4178                     feature: "workgroup_memory_explicit_layout",
4179                     restriction: crate::device::FeatureRestriction::NotSupported,
4180                 });
4181             }
4182         } else {
4183         }
4184         if self.workgroup_memory_explicit_layout16_bit_access {
4185             if !supported.workgroup_memory_explicit_layout16_bit_access {
4186                 return Err(crate::device::FeatureRestrictionError {
4187                     feature: "workgroup_memory_explicit_layout16_bit_access",
4188                     restriction: crate::device::FeatureRestriction::NotSupported,
4189                 });
4190             }
4191         } else {
4192         }
4193         if self.workgroup_memory_explicit_layout8_bit_access {
4194             if !supported.workgroup_memory_explicit_layout8_bit_access {
4195                 return Err(crate::device::FeatureRestrictionError {
4196                     feature: "workgroup_memory_explicit_layout8_bit_access",
4197                     restriction: crate::device::FeatureRestriction::NotSupported,
4198                 });
4199             }
4200         } else {
4201         }
4202         if self.workgroup_memory_explicit_layout_scalar_block_layout {
4203             if !supported.workgroup_memory_explicit_layout_scalar_block_layout {
4204                 return Err(crate::device::FeatureRestrictionError {
4205                     feature: "workgroup_memory_explicit_layout_scalar_block_layout",
4206                     restriction: crate::device::FeatureRestriction::NotSupported,
4207                 });
4208             }
4209         } else {
4210         }
4211         if self.ycbcr2plane444_formats {
4212             if !supported.ycbcr2plane444_formats {
4213                 return Err(crate::device::FeatureRestrictionError {
4214                     feature: "ycbcr2plane444_formats",
4215                     restriction: crate::device::FeatureRestriction::NotSupported,
4216                 });
4217             }
4218         } else {
4219         }
4220         if self.ycbcr_image_arrays {
4221             if !supported.ycbcr_image_arrays {
4222                 return Err(crate::device::FeatureRestrictionError {
4223                     feature: "ycbcr_image_arrays",
4224                     restriction: crate::device::FeatureRestriction::NotSupported,
4225                 });
4226             }
4227         } else {
4228         }
4229         Ok(())
4230     }
4231     #[doc = r" Returns an `Features` object with none of the members set."]
4232     #[inline]
empty() -> Self4233     pub const fn empty() -> Self {
4234         Self {
4235             acceleration_structure: false,
4236             acceleration_structure_capture_replay: false,
4237             acceleration_structure_host_commands: false,
4238             acceleration_structure_indirect_build: false,
4239             advanced_blend_coherent_operations: false,
4240             alpha_to_one: false,
4241             amigo_profiling: false,
4242             attachment_feedback_loop_layout: false,
4243             attachment_fragment_shading_rate: false,
4244             border_color_swizzle: false,
4245             border_color_swizzle_from_image: false,
4246             bresenham_lines: false,
4247             buffer_device_address: false,
4248             buffer_device_address_capture_replay: false,
4249             buffer_device_address_multi_device: false,
4250             color_write_enable: false,
4251             compute_derivative_group_linear: false,
4252             compute_derivative_group_quads: false,
4253             compute_full_subgroups: false,
4254             conditional_rendering: false,
4255             constant_alpha_color_blend_factors: false,
4256             cooperative_matrix: false,
4257             cooperative_matrix_robust_buffer_access: false,
4258             corner_sampled_image: false,
4259             coverage_reduction_mode: false,
4260             custom_border_color_without_format: false,
4261             custom_border_colors: false,
4262             decode_mode_shared_exponent: false,
4263             dedicated_allocation_image_aliasing: false,
4264             depth_bias_clamp: false,
4265             depth_bounds: false,
4266             depth_clamp: false,
4267             depth_clamp_zero_one: false,
4268             depth_clip_control: false,
4269             depth_clip_enable: false,
4270             descriptor_binding_acceleration_structure_update_after_bind: false,
4271             descriptor_binding_inline_uniform_block_update_after_bind: false,
4272             descriptor_binding_partially_bound: false,
4273             descriptor_binding_sampled_image_update_after_bind: false,
4274             descriptor_binding_storage_buffer_update_after_bind: false,
4275             descriptor_binding_storage_image_update_after_bind: false,
4276             descriptor_binding_storage_texel_buffer_update_after_bind: false,
4277             descriptor_binding_uniform_buffer_update_after_bind: false,
4278             descriptor_binding_uniform_texel_buffer_update_after_bind: false,
4279             descriptor_binding_update_unused_while_pending: false,
4280             descriptor_binding_variable_descriptor_count: false,
4281             descriptor_buffer: false,
4282             descriptor_buffer_capture_replay: false,
4283             descriptor_buffer_image_layout_ignored: false,
4284             descriptor_buffer_push_descriptors: false,
4285             descriptor_indexing: false,
4286             descriptor_set_host_mapping: false,
4287             device_coherent_memory: false,
4288             device_fault: false,
4289             device_fault_vendor_binary: false,
4290             device_generated_commands: false,
4291             device_memory_report: false,
4292             diagnostics_config: false,
4293             draw_indirect_count: false,
4294             draw_indirect_first_instance: false,
4295             dual_src_blend: false,
4296             dynamic_rendering: false,
4297             events: false,
4298             exclusive_scissor: false,
4299             extended_dynamic_state: false,
4300             extended_dynamic_state2: false,
4301             extended_dynamic_state2_logic_op: false,
4302             extended_dynamic_state2_patch_control_points: false,
4303             extended_dynamic_state3_alpha_to_coverage_enable: false,
4304             extended_dynamic_state3_alpha_to_one_enable: false,
4305             extended_dynamic_state3_color_blend_advanced: false,
4306             extended_dynamic_state3_color_blend_enable: false,
4307             extended_dynamic_state3_color_blend_equation: false,
4308             extended_dynamic_state3_color_write_mask: false,
4309             extended_dynamic_state3_conservative_rasterization_mode: false,
4310             extended_dynamic_state3_coverage_modulation_mode: false,
4311             extended_dynamic_state3_coverage_modulation_table: false,
4312             extended_dynamic_state3_coverage_modulation_table_enable: false,
4313             extended_dynamic_state3_coverage_reduction_mode: false,
4314             extended_dynamic_state3_coverage_to_color_enable: false,
4315             extended_dynamic_state3_coverage_to_color_location: false,
4316             extended_dynamic_state3_depth_clamp_enable: false,
4317             extended_dynamic_state3_depth_clip_enable: false,
4318             extended_dynamic_state3_depth_clip_negative_one_to_one: false,
4319             extended_dynamic_state3_extra_primitive_overestimation_size: false,
4320             extended_dynamic_state3_line_rasterization_mode: false,
4321             extended_dynamic_state3_line_stipple_enable: false,
4322             extended_dynamic_state3_logic_op_enable: false,
4323             extended_dynamic_state3_polygon_mode: false,
4324             extended_dynamic_state3_provoking_vertex_mode: false,
4325             extended_dynamic_state3_rasterization_samples: false,
4326             extended_dynamic_state3_rasterization_stream: false,
4327             extended_dynamic_state3_representative_fragment_test_enable: false,
4328             extended_dynamic_state3_sample_locations_enable: false,
4329             extended_dynamic_state3_sample_mask: false,
4330             extended_dynamic_state3_shading_rate_image_enable: false,
4331             extended_dynamic_state3_tessellation_domain_origin: false,
4332             extended_dynamic_state3_viewport_swizzle: false,
4333             extended_dynamic_state3_viewport_w_scaling_enable: false,
4334             external_memory_rdma: false,
4335             fill_mode_non_solid: false,
4336             format_a4b4g4r4: false,
4337             format_a4r4g4b4: false,
4338             format_rgba10x6_without_y_cb_cr_sampler: false,
4339             fragment_density_map: false,
4340             fragment_density_map_deferred: false,
4341             fragment_density_map_dynamic: false,
4342             fragment_density_map_non_subsampled_images: false,
4343             fragment_density_map_offset: false,
4344             fragment_shader_barycentric: false,
4345             fragment_shader_pixel_interlock: false,
4346             fragment_shader_sample_interlock: false,
4347             fragment_shader_shading_rate_interlock: false,
4348             fragment_shading_rate_enums: false,
4349             fragment_stores_and_atomics: false,
4350             full_draw_index_uint32: false,
4351             geometry_shader: false,
4352             geometry_streams: false,
4353             global_priority_query: false,
4354             graphics_pipeline_library: false,
4355             host_query_reset: false,
4356             image2_d_view_of3_d: false,
4357             image_compression_control: false,
4358             image_compression_control_swapchain: false,
4359             image_cube_array: false,
4360             image_footprint: false,
4361             image_view2_d_on3_d_image: false,
4362             image_view_format_reinterpretation: false,
4363             image_view_format_swizzle: false,
4364             imageless_framebuffer: false,
4365             independent_blend: false,
4366             index_type_uint8: false,
4367             indirect_copy: false,
4368             inherited_conditional_rendering: false,
4369             inherited_queries: false,
4370             inherited_viewport_scissor2_d: false,
4371             inline_uniform_block: false,
4372             invocation_mask: false,
4373             large_points: false,
4374             legacy_dithering: false,
4375             linear_color_attachment: false,
4376             logic_op: false,
4377             maintenance4: false,
4378             memory_decompression: false,
4379             memory_priority: false,
4380             mesh_shader: false,
4381             mesh_shader_queries: false,
4382             micromap: false,
4383             micromap_capture_replay: false,
4384             micromap_host_commands: false,
4385             min_lod: false,
4386             multi_draw: false,
4387             multi_draw_indirect: false,
4388             multi_viewport: false,
4389             multisample_array_image: false,
4390             multisampled_render_to_single_sampled: false,
4391             multiview: false,
4392             multiview_geometry_shader: false,
4393             multiview_mesh_shader: false,
4394             multiview_per_view_viewports: false,
4395             multiview_tessellation_shader: false,
4396             mutable_comparison_samplers: false,
4397             mutable_descriptor_type: false,
4398             no_invocation_fragment_shading_rates: false,
4399             non_seamless_cube_map: false,
4400             null_descriptor: false,
4401             occlusion_query_precise: false,
4402             optical_flow: false,
4403             pageable_device_local_memory: false,
4404             performance_counter_multiple_query_pools: false,
4405             performance_counter_query_pools: false,
4406             pipeline_creation_cache_control: false,
4407             pipeline_executable_info: false,
4408             pipeline_fragment_shading_rate: false,
4409             pipeline_properties_identifier: false,
4410             pipeline_protected_access: false,
4411             pipeline_robustness: false,
4412             pipeline_statistics_query: false,
4413             point_polygons: false,
4414             present_barrier: false,
4415             present_id: false,
4416             present_wait: false,
4417             primitive_fragment_shading_rate: false,
4418             primitive_fragment_shading_rate_mesh_shader: false,
4419             primitive_topology_list_restart: false,
4420             primitive_topology_patch_list_restart: false,
4421             primitives_generated_query: false,
4422             primitives_generated_query_with_non_zero_streams: false,
4423             primitives_generated_query_with_rasterizer_discard: false,
4424             private_data: false,
4425             protected_memory: false,
4426             provoking_vertex_last: false,
4427             rasterization_order_color_attachment_access: false,
4428             rasterization_order_depth_attachment_access: false,
4429             rasterization_order_stencil_attachment_access: false,
4430             ray_query: false,
4431             ray_tracing_invocation_reorder: false,
4432             ray_tracing_maintenance1: false,
4433             ray_tracing_motion_blur: false,
4434             ray_tracing_motion_blur_pipeline_trace_rays_indirect: false,
4435             ray_tracing_pipeline: false,
4436             ray_tracing_pipeline_shader_group_handle_capture_replay: false,
4437             ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: false,
4438             ray_tracing_pipeline_trace_rays_indirect: false,
4439             ray_tracing_pipeline_trace_rays_indirect2: false,
4440             ray_traversal_primitive_culling: false,
4441             rectangular_lines: false,
4442             report_address_binding: false,
4443             representative_fragment_test: false,
4444             robust_buffer_access: false,
4445             robust_buffer_access2: false,
4446             robust_image_access: false,
4447             robust_image_access2: false,
4448             runtime_descriptor_array: false,
4449             sample_rate_shading: false,
4450             sampler2_d_view_of3_d: false,
4451             sampler_anisotropy: false,
4452             sampler_filter_minmax: false,
4453             sampler_mip_lod_bias: false,
4454             sampler_mirror_clamp_to_edge: false,
4455             sampler_ycbcr_conversion: false,
4456             scalar_block_layout: false,
4457             separate_depth_stencil_layouts: false,
4458             separate_stencil_mask_ref: false,
4459             shader_buffer_float16_atomic_add: false,
4460             shader_buffer_float16_atomic_min_max: false,
4461             shader_buffer_float16_atomics: false,
4462             shader_buffer_float32_atomic_add: false,
4463             shader_buffer_float32_atomic_min_max: false,
4464             shader_buffer_float32_atomics: false,
4465             shader_buffer_float64_atomic_add: false,
4466             shader_buffer_float64_atomic_min_max: false,
4467             shader_buffer_float64_atomics: false,
4468             shader_buffer_int64_atomics: false,
4469             shader_clip_distance: false,
4470             shader_core_builtins: false,
4471             shader_cull_distance: false,
4472             shader_demote_to_helper_invocation: false,
4473             shader_device_clock: false,
4474             shader_draw_parameters: false,
4475             shader_early_and_late_fragment_tests: false,
4476             shader_float16: false,
4477             shader_float64: false,
4478             shader_image_float32_atomic_add: false,
4479             shader_image_float32_atomic_min_max: false,
4480             shader_image_float32_atomics: false,
4481             shader_image_gather_extended: false,
4482             shader_image_int64_atomics: false,
4483             shader_input_attachment_array_dynamic_indexing: false,
4484             shader_input_attachment_array_non_uniform_indexing: false,
4485             shader_int16: false,
4486             shader_int64: false,
4487             shader_int8: false,
4488             shader_integer_dot_product: false,
4489             shader_integer_functions2: false,
4490             shader_module_identifier: false,
4491             shader_output_layer: false,
4492             shader_output_viewport_index: false,
4493             shader_resource_min_lod: false,
4494             shader_resource_residency: false,
4495             shader_sample_rate_interpolation_functions: false,
4496             shader_sampled_image_array_dynamic_indexing: false,
4497             shader_sampled_image_array_non_uniform_indexing: false,
4498             shader_shared_float16_atomic_add: false,
4499             shader_shared_float16_atomic_min_max: false,
4500             shader_shared_float16_atomics: false,
4501             shader_shared_float32_atomic_add: false,
4502             shader_shared_float32_atomic_min_max: false,
4503             shader_shared_float32_atomics: false,
4504             shader_shared_float64_atomic_add: false,
4505             shader_shared_float64_atomic_min_max: false,
4506             shader_shared_float64_atomics: false,
4507             shader_shared_int64_atomics: false,
4508             shader_sm_builtins: false,
4509             shader_storage_buffer_array_dynamic_indexing: false,
4510             shader_storage_buffer_array_non_uniform_indexing: false,
4511             shader_storage_image_array_dynamic_indexing: false,
4512             shader_storage_image_array_non_uniform_indexing: false,
4513             shader_storage_image_extended_formats: false,
4514             shader_storage_image_multisample: false,
4515             shader_storage_image_read_without_format: false,
4516             shader_storage_image_write_without_format: false,
4517             shader_storage_texel_buffer_array_dynamic_indexing: false,
4518             shader_storage_texel_buffer_array_non_uniform_indexing: false,
4519             shader_subgroup_clock: false,
4520             shader_subgroup_extended_types: false,
4521             shader_subgroup_uniform_control_flow: false,
4522             shader_terminate_invocation: false,
4523             shader_tessellation_and_geometry_point_size: false,
4524             shader_uniform_buffer_array_dynamic_indexing: false,
4525             shader_uniform_buffer_array_non_uniform_indexing: false,
4526             shader_uniform_texel_buffer_array_dynamic_indexing: false,
4527             shader_uniform_texel_buffer_array_non_uniform_indexing: false,
4528             shader_zero_initialize_workgroup_memory: false,
4529             shading_rate_coarse_sample_order: false,
4530             shading_rate_image: false,
4531             smooth_lines: false,
4532             sparse_binding: false,
4533             sparse_image_float32_atomic_add: false,
4534             sparse_image_float32_atomic_min_max: false,
4535             sparse_image_float32_atomics: false,
4536             sparse_image_int64_atomics: false,
4537             sparse_residency16_samples: false,
4538             sparse_residency2_samples: false,
4539             sparse_residency4_samples: false,
4540             sparse_residency8_samples: false,
4541             sparse_residency_aliased: false,
4542             sparse_residency_buffer: false,
4543             sparse_residency_image2_d: false,
4544             sparse_residency_image3_d: false,
4545             stippled_bresenham_lines: false,
4546             stippled_rectangular_lines: false,
4547             stippled_smooth_lines: false,
4548             storage_buffer16_bit_access: false,
4549             storage_buffer8_bit_access: false,
4550             storage_input_output16: false,
4551             storage_push_constant16: false,
4552             storage_push_constant8: false,
4553             subgroup_broadcast_dynamic_id: false,
4554             subgroup_size_control: false,
4555             subpass_merge_feedback: false,
4556             subpass_shading: false,
4557             supersample_fragment_shading_rates: false,
4558             swapchain_maintenance1: false,
4559             synchronization2: false,
4560             task_shader: false,
4561             tessellation_isolines: false,
4562             tessellation_point_mode: false,
4563             tessellation_shader: false,
4564             texel_buffer_alignment: false,
4565             texture_block_match: false,
4566             texture_box_filter: false,
4567             texture_compression_astc_hdr: false,
4568             texture_compression_astc_ldr: false,
4569             texture_compression_bc: false,
4570             texture_compression_etc2: false,
4571             texture_sample_weighted: false,
4572             tile_properties: false,
4573             timeline_semaphore: false,
4574             transform_feedback: false,
4575             transform_feedback_preserves_provoking_vertex: false,
4576             triangle_fans: false,
4577             uniform_and_storage_buffer16_bit_access: false,
4578             uniform_and_storage_buffer8_bit_access: false,
4579             uniform_buffer_standard_layout: false,
4580             variable_multisample_rate: false,
4581             variable_pointers: false,
4582             variable_pointers_storage_buffer: false,
4583             vertex_attribute_access_beyond_stride: false,
4584             vertex_attribute_instance_rate_divisor: false,
4585             vertex_attribute_instance_rate_zero_divisor: false,
4586             vertex_input_dynamic_state: false,
4587             vertex_pipeline_stores_and_atomics: false,
4588             vulkan_memory_model: false,
4589             vulkan_memory_model_availability_visibility_chains: false,
4590             vulkan_memory_model_device_scope: false,
4591             wide_lines: false,
4592             workgroup_memory_explicit_layout: false,
4593             workgroup_memory_explicit_layout16_bit_access: false,
4594             workgroup_memory_explicit_layout8_bit_access: false,
4595             workgroup_memory_explicit_layout_scalar_block_layout: false,
4596             ycbcr2plane444_formats: false,
4597             ycbcr_image_arrays: false,
4598             _ne: crate::NonExhaustive(()),
4599         }
4600     }
4601     #[doc = r" Returns an `Features` object with none of the members set."]
4602     #[deprecated(since = "0.31.0", note = "Use `empty` instead.")]
4603     #[inline]
none() -> Self4604     pub const fn none() -> Self {
4605         Self::empty()
4606     }
4607     #[doc = r" Returns a `Features` object with all of the members set."]
4608     #[cfg(test)]
all() -> Features4609     pub(crate) const fn all() -> Features {
4610         Features {
4611             acceleration_structure: true,
4612             acceleration_structure_capture_replay: true,
4613             acceleration_structure_host_commands: true,
4614             acceleration_structure_indirect_build: true,
4615             advanced_blend_coherent_operations: true,
4616             alpha_to_one: true,
4617             amigo_profiling: true,
4618             attachment_feedback_loop_layout: true,
4619             attachment_fragment_shading_rate: true,
4620             border_color_swizzle: true,
4621             border_color_swizzle_from_image: true,
4622             bresenham_lines: true,
4623             buffer_device_address: true,
4624             buffer_device_address_capture_replay: true,
4625             buffer_device_address_multi_device: true,
4626             color_write_enable: true,
4627             compute_derivative_group_linear: true,
4628             compute_derivative_group_quads: true,
4629             compute_full_subgroups: true,
4630             conditional_rendering: true,
4631             constant_alpha_color_blend_factors: true,
4632             cooperative_matrix: true,
4633             cooperative_matrix_robust_buffer_access: true,
4634             corner_sampled_image: true,
4635             coverage_reduction_mode: true,
4636             custom_border_color_without_format: true,
4637             custom_border_colors: true,
4638             decode_mode_shared_exponent: true,
4639             dedicated_allocation_image_aliasing: true,
4640             depth_bias_clamp: true,
4641             depth_bounds: true,
4642             depth_clamp: true,
4643             depth_clamp_zero_one: true,
4644             depth_clip_control: true,
4645             depth_clip_enable: true,
4646             descriptor_binding_acceleration_structure_update_after_bind: true,
4647             descriptor_binding_inline_uniform_block_update_after_bind: true,
4648             descriptor_binding_partially_bound: true,
4649             descriptor_binding_sampled_image_update_after_bind: true,
4650             descriptor_binding_storage_buffer_update_after_bind: true,
4651             descriptor_binding_storage_image_update_after_bind: true,
4652             descriptor_binding_storage_texel_buffer_update_after_bind: true,
4653             descriptor_binding_uniform_buffer_update_after_bind: true,
4654             descriptor_binding_uniform_texel_buffer_update_after_bind: true,
4655             descriptor_binding_update_unused_while_pending: true,
4656             descriptor_binding_variable_descriptor_count: true,
4657             descriptor_buffer: true,
4658             descriptor_buffer_capture_replay: true,
4659             descriptor_buffer_image_layout_ignored: true,
4660             descriptor_buffer_push_descriptors: true,
4661             descriptor_indexing: true,
4662             descriptor_set_host_mapping: true,
4663             device_coherent_memory: true,
4664             device_fault: true,
4665             device_fault_vendor_binary: true,
4666             device_generated_commands: true,
4667             device_memory_report: true,
4668             diagnostics_config: true,
4669             draw_indirect_count: true,
4670             draw_indirect_first_instance: true,
4671             dual_src_blend: true,
4672             dynamic_rendering: true,
4673             events: true,
4674             exclusive_scissor: true,
4675             extended_dynamic_state: true,
4676             extended_dynamic_state2: true,
4677             extended_dynamic_state2_logic_op: true,
4678             extended_dynamic_state2_patch_control_points: true,
4679             extended_dynamic_state3_alpha_to_coverage_enable: true,
4680             extended_dynamic_state3_alpha_to_one_enable: true,
4681             extended_dynamic_state3_color_blend_advanced: true,
4682             extended_dynamic_state3_color_blend_enable: true,
4683             extended_dynamic_state3_color_blend_equation: true,
4684             extended_dynamic_state3_color_write_mask: true,
4685             extended_dynamic_state3_conservative_rasterization_mode: true,
4686             extended_dynamic_state3_coverage_modulation_mode: true,
4687             extended_dynamic_state3_coverage_modulation_table: true,
4688             extended_dynamic_state3_coverage_modulation_table_enable: true,
4689             extended_dynamic_state3_coverage_reduction_mode: true,
4690             extended_dynamic_state3_coverage_to_color_enable: true,
4691             extended_dynamic_state3_coverage_to_color_location: true,
4692             extended_dynamic_state3_depth_clamp_enable: true,
4693             extended_dynamic_state3_depth_clip_enable: true,
4694             extended_dynamic_state3_depth_clip_negative_one_to_one: true,
4695             extended_dynamic_state3_extra_primitive_overestimation_size: true,
4696             extended_dynamic_state3_line_rasterization_mode: true,
4697             extended_dynamic_state3_line_stipple_enable: true,
4698             extended_dynamic_state3_logic_op_enable: true,
4699             extended_dynamic_state3_polygon_mode: true,
4700             extended_dynamic_state3_provoking_vertex_mode: true,
4701             extended_dynamic_state3_rasterization_samples: true,
4702             extended_dynamic_state3_rasterization_stream: true,
4703             extended_dynamic_state3_representative_fragment_test_enable: true,
4704             extended_dynamic_state3_sample_locations_enable: true,
4705             extended_dynamic_state3_sample_mask: true,
4706             extended_dynamic_state3_shading_rate_image_enable: true,
4707             extended_dynamic_state3_tessellation_domain_origin: true,
4708             extended_dynamic_state3_viewport_swizzle: true,
4709             extended_dynamic_state3_viewport_w_scaling_enable: true,
4710             external_memory_rdma: true,
4711             fill_mode_non_solid: true,
4712             format_a4b4g4r4: true,
4713             format_a4r4g4b4: true,
4714             format_rgba10x6_without_y_cb_cr_sampler: true,
4715             fragment_density_map: true,
4716             fragment_density_map_deferred: true,
4717             fragment_density_map_dynamic: true,
4718             fragment_density_map_non_subsampled_images: true,
4719             fragment_density_map_offset: true,
4720             fragment_shader_barycentric: true,
4721             fragment_shader_pixel_interlock: true,
4722             fragment_shader_sample_interlock: true,
4723             fragment_shader_shading_rate_interlock: true,
4724             fragment_shading_rate_enums: true,
4725             fragment_stores_and_atomics: true,
4726             full_draw_index_uint32: true,
4727             geometry_shader: true,
4728             geometry_streams: true,
4729             global_priority_query: true,
4730             graphics_pipeline_library: true,
4731             host_query_reset: true,
4732             image2_d_view_of3_d: true,
4733             image_compression_control: true,
4734             image_compression_control_swapchain: true,
4735             image_cube_array: true,
4736             image_footprint: true,
4737             image_view2_d_on3_d_image: true,
4738             image_view_format_reinterpretation: true,
4739             image_view_format_swizzle: true,
4740             imageless_framebuffer: true,
4741             independent_blend: true,
4742             index_type_uint8: true,
4743             indirect_copy: true,
4744             inherited_conditional_rendering: true,
4745             inherited_queries: true,
4746             inherited_viewport_scissor2_d: true,
4747             inline_uniform_block: true,
4748             invocation_mask: true,
4749             large_points: true,
4750             legacy_dithering: true,
4751             linear_color_attachment: true,
4752             logic_op: true,
4753             maintenance4: true,
4754             memory_decompression: true,
4755             memory_priority: true,
4756             mesh_shader: true,
4757             mesh_shader_queries: true,
4758             micromap: true,
4759             micromap_capture_replay: true,
4760             micromap_host_commands: true,
4761             min_lod: true,
4762             multi_draw: true,
4763             multi_draw_indirect: true,
4764             multi_viewport: true,
4765             multisample_array_image: true,
4766             multisampled_render_to_single_sampled: true,
4767             multiview: true,
4768             multiview_geometry_shader: true,
4769             multiview_mesh_shader: true,
4770             multiview_per_view_viewports: true,
4771             multiview_tessellation_shader: true,
4772             mutable_comparison_samplers: true,
4773             mutable_descriptor_type: true,
4774             no_invocation_fragment_shading_rates: true,
4775             non_seamless_cube_map: true,
4776             null_descriptor: true,
4777             occlusion_query_precise: true,
4778             optical_flow: true,
4779             pageable_device_local_memory: true,
4780             performance_counter_multiple_query_pools: true,
4781             performance_counter_query_pools: true,
4782             pipeline_creation_cache_control: true,
4783             pipeline_executable_info: true,
4784             pipeline_fragment_shading_rate: true,
4785             pipeline_properties_identifier: true,
4786             pipeline_protected_access: true,
4787             pipeline_robustness: true,
4788             pipeline_statistics_query: true,
4789             point_polygons: true,
4790             present_barrier: true,
4791             present_id: true,
4792             present_wait: true,
4793             primitive_fragment_shading_rate: true,
4794             primitive_fragment_shading_rate_mesh_shader: true,
4795             primitive_topology_list_restart: true,
4796             primitive_topology_patch_list_restart: true,
4797             primitives_generated_query: true,
4798             primitives_generated_query_with_non_zero_streams: true,
4799             primitives_generated_query_with_rasterizer_discard: true,
4800             private_data: true,
4801             protected_memory: true,
4802             provoking_vertex_last: true,
4803             rasterization_order_color_attachment_access: true,
4804             rasterization_order_depth_attachment_access: true,
4805             rasterization_order_stencil_attachment_access: true,
4806             ray_query: true,
4807             ray_tracing_invocation_reorder: true,
4808             ray_tracing_maintenance1: true,
4809             ray_tracing_motion_blur: true,
4810             ray_tracing_motion_blur_pipeline_trace_rays_indirect: true,
4811             ray_tracing_pipeline: true,
4812             ray_tracing_pipeline_shader_group_handle_capture_replay: true,
4813             ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: true,
4814             ray_tracing_pipeline_trace_rays_indirect: true,
4815             ray_tracing_pipeline_trace_rays_indirect2: true,
4816             ray_traversal_primitive_culling: true,
4817             rectangular_lines: true,
4818             report_address_binding: true,
4819             representative_fragment_test: true,
4820             robust_buffer_access: true,
4821             robust_buffer_access2: true,
4822             robust_image_access: true,
4823             robust_image_access2: true,
4824             runtime_descriptor_array: true,
4825             sample_rate_shading: true,
4826             sampler2_d_view_of3_d: true,
4827             sampler_anisotropy: true,
4828             sampler_filter_minmax: true,
4829             sampler_mip_lod_bias: true,
4830             sampler_mirror_clamp_to_edge: true,
4831             sampler_ycbcr_conversion: true,
4832             scalar_block_layout: true,
4833             separate_depth_stencil_layouts: true,
4834             separate_stencil_mask_ref: true,
4835             shader_buffer_float16_atomic_add: true,
4836             shader_buffer_float16_atomic_min_max: true,
4837             shader_buffer_float16_atomics: true,
4838             shader_buffer_float32_atomic_add: true,
4839             shader_buffer_float32_atomic_min_max: true,
4840             shader_buffer_float32_atomics: true,
4841             shader_buffer_float64_atomic_add: true,
4842             shader_buffer_float64_atomic_min_max: true,
4843             shader_buffer_float64_atomics: true,
4844             shader_buffer_int64_atomics: true,
4845             shader_clip_distance: true,
4846             shader_core_builtins: true,
4847             shader_cull_distance: true,
4848             shader_demote_to_helper_invocation: true,
4849             shader_device_clock: true,
4850             shader_draw_parameters: true,
4851             shader_early_and_late_fragment_tests: true,
4852             shader_float16: true,
4853             shader_float64: true,
4854             shader_image_float32_atomic_add: true,
4855             shader_image_float32_atomic_min_max: true,
4856             shader_image_float32_atomics: true,
4857             shader_image_gather_extended: true,
4858             shader_image_int64_atomics: true,
4859             shader_input_attachment_array_dynamic_indexing: true,
4860             shader_input_attachment_array_non_uniform_indexing: true,
4861             shader_int16: true,
4862             shader_int64: true,
4863             shader_int8: true,
4864             shader_integer_dot_product: true,
4865             shader_integer_functions2: true,
4866             shader_module_identifier: true,
4867             shader_output_layer: true,
4868             shader_output_viewport_index: true,
4869             shader_resource_min_lod: true,
4870             shader_resource_residency: true,
4871             shader_sample_rate_interpolation_functions: true,
4872             shader_sampled_image_array_dynamic_indexing: true,
4873             shader_sampled_image_array_non_uniform_indexing: true,
4874             shader_shared_float16_atomic_add: true,
4875             shader_shared_float16_atomic_min_max: true,
4876             shader_shared_float16_atomics: true,
4877             shader_shared_float32_atomic_add: true,
4878             shader_shared_float32_atomic_min_max: true,
4879             shader_shared_float32_atomics: true,
4880             shader_shared_float64_atomic_add: true,
4881             shader_shared_float64_atomic_min_max: true,
4882             shader_shared_float64_atomics: true,
4883             shader_shared_int64_atomics: true,
4884             shader_sm_builtins: true,
4885             shader_storage_buffer_array_dynamic_indexing: true,
4886             shader_storage_buffer_array_non_uniform_indexing: true,
4887             shader_storage_image_array_dynamic_indexing: true,
4888             shader_storage_image_array_non_uniform_indexing: true,
4889             shader_storage_image_extended_formats: true,
4890             shader_storage_image_multisample: true,
4891             shader_storage_image_read_without_format: true,
4892             shader_storage_image_write_without_format: true,
4893             shader_storage_texel_buffer_array_dynamic_indexing: true,
4894             shader_storage_texel_buffer_array_non_uniform_indexing: true,
4895             shader_subgroup_clock: true,
4896             shader_subgroup_extended_types: true,
4897             shader_subgroup_uniform_control_flow: true,
4898             shader_terminate_invocation: true,
4899             shader_tessellation_and_geometry_point_size: true,
4900             shader_uniform_buffer_array_dynamic_indexing: true,
4901             shader_uniform_buffer_array_non_uniform_indexing: true,
4902             shader_uniform_texel_buffer_array_dynamic_indexing: true,
4903             shader_uniform_texel_buffer_array_non_uniform_indexing: true,
4904             shader_zero_initialize_workgroup_memory: true,
4905             shading_rate_coarse_sample_order: true,
4906             shading_rate_image: true,
4907             smooth_lines: true,
4908             sparse_binding: true,
4909             sparse_image_float32_atomic_add: true,
4910             sparse_image_float32_atomic_min_max: true,
4911             sparse_image_float32_atomics: true,
4912             sparse_image_int64_atomics: true,
4913             sparse_residency16_samples: true,
4914             sparse_residency2_samples: true,
4915             sparse_residency4_samples: true,
4916             sparse_residency8_samples: true,
4917             sparse_residency_aliased: true,
4918             sparse_residency_buffer: true,
4919             sparse_residency_image2_d: true,
4920             sparse_residency_image3_d: true,
4921             stippled_bresenham_lines: true,
4922             stippled_rectangular_lines: true,
4923             stippled_smooth_lines: true,
4924             storage_buffer16_bit_access: true,
4925             storage_buffer8_bit_access: true,
4926             storage_input_output16: true,
4927             storage_push_constant16: true,
4928             storage_push_constant8: true,
4929             subgroup_broadcast_dynamic_id: true,
4930             subgroup_size_control: true,
4931             subpass_merge_feedback: true,
4932             subpass_shading: true,
4933             supersample_fragment_shading_rates: true,
4934             swapchain_maintenance1: true,
4935             synchronization2: true,
4936             task_shader: true,
4937             tessellation_isolines: true,
4938             tessellation_point_mode: true,
4939             tessellation_shader: true,
4940             texel_buffer_alignment: true,
4941             texture_block_match: true,
4942             texture_box_filter: true,
4943             texture_compression_astc_hdr: true,
4944             texture_compression_astc_ldr: true,
4945             texture_compression_bc: true,
4946             texture_compression_etc2: true,
4947             texture_sample_weighted: true,
4948             tile_properties: true,
4949             timeline_semaphore: true,
4950             transform_feedback: true,
4951             transform_feedback_preserves_provoking_vertex: true,
4952             triangle_fans: true,
4953             uniform_and_storage_buffer16_bit_access: true,
4954             uniform_and_storage_buffer8_bit_access: true,
4955             uniform_buffer_standard_layout: true,
4956             variable_multisample_rate: true,
4957             variable_pointers: true,
4958             variable_pointers_storage_buffer: true,
4959             vertex_attribute_access_beyond_stride: true,
4960             vertex_attribute_instance_rate_divisor: true,
4961             vertex_attribute_instance_rate_zero_divisor: true,
4962             vertex_input_dynamic_state: true,
4963             vertex_pipeline_stores_and_atomics: true,
4964             vulkan_memory_model: true,
4965             vulkan_memory_model_availability_visibility_chains: true,
4966             vulkan_memory_model_device_scope: true,
4967             wide_lines: true,
4968             workgroup_memory_explicit_layout: true,
4969             workgroup_memory_explicit_layout16_bit_access: true,
4970             workgroup_memory_explicit_layout8_bit_access: true,
4971             workgroup_memory_explicit_layout_scalar_block_layout: true,
4972             ycbcr2plane444_formats: true,
4973             ycbcr_image_arrays: true,
4974             _ne: crate::NonExhaustive(()),
4975         }
4976     }
4977     #[doc = r" Returns whether any members are set in both `self` and `other`."]
4978     #[inline]
intersects(&self, other: &Self) -> bool4979     pub const fn intersects(&self, other: &Self) -> bool {
4980         (self.acceleration_structure && other.acceleration_structure)
4981             || (self.acceleration_structure_capture_replay
4982                 && other.acceleration_structure_capture_replay)
4983             || (self.acceleration_structure_host_commands
4984                 && other.acceleration_structure_host_commands)
4985             || (self.acceleration_structure_indirect_build
4986                 && other.acceleration_structure_indirect_build)
4987             || (self.advanced_blend_coherent_operations && other.advanced_blend_coherent_operations)
4988             || (self.alpha_to_one && other.alpha_to_one)
4989             || (self.amigo_profiling && other.amigo_profiling)
4990             || (self.attachment_feedback_loop_layout && other.attachment_feedback_loop_layout)
4991             || (self.attachment_fragment_shading_rate && other.attachment_fragment_shading_rate)
4992             || (self.border_color_swizzle && other.border_color_swizzle)
4993             || (self.border_color_swizzle_from_image && other.border_color_swizzle_from_image)
4994             || (self.bresenham_lines && other.bresenham_lines)
4995             || (self.buffer_device_address && other.buffer_device_address)
4996             || (self.buffer_device_address_capture_replay
4997                 && other.buffer_device_address_capture_replay)
4998             || (self.buffer_device_address_multi_device && other.buffer_device_address_multi_device)
4999             || (self.color_write_enable && other.color_write_enable)
5000             || (self.compute_derivative_group_linear && other.compute_derivative_group_linear)
5001             || (self.compute_derivative_group_quads && other.compute_derivative_group_quads)
5002             || (self.compute_full_subgroups && other.compute_full_subgroups)
5003             || (self.conditional_rendering && other.conditional_rendering)
5004             || (self.constant_alpha_color_blend_factors && other.constant_alpha_color_blend_factors)
5005             || (self.cooperative_matrix && other.cooperative_matrix)
5006             || (self.cooperative_matrix_robust_buffer_access
5007                 && other.cooperative_matrix_robust_buffer_access)
5008             || (self.corner_sampled_image && other.corner_sampled_image)
5009             || (self.coverage_reduction_mode && other.coverage_reduction_mode)
5010             || (self.custom_border_color_without_format && other.custom_border_color_without_format)
5011             || (self.custom_border_colors && other.custom_border_colors)
5012             || (self.decode_mode_shared_exponent && other.decode_mode_shared_exponent)
5013             || (self.dedicated_allocation_image_aliasing
5014                 && other.dedicated_allocation_image_aliasing)
5015             || (self.depth_bias_clamp && other.depth_bias_clamp)
5016             || (self.depth_bounds && other.depth_bounds)
5017             || (self.depth_clamp && other.depth_clamp)
5018             || (self.depth_clamp_zero_one && other.depth_clamp_zero_one)
5019             || (self.depth_clip_control && other.depth_clip_control)
5020             || (self.depth_clip_enable && other.depth_clip_enable)
5021             || (self.descriptor_binding_acceleration_structure_update_after_bind
5022                 && other.descriptor_binding_acceleration_structure_update_after_bind)
5023             || (self.descriptor_binding_inline_uniform_block_update_after_bind
5024                 && other.descriptor_binding_inline_uniform_block_update_after_bind)
5025             || (self.descriptor_binding_partially_bound && other.descriptor_binding_partially_bound)
5026             || (self.descriptor_binding_sampled_image_update_after_bind
5027                 && other.descriptor_binding_sampled_image_update_after_bind)
5028             || (self.descriptor_binding_storage_buffer_update_after_bind
5029                 && other.descriptor_binding_storage_buffer_update_after_bind)
5030             || (self.descriptor_binding_storage_image_update_after_bind
5031                 && other.descriptor_binding_storage_image_update_after_bind)
5032             || (self.descriptor_binding_storage_texel_buffer_update_after_bind
5033                 && other.descriptor_binding_storage_texel_buffer_update_after_bind)
5034             || (self.descriptor_binding_uniform_buffer_update_after_bind
5035                 && other.descriptor_binding_uniform_buffer_update_after_bind)
5036             || (self.descriptor_binding_uniform_texel_buffer_update_after_bind
5037                 && other.descriptor_binding_uniform_texel_buffer_update_after_bind)
5038             || (self.descriptor_binding_update_unused_while_pending
5039                 && other.descriptor_binding_update_unused_while_pending)
5040             || (self.descriptor_binding_variable_descriptor_count
5041                 && other.descriptor_binding_variable_descriptor_count)
5042             || (self.descriptor_buffer && other.descriptor_buffer)
5043             || (self.descriptor_buffer_capture_replay && other.descriptor_buffer_capture_replay)
5044             || (self.descriptor_buffer_image_layout_ignored
5045                 && other.descriptor_buffer_image_layout_ignored)
5046             || (self.descriptor_buffer_push_descriptors && other.descriptor_buffer_push_descriptors)
5047             || (self.descriptor_indexing && other.descriptor_indexing)
5048             || (self.descriptor_set_host_mapping && other.descriptor_set_host_mapping)
5049             || (self.device_coherent_memory && other.device_coherent_memory)
5050             || (self.device_fault && other.device_fault)
5051             || (self.device_fault_vendor_binary && other.device_fault_vendor_binary)
5052             || (self.device_generated_commands && other.device_generated_commands)
5053             || (self.device_memory_report && other.device_memory_report)
5054             || (self.diagnostics_config && other.diagnostics_config)
5055             || (self.draw_indirect_count && other.draw_indirect_count)
5056             || (self.draw_indirect_first_instance && other.draw_indirect_first_instance)
5057             || (self.dual_src_blend && other.dual_src_blend)
5058             || (self.dynamic_rendering && other.dynamic_rendering)
5059             || (self.events && other.events)
5060             || (self.exclusive_scissor && other.exclusive_scissor)
5061             || (self.extended_dynamic_state && other.extended_dynamic_state)
5062             || (self.extended_dynamic_state2 && other.extended_dynamic_state2)
5063             || (self.extended_dynamic_state2_logic_op && other.extended_dynamic_state2_logic_op)
5064             || (self.extended_dynamic_state2_patch_control_points
5065                 && other.extended_dynamic_state2_patch_control_points)
5066             || (self.extended_dynamic_state3_alpha_to_coverage_enable
5067                 && other.extended_dynamic_state3_alpha_to_coverage_enable)
5068             || (self.extended_dynamic_state3_alpha_to_one_enable
5069                 && other.extended_dynamic_state3_alpha_to_one_enable)
5070             || (self.extended_dynamic_state3_color_blend_advanced
5071                 && other.extended_dynamic_state3_color_blend_advanced)
5072             || (self.extended_dynamic_state3_color_blend_enable
5073                 && other.extended_dynamic_state3_color_blend_enable)
5074             || (self.extended_dynamic_state3_color_blend_equation
5075                 && other.extended_dynamic_state3_color_blend_equation)
5076             || (self.extended_dynamic_state3_color_write_mask
5077                 && other.extended_dynamic_state3_color_write_mask)
5078             || (self.extended_dynamic_state3_conservative_rasterization_mode
5079                 && other.extended_dynamic_state3_conservative_rasterization_mode)
5080             || (self.extended_dynamic_state3_coverage_modulation_mode
5081                 && other.extended_dynamic_state3_coverage_modulation_mode)
5082             || (self.extended_dynamic_state3_coverage_modulation_table
5083                 && other.extended_dynamic_state3_coverage_modulation_table)
5084             || (self.extended_dynamic_state3_coverage_modulation_table_enable
5085                 && other.extended_dynamic_state3_coverage_modulation_table_enable)
5086             || (self.extended_dynamic_state3_coverage_reduction_mode
5087                 && other.extended_dynamic_state3_coverage_reduction_mode)
5088             || (self.extended_dynamic_state3_coverage_to_color_enable
5089                 && other.extended_dynamic_state3_coverage_to_color_enable)
5090             || (self.extended_dynamic_state3_coverage_to_color_location
5091                 && other.extended_dynamic_state3_coverage_to_color_location)
5092             || (self.extended_dynamic_state3_depth_clamp_enable
5093                 && other.extended_dynamic_state3_depth_clamp_enable)
5094             || (self.extended_dynamic_state3_depth_clip_enable
5095                 && other.extended_dynamic_state3_depth_clip_enable)
5096             || (self.extended_dynamic_state3_depth_clip_negative_one_to_one
5097                 && other.extended_dynamic_state3_depth_clip_negative_one_to_one)
5098             || (self.extended_dynamic_state3_extra_primitive_overestimation_size
5099                 && other.extended_dynamic_state3_extra_primitive_overestimation_size)
5100             || (self.extended_dynamic_state3_line_rasterization_mode
5101                 && other.extended_dynamic_state3_line_rasterization_mode)
5102             || (self.extended_dynamic_state3_line_stipple_enable
5103                 && other.extended_dynamic_state3_line_stipple_enable)
5104             || (self.extended_dynamic_state3_logic_op_enable
5105                 && other.extended_dynamic_state3_logic_op_enable)
5106             || (self.extended_dynamic_state3_polygon_mode
5107                 && other.extended_dynamic_state3_polygon_mode)
5108             || (self.extended_dynamic_state3_provoking_vertex_mode
5109                 && other.extended_dynamic_state3_provoking_vertex_mode)
5110             || (self.extended_dynamic_state3_rasterization_samples
5111                 && other.extended_dynamic_state3_rasterization_samples)
5112             || (self.extended_dynamic_state3_rasterization_stream
5113                 && other.extended_dynamic_state3_rasterization_stream)
5114             || (self.extended_dynamic_state3_representative_fragment_test_enable
5115                 && other.extended_dynamic_state3_representative_fragment_test_enable)
5116             || (self.extended_dynamic_state3_sample_locations_enable
5117                 && other.extended_dynamic_state3_sample_locations_enable)
5118             || (self.extended_dynamic_state3_sample_mask
5119                 && other.extended_dynamic_state3_sample_mask)
5120             || (self.extended_dynamic_state3_shading_rate_image_enable
5121                 && other.extended_dynamic_state3_shading_rate_image_enable)
5122             || (self.extended_dynamic_state3_tessellation_domain_origin
5123                 && other.extended_dynamic_state3_tessellation_domain_origin)
5124             || (self.extended_dynamic_state3_viewport_swizzle
5125                 && other.extended_dynamic_state3_viewport_swizzle)
5126             || (self.extended_dynamic_state3_viewport_w_scaling_enable
5127                 && other.extended_dynamic_state3_viewport_w_scaling_enable)
5128             || (self.external_memory_rdma && other.external_memory_rdma)
5129             || (self.fill_mode_non_solid && other.fill_mode_non_solid)
5130             || (self.format_a4b4g4r4 && other.format_a4b4g4r4)
5131             || (self.format_a4r4g4b4 && other.format_a4r4g4b4)
5132             || (self.format_rgba10x6_without_y_cb_cr_sampler
5133                 && other.format_rgba10x6_without_y_cb_cr_sampler)
5134             || (self.fragment_density_map && other.fragment_density_map)
5135             || (self.fragment_density_map_deferred && other.fragment_density_map_deferred)
5136             || (self.fragment_density_map_dynamic && other.fragment_density_map_dynamic)
5137             || (self.fragment_density_map_non_subsampled_images
5138                 && other.fragment_density_map_non_subsampled_images)
5139             || (self.fragment_density_map_offset && other.fragment_density_map_offset)
5140             || (self.fragment_shader_barycentric && other.fragment_shader_barycentric)
5141             || (self.fragment_shader_pixel_interlock && other.fragment_shader_pixel_interlock)
5142             || (self.fragment_shader_sample_interlock && other.fragment_shader_sample_interlock)
5143             || (self.fragment_shader_shading_rate_interlock
5144                 && other.fragment_shader_shading_rate_interlock)
5145             || (self.fragment_shading_rate_enums && other.fragment_shading_rate_enums)
5146             || (self.fragment_stores_and_atomics && other.fragment_stores_and_atomics)
5147             || (self.full_draw_index_uint32 && other.full_draw_index_uint32)
5148             || (self.geometry_shader && other.geometry_shader)
5149             || (self.geometry_streams && other.geometry_streams)
5150             || (self.global_priority_query && other.global_priority_query)
5151             || (self.graphics_pipeline_library && other.graphics_pipeline_library)
5152             || (self.host_query_reset && other.host_query_reset)
5153             || (self.image2_d_view_of3_d && other.image2_d_view_of3_d)
5154             || (self.image_compression_control && other.image_compression_control)
5155             || (self.image_compression_control_swapchain
5156                 && other.image_compression_control_swapchain)
5157             || (self.image_cube_array && other.image_cube_array)
5158             || (self.image_footprint && other.image_footprint)
5159             || (self.image_view2_d_on3_d_image && other.image_view2_d_on3_d_image)
5160             || (self.image_view_format_reinterpretation && other.image_view_format_reinterpretation)
5161             || (self.image_view_format_swizzle && other.image_view_format_swizzle)
5162             || (self.imageless_framebuffer && other.imageless_framebuffer)
5163             || (self.independent_blend && other.independent_blend)
5164             || (self.index_type_uint8 && other.index_type_uint8)
5165             || (self.indirect_copy && other.indirect_copy)
5166             || (self.inherited_conditional_rendering && other.inherited_conditional_rendering)
5167             || (self.inherited_queries && other.inherited_queries)
5168             || (self.inherited_viewport_scissor2_d && other.inherited_viewport_scissor2_d)
5169             || (self.inline_uniform_block && other.inline_uniform_block)
5170             || (self.invocation_mask && other.invocation_mask)
5171             || (self.large_points && other.large_points)
5172             || (self.legacy_dithering && other.legacy_dithering)
5173             || (self.linear_color_attachment && other.linear_color_attachment)
5174             || (self.logic_op && other.logic_op)
5175             || (self.maintenance4 && other.maintenance4)
5176             || (self.memory_decompression && other.memory_decompression)
5177             || (self.memory_priority && other.memory_priority)
5178             || (self.mesh_shader && other.mesh_shader)
5179             || (self.mesh_shader_queries && other.mesh_shader_queries)
5180             || (self.micromap && other.micromap)
5181             || (self.micromap_capture_replay && other.micromap_capture_replay)
5182             || (self.micromap_host_commands && other.micromap_host_commands)
5183             || (self.min_lod && other.min_lod)
5184             || (self.multi_draw && other.multi_draw)
5185             || (self.multi_draw_indirect && other.multi_draw_indirect)
5186             || (self.multi_viewport && other.multi_viewport)
5187             || (self.multisample_array_image && other.multisample_array_image)
5188             || (self.multisampled_render_to_single_sampled
5189                 && other.multisampled_render_to_single_sampled)
5190             || (self.multiview && other.multiview)
5191             || (self.multiview_geometry_shader && other.multiview_geometry_shader)
5192             || (self.multiview_mesh_shader && other.multiview_mesh_shader)
5193             || (self.multiview_per_view_viewports && other.multiview_per_view_viewports)
5194             || (self.multiview_tessellation_shader && other.multiview_tessellation_shader)
5195             || (self.mutable_comparison_samplers && other.mutable_comparison_samplers)
5196             || (self.mutable_descriptor_type && other.mutable_descriptor_type)
5197             || (self.no_invocation_fragment_shading_rates
5198                 && other.no_invocation_fragment_shading_rates)
5199             || (self.non_seamless_cube_map && other.non_seamless_cube_map)
5200             || (self.null_descriptor && other.null_descriptor)
5201             || (self.occlusion_query_precise && other.occlusion_query_precise)
5202             || (self.optical_flow && other.optical_flow)
5203             || (self.pageable_device_local_memory && other.pageable_device_local_memory)
5204             || (self.performance_counter_multiple_query_pools
5205                 && other.performance_counter_multiple_query_pools)
5206             || (self.performance_counter_query_pools && other.performance_counter_query_pools)
5207             || (self.pipeline_creation_cache_control && other.pipeline_creation_cache_control)
5208             || (self.pipeline_executable_info && other.pipeline_executable_info)
5209             || (self.pipeline_fragment_shading_rate && other.pipeline_fragment_shading_rate)
5210             || (self.pipeline_properties_identifier && other.pipeline_properties_identifier)
5211             || (self.pipeline_protected_access && other.pipeline_protected_access)
5212             || (self.pipeline_robustness && other.pipeline_robustness)
5213             || (self.pipeline_statistics_query && other.pipeline_statistics_query)
5214             || (self.point_polygons && other.point_polygons)
5215             || (self.present_barrier && other.present_barrier)
5216             || (self.present_id && other.present_id)
5217             || (self.present_wait && other.present_wait)
5218             || (self.primitive_fragment_shading_rate && other.primitive_fragment_shading_rate)
5219             || (self.primitive_fragment_shading_rate_mesh_shader
5220                 && other.primitive_fragment_shading_rate_mesh_shader)
5221             || (self.primitive_topology_list_restart && other.primitive_topology_list_restart)
5222             || (self.primitive_topology_patch_list_restart
5223                 && other.primitive_topology_patch_list_restart)
5224             || (self.primitives_generated_query && other.primitives_generated_query)
5225             || (self.primitives_generated_query_with_non_zero_streams
5226                 && other.primitives_generated_query_with_non_zero_streams)
5227             || (self.primitives_generated_query_with_rasterizer_discard
5228                 && other.primitives_generated_query_with_rasterizer_discard)
5229             || (self.private_data && other.private_data)
5230             || (self.protected_memory && other.protected_memory)
5231             || (self.provoking_vertex_last && other.provoking_vertex_last)
5232             || (self.rasterization_order_color_attachment_access
5233                 && other.rasterization_order_color_attachment_access)
5234             || (self.rasterization_order_depth_attachment_access
5235                 && other.rasterization_order_depth_attachment_access)
5236             || (self.rasterization_order_stencil_attachment_access
5237                 && other.rasterization_order_stencil_attachment_access)
5238             || (self.ray_query && other.ray_query)
5239             || (self.ray_tracing_invocation_reorder && other.ray_tracing_invocation_reorder)
5240             || (self.ray_tracing_maintenance1 && other.ray_tracing_maintenance1)
5241             || (self.ray_tracing_motion_blur && other.ray_tracing_motion_blur)
5242             || (self.ray_tracing_motion_blur_pipeline_trace_rays_indirect
5243                 && other.ray_tracing_motion_blur_pipeline_trace_rays_indirect)
5244             || (self.ray_tracing_pipeline && other.ray_tracing_pipeline)
5245             || (self.ray_tracing_pipeline_shader_group_handle_capture_replay
5246                 && other.ray_tracing_pipeline_shader_group_handle_capture_replay)
5247             || (self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
5248                 && other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed)
5249             || (self.ray_tracing_pipeline_trace_rays_indirect
5250                 && other.ray_tracing_pipeline_trace_rays_indirect)
5251             || (self.ray_tracing_pipeline_trace_rays_indirect2
5252                 && other.ray_tracing_pipeline_trace_rays_indirect2)
5253             || (self.ray_traversal_primitive_culling && other.ray_traversal_primitive_culling)
5254             || (self.rectangular_lines && other.rectangular_lines)
5255             || (self.report_address_binding && other.report_address_binding)
5256             || (self.representative_fragment_test && other.representative_fragment_test)
5257             || (self.robust_buffer_access && other.robust_buffer_access)
5258             || (self.robust_buffer_access2 && other.robust_buffer_access2)
5259             || (self.robust_image_access && other.robust_image_access)
5260             || (self.robust_image_access2 && other.robust_image_access2)
5261             || (self.runtime_descriptor_array && other.runtime_descriptor_array)
5262             || (self.sample_rate_shading && other.sample_rate_shading)
5263             || (self.sampler2_d_view_of3_d && other.sampler2_d_view_of3_d)
5264             || (self.sampler_anisotropy && other.sampler_anisotropy)
5265             || (self.sampler_filter_minmax && other.sampler_filter_minmax)
5266             || (self.sampler_mip_lod_bias && other.sampler_mip_lod_bias)
5267             || (self.sampler_mirror_clamp_to_edge && other.sampler_mirror_clamp_to_edge)
5268             || (self.sampler_ycbcr_conversion && other.sampler_ycbcr_conversion)
5269             || (self.scalar_block_layout && other.scalar_block_layout)
5270             || (self.separate_depth_stencil_layouts && other.separate_depth_stencil_layouts)
5271             || (self.separate_stencil_mask_ref && other.separate_stencil_mask_ref)
5272             || (self.shader_buffer_float16_atomic_add && other.shader_buffer_float16_atomic_add)
5273             || (self.shader_buffer_float16_atomic_min_max
5274                 && other.shader_buffer_float16_atomic_min_max)
5275             || (self.shader_buffer_float16_atomics && other.shader_buffer_float16_atomics)
5276             || (self.shader_buffer_float32_atomic_add && other.shader_buffer_float32_atomic_add)
5277             || (self.shader_buffer_float32_atomic_min_max
5278                 && other.shader_buffer_float32_atomic_min_max)
5279             || (self.shader_buffer_float32_atomics && other.shader_buffer_float32_atomics)
5280             || (self.shader_buffer_float64_atomic_add && other.shader_buffer_float64_atomic_add)
5281             || (self.shader_buffer_float64_atomic_min_max
5282                 && other.shader_buffer_float64_atomic_min_max)
5283             || (self.shader_buffer_float64_atomics && other.shader_buffer_float64_atomics)
5284             || (self.shader_buffer_int64_atomics && other.shader_buffer_int64_atomics)
5285             || (self.shader_clip_distance && other.shader_clip_distance)
5286             || (self.shader_core_builtins && other.shader_core_builtins)
5287             || (self.shader_cull_distance && other.shader_cull_distance)
5288             || (self.shader_demote_to_helper_invocation && other.shader_demote_to_helper_invocation)
5289             || (self.shader_device_clock && other.shader_device_clock)
5290             || (self.shader_draw_parameters && other.shader_draw_parameters)
5291             || (self.shader_early_and_late_fragment_tests
5292                 && other.shader_early_and_late_fragment_tests)
5293             || (self.shader_float16 && other.shader_float16)
5294             || (self.shader_float64 && other.shader_float64)
5295             || (self.shader_image_float32_atomic_add && other.shader_image_float32_atomic_add)
5296             || (self.shader_image_float32_atomic_min_max
5297                 && other.shader_image_float32_atomic_min_max)
5298             || (self.shader_image_float32_atomics && other.shader_image_float32_atomics)
5299             || (self.shader_image_gather_extended && other.shader_image_gather_extended)
5300             || (self.shader_image_int64_atomics && other.shader_image_int64_atomics)
5301             || (self.shader_input_attachment_array_dynamic_indexing
5302                 && other.shader_input_attachment_array_dynamic_indexing)
5303             || (self.shader_input_attachment_array_non_uniform_indexing
5304                 && other.shader_input_attachment_array_non_uniform_indexing)
5305             || (self.shader_int16 && other.shader_int16)
5306             || (self.shader_int64 && other.shader_int64)
5307             || (self.shader_int8 && other.shader_int8)
5308             || (self.shader_integer_dot_product && other.shader_integer_dot_product)
5309             || (self.shader_integer_functions2 && other.shader_integer_functions2)
5310             || (self.shader_module_identifier && other.shader_module_identifier)
5311             || (self.shader_output_layer && other.shader_output_layer)
5312             || (self.shader_output_viewport_index && other.shader_output_viewport_index)
5313             || (self.shader_resource_min_lod && other.shader_resource_min_lod)
5314             || (self.shader_resource_residency && other.shader_resource_residency)
5315             || (self.shader_sample_rate_interpolation_functions
5316                 && other.shader_sample_rate_interpolation_functions)
5317             || (self.shader_sampled_image_array_dynamic_indexing
5318                 && other.shader_sampled_image_array_dynamic_indexing)
5319             || (self.shader_sampled_image_array_non_uniform_indexing
5320                 && other.shader_sampled_image_array_non_uniform_indexing)
5321             || (self.shader_shared_float16_atomic_add && other.shader_shared_float16_atomic_add)
5322             || (self.shader_shared_float16_atomic_min_max
5323                 && other.shader_shared_float16_atomic_min_max)
5324             || (self.shader_shared_float16_atomics && other.shader_shared_float16_atomics)
5325             || (self.shader_shared_float32_atomic_add && other.shader_shared_float32_atomic_add)
5326             || (self.shader_shared_float32_atomic_min_max
5327                 && other.shader_shared_float32_atomic_min_max)
5328             || (self.shader_shared_float32_atomics && other.shader_shared_float32_atomics)
5329             || (self.shader_shared_float64_atomic_add && other.shader_shared_float64_atomic_add)
5330             || (self.shader_shared_float64_atomic_min_max
5331                 && other.shader_shared_float64_atomic_min_max)
5332             || (self.shader_shared_float64_atomics && other.shader_shared_float64_atomics)
5333             || (self.shader_shared_int64_atomics && other.shader_shared_int64_atomics)
5334             || (self.shader_sm_builtins && other.shader_sm_builtins)
5335             || (self.shader_storage_buffer_array_dynamic_indexing
5336                 && other.shader_storage_buffer_array_dynamic_indexing)
5337             || (self.shader_storage_buffer_array_non_uniform_indexing
5338                 && other.shader_storage_buffer_array_non_uniform_indexing)
5339             || (self.shader_storage_image_array_dynamic_indexing
5340                 && other.shader_storage_image_array_dynamic_indexing)
5341             || (self.shader_storage_image_array_non_uniform_indexing
5342                 && other.shader_storage_image_array_non_uniform_indexing)
5343             || (self.shader_storage_image_extended_formats
5344                 && other.shader_storage_image_extended_formats)
5345             || (self.shader_storage_image_multisample && other.shader_storage_image_multisample)
5346             || (self.shader_storage_image_read_without_format
5347                 && other.shader_storage_image_read_without_format)
5348             || (self.shader_storage_image_write_without_format
5349                 && other.shader_storage_image_write_without_format)
5350             || (self.shader_storage_texel_buffer_array_dynamic_indexing
5351                 && other.shader_storage_texel_buffer_array_dynamic_indexing)
5352             || (self.shader_storage_texel_buffer_array_non_uniform_indexing
5353                 && other.shader_storage_texel_buffer_array_non_uniform_indexing)
5354             || (self.shader_subgroup_clock && other.shader_subgroup_clock)
5355             || (self.shader_subgroup_extended_types && other.shader_subgroup_extended_types)
5356             || (self.shader_subgroup_uniform_control_flow
5357                 && other.shader_subgroup_uniform_control_flow)
5358             || (self.shader_terminate_invocation && other.shader_terminate_invocation)
5359             || (self.shader_tessellation_and_geometry_point_size
5360                 && other.shader_tessellation_and_geometry_point_size)
5361             || (self.shader_uniform_buffer_array_dynamic_indexing
5362                 && other.shader_uniform_buffer_array_dynamic_indexing)
5363             || (self.shader_uniform_buffer_array_non_uniform_indexing
5364                 && other.shader_uniform_buffer_array_non_uniform_indexing)
5365             || (self.shader_uniform_texel_buffer_array_dynamic_indexing
5366                 && other.shader_uniform_texel_buffer_array_dynamic_indexing)
5367             || (self.shader_uniform_texel_buffer_array_non_uniform_indexing
5368                 && other.shader_uniform_texel_buffer_array_non_uniform_indexing)
5369             || (self.shader_zero_initialize_workgroup_memory
5370                 && other.shader_zero_initialize_workgroup_memory)
5371             || (self.shading_rate_coarse_sample_order && other.shading_rate_coarse_sample_order)
5372             || (self.shading_rate_image && other.shading_rate_image)
5373             || (self.smooth_lines && other.smooth_lines)
5374             || (self.sparse_binding && other.sparse_binding)
5375             || (self.sparse_image_float32_atomic_add && other.sparse_image_float32_atomic_add)
5376             || (self.sparse_image_float32_atomic_min_max
5377                 && other.sparse_image_float32_atomic_min_max)
5378             || (self.sparse_image_float32_atomics && other.sparse_image_float32_atomics)
5379             || (self.sparse_image_int64_atomics && other.sparse_image_int64_atomics)
5380             || (self.sparse_residency16_samples && other.sparse_residency16_samples)
5381             || (self.sparse_residency2_samples && other.sparse_residency2_samples)
5382             || (self.sparse_residency4_samples && other.sparse_residency4_samples)
5383             || (self.sparse_residency8_samples && other.sparse_residency8_samples)
5384             || (self.sparse_residency_aliased && other.sparse_residency_aliased)
5385             || (self.sparse_residency_buffer && other.sparse_residency_buffer)
5386             || (self.sparse_residency_image2_d && other.sparse_residency_image2_d)
5387             || (self.sparse_residency_image3_d && other.sparse_residency_image3_d)
5388             || (self.stippled_bresenham_lines && other.stippled_bresenham_lines)
5389             || (self.stippled_rectangular_lines && other.stippled_rectangular_lines)
5390             || (self.stippled_smooth_lines && other.stippled_smooth_lines)
5391             || (self.storage_buffer16_bit_access && other.storage_buffer16_bit_access)
5392             || (self.storage_buffer8_bit_access && other.storage_buffer8_bit_access)
5393             || (self.storage_input_output16 && other.storage_input_output16)
5394             || (self.storage_push_constant16 && other.storage_push_constant16)
5395             || (self.storage_push_constant8 && other.storage_push_constant8)
5396             || (self.subgroup_broadcast_dynamic_id && other.subgroup_broadcast_dynamic_id)
5397             || (self.subgroup_size_control && other.subgroup_size_control)
5398             || (self.subpass_merge_feedback && other.subpass_merge_feedback)
5399             || (self.subpass_shading && other.subpass_shading)
5400             || (self.supersample_fragment_shading_rates && other.supersample_fragment_shading_rates)
5401             || (self.swapchain_maintenance1 && other.swapchain_maintenance1)
5402             || (self.synchronization2 && other.synchronization2)
5403             || (self.task_shader && other.task_shader)
5404             || (self.tessellation_isolines && other.tessellation_isolines)
5405             || (self.tessellation_point_mode && other.tessellation_point_mode)
5406             || (self.tessellation_shader && other.tessellation_shader)
5407             || (self.texel_buffer_alignment && other.texel_buffer_alignment)
5408             || (self.texture_block_match && other.texture_block_match)
5409             || (self.texture_box_filter && other.texture_box_filter)
5410             || (self.texture_compression_astc_hdr && other.texture_compression_astc_hdr)
5411             || (self.texture_compression_astc_ldr && other.texture_compression_astc_ldr)
5412             || (self.texture_compression_bc && other.texture_compression_bc)
5413             || (self.texture_compression_etc2 && other.texture_compression_etc2)
5414             || (self.texture_sample_weighted && other.texture_sample_weighted)
5415             || (self.tile_properties && other.tile_properties)
5416             || (self.timeline_semaphore && other.timeline_semaphore)
5417             || (self.transform_feedback && other.transform_feedback)
5418             || (self.transform_feedback_preserves_provoking_vertex
5419                 && other.transform_feedback_preserves_provoking_vertex)
5420             || (self.triangle_fans && other.triangle_fans)
5421             || (self.uniform_and_storage_buffer16_bit_access
5422                 && other.uniform_and_storage_buffer16_bit_access)
5423             || (self.uniform_and_storage_buffer8_bit_access
5424                 && other.uniform_and_storage_buffer8_bit_access)
5425             || (self.uniform_buffer_standard_layout && other.uniform_buffer_standard_layout)
5426             || (self.variable_multisample_rate && other.variable_multisample_rate)
5427             || (self.variable_pointers && other.variable_pointers)
5428             || (self.variable_pointers_storage_buffer && other.variable_pointers_storage_buffer)
5429             || (self.vertex_attribute_access_beyond_stride
5430                 && other.vertex_attribute_access_beyond_stride)
5431             || (self.vertex_attribute_instance_rate_divisor
5432                 && other.vertex_attribute_instance_rate_divisor)
5433             || (self.vertex_attribute_instance_rate_zero_divisor
5434                 && other.vertex_attribute_instance_rate_zero_divisor)
5435             || (self.vertex_input_dynamic_state && other.vertex_input_dynamic_state)
5436             || (self.vertex_pipeline_stores_and_atomics && other.vertex_pipeline_stores_and_atomics)
5437             || (self.vulkan_memory_model && other.vulkan_memory_model)
5438             || (self.vulkan_memory_model_availability_visibility_chains
5439                 && other.vulkan_memory_model_availability_visibility_chains)
5440             || (self.vulkan_memory_model_device_scope && other.vulkan_memory_model_device_scope)
5441             || (self.wide_lines && other.wide_lines)
5442             || (self.workgroup_memory_explicit_layout && other.workgroup_memory_explicit_layout)
5443             || (self.workgroup_memory_explicit_layout16_bit_access
5444                 && other.workgroup_memory_explicit_layout16_bit_access)
5445             || (self.workgroup_memory_explicit_layout8_bit_access
5446                 && other.workgroup_memory_explicit_layout8_bit_access)
5447             || (self.workgroup_memory_explicit_layout_scalar_block_layout
5448                 && other.workgroup_memory_explicit_layout_scalar_block_layout)
5449             || (self.ycbcr2plane444_formats && other.ycbcr2plane444_formats)
5450             || (self.ycbcr_image_arrays && other.ycbcr_image_arrays)
5451     }
5452     #[doc = r" Returns whether all members in `other` are set in `self`."]
5453     #[inline]
contains(&self, other: &Self) -> bool5454     pub const fn contains(&self, other: &Self) -> bool {
5455         (self.acceleration_structure || !other.acceleration_structure)
5456             && (self.acceleration_structure_capture_replay
5457                 || !other.acceleration_structure_capture_replay)
5458             && (self.acceleration_structure_host_commands
5459                 || !other.acceleration_structure_host_commands)
5460             && (self.acceleration_structure_indirect_build
5461                 || !other.acceleration_structure_indirect_build)
5462             && (self.advanced_blend_coherent_operations
5463                 || !other.advanced_blend_coherent_operations)
5464             && (self.alpha_to_one || !other.alpha_to_one)
5465             && (self.amigo_profiling || !other.amigo_profiling)
5466             && (self.attachment_feedback_loop_layout || !other.attachment_feedback_loop_layout)
5467             && (self.attachment_fragment_shading_rate || !other.attachment_fragment_shading_rate)
5468             && (self.border_color_swizzle || !other.border_color_swizzle)
5469             && (self.border_color_swizzle_from_image || !other.border_color_swizzle_from_image)
5470             && (self.bresenham_lines || !other.bresenham_lines)
5471             && (self.buffer_device_address || !other.buffer_device_address)
5472             && (self.buffer_device_address_capture_replay
5473                 || !other.buffer_device_address_capture_replay)
5474             && (self.buffer_device_address_multi_device
5475                 || !other.buffer_device_address_multi_device)
5476             && (self.color_write_enable || !other.color_write_enable)
5477             && (self.compute_derivative_group_linear || !other.compute_derivative_group_linear)
5478             && (self.compute_derivative_group_quads || !other.compute_derivative_group_quads)
5479             && (self.compute_full_subgroups || !other.compute_full_subgroups)
5480             && (self.conditional_rendering || !other.conditional_rendering)
5481             && (self.constant_alpha_color_blend_factors
5482                 || !other.constant_alpha_color_blend_factors)
5483             && (self.cooperative_matrix || !other.cooperative_matrix)
5484             && (self.cooperative_matrix_robust_buffer_access
5485                 || !other.cooperative_matrix_robust_buffer_access)
5486             && (self.corner_sampled_image || !other.corner_sampled_image)
5487             && (self.coverage_reduction_mode || !other.coverage_reduction_mode)
5488             && (self.custom_border_color_without_format
5489                 || !other.custom_border_color_without_format)
5490             && (self.custom_border_colors || !other.custom_border_colors)
5491             && (self.decode_mode_shared_exponent || !other.decode_mode_shared_exponent)
5492             && (self.dedicated_allocation_image_aliasing
5493                 || !other.dedicated_allocation_image_aliasing)
5494             && (self.depth_bias_clamp || !other.depth_bias_clamp)
5495             && (self.depth_bounds || !other.depth_bounds)
5496             && (self.depth_clamp || !other.depth_clamp)
5497             && (self.depth_clamp_zero_one || !other.depth_clamp_zero_one)
5498             && (self.depth_clip_control || !other.depth_clip_control)
5499             && (self.depth_clip_enable || !other.depth_clip_enable)
5500             && (self.descriptor_binding_acceleration_structure_update_after_bind
5501                 || !other.descriptor_binding_acceleration_structure_update_after_bind)
5502             && (self.descriptor_binding_inline_uniform_block_update_after_bind
5503                 || !other.descriptor_binding_inline_uniform_block_update_after_bind)
5504             && (self.descriptor_binding_partially_bound
5505                 || !other.descriptor_binding_partially_bound)
5506             && (self.descriptor_binding_sampled_image_update_after_bind
5507                 || !other.descriptor_binding_sampled_image_update_after_bind)
5508             && (self.descriptor_binding_storage_buffer_update_after_bind
5509                 || !other.descriptor_binding_storage_buffer_update_after_bind)
5510             && (self.descriptor_binding_storage_image_update_after_bind
5511                 || !other.descriptor_binding_storage_image_update_after_bind)
5512             && (self.descriptor_binding_storage_texel_buffer_update_after_bind
5513                 || !other.descriptor_binding_storage_texel_buffer_update_after_bind)
5514             && (self.descriptor_binding_uniform_buffer_update_after_bind
5515                 || !other.descriptor_binding_uniform_buffer_update_after_bind)
5516             && (self.descriptor_binding_uniform_texel_buffer_update_after_bind
5517                 || !other.descriptor_binding_uniform_texel_buffer_update_after_bind)
5518             && (self.descriptor_binding_update_unused_while_pending
5519                 || !other.descriptor_binding_update_unused_while_pending)
5520             && (self.descriptor_binding_variable_descriptor_count
5521                 || !other.descriptor_binding_variable_descriptor_count)
5522             && (self.descriptor_buffer || !other.descriptor_buffer)
5523             && (self.descriptor_buffer_capture_replay || !other.descriptor_buffer_capture_replay)
5524             && (self.descriptor_buffer_image_layout_ignored
5525                 || !other.descriptor_buffer_image_layout_ignored)
5526             && (self.descriptor_buffer_push_descriptors
5527                 || !other.descriptor_buffer_push_descriptors)
5528             && (self.descriptor_indexing || !other.descriptor_indexing)
5529             && (self.descriptor_set_host_mapping || !other.descriptor_set_host_mapping)
5530             && (self.device_coherent_memory || !other.device_coherent_memory)
5531             && (self.device_fault || !other.device_fault)
5532             && (self.device_fault_vendor_binary || !other.device_fault_vendor_binary)
5533             && (self.device_generated_commands || !other.device_generated_commands)
5534             && (self.device_memory_report || !other.device_memory_report)
5535             && (self.diagnostics_config || !other.diagnostics_config)
5536             && (self.draw_indirect_count || !other.draw_indirect_count)
5537             && (self.draw_indirect_first_instance || !other.draw_indirect_first_instance)
5538             && (self.dual_src_blend || !other.dual_src_blend)
5539             && (self.dynamic_rendering || !other.dynamic_rendering)
5540             && (self.events || !other.events)
5541             && (self.exclusive_scissor || !other.exclusive_scissor)
5542             && (self.extended_dynamic_state || !other.extended_dynamic_state)
5543             && (self.extended_dynamic_state2 || !other.extended_dynamic_state2)
5544             && (self.extended_dynamic_state2_logic_op || !other.extended_dynamic_state2_logic_op)
5545             && (self.extended_dynamic_state2_patch_control_points
5546                 || !other.extended_dynamic_state2_patch_control_points)
5547             && (self.extended_dynamic_state3_alpha_to_coverage_enable
5548                 || !other.extended_dynamic_state3_alpha_to_coverage_enable)
5549             && (self.extended_dynamic_state3_alpha_to_one_enable
5550                 || !other.extended_dynamic_state3_alpha_to_one_enable)
5551             && (self.extended_dynamic_state3_color_blend_advanced
5552                 || !other.extended_dynamic_state3_color_blend_advanced)
5553             && (self.extended_dynamic_state3_color_blend_enable
5554                 || !other.extended_dynamic_state3_color_blend_enable)
5555             && (self.extended_dynamic_state3_color_blend_equation
5556                 || !other.extended_dynamic_state3_color_blend_equation)
5557             && (self.extended_dynamic_state3_color_write_mask
5558                 || !other.extended_dynamic_state3_color_write_mask)
5559             && (self.extended_dynamic_state3_conservative_rasterization_mode
5560                 || !other.extended_dynamic_state3_conservative_rasterization_mode)
5561             && (self.extended_dynamic_state3_coverage_modulation_mode
5562                 || !other.extended_dynamic_state3_coverage_modulation_mode)
5563             && (self.extended_dynamic_state3_coverage_modulation_table
5564                 || !other.extended_dynamic_state3_coverage_modulation_table)
5565             && (self.extended_dynamic_state3_coverage_modulation_table_enable
5566                 || !other.extended_dynamic_state3_coverage_modulation_table_enable)
5567             && (self.extended_dynamic_state3_coverage_reduction_mode
5568                 || !other.extended_dynamic_state3_coverage_reduction_mode)
5569             && (self.extended_dynamic_state3_coverage_to_color_enable
5570                 || !other.extended_dynamic_state3_coverage_to_color_enable)
5571             && (self.extended_dynamic_state3_coverage_to_color_location
5572                 || !other.extended_dynamic_state3_coverage_to_color_location)
5573             && (self.extended_dynamic_state3_depth_clamp_enable
5574                 || !other.extended_dynamic_state3_depth_clamp_enable)
5575             && (self.extended_dynamic_state3_depth_clip_enable
5576                 || !other.extended_dynamic_state3_depth_clip_enable)
5577             && (self.extended_dynamic_state3_depth_clip_negative_one_to_one
5578                 || !other.extended_dynamic_state3_depth_clip_negative_one_to_one)
5579             && (self.extended_dynamic_state3_extra_primitive_overestimation_size
5580                 || !other.extended_dynamic_state3_extra_primitive_overestimation_size)
5581             && (self.extended_dynamic_state3_line_rasterization_mode
5582                 || !other.extended_dynamic_state3_line_rasterization_mode)
5583             && (self.extended_dynamic_state3_line_stipple_enable
5584                 || !other.extended_dynamic_state3_line_stipple_enable)
5585             && (self.extended_dynamic_state3_logic_op_enable
5586                 || !other.extended_dynamic_state3_logic_op_enable)
5587             && (self.extended_dynamic_state3_polygon_mode
5588                 || !other.extended_dynamic_state3_polygon_mode)
5589             && (self.extended_dynamic_state3_provoking_vertex_mode
5590                 || !other.extended_dynamic_state3_provoking_vertex_mode)
5591             && (self.extended_dynamic_state3_rasterization_samples
5592                 || !other.extended_dynamic_state3_rasterization_samples)
5593             && (self.extended_dynamic_state3_rasterization_stream
5594                 || !other.extended_dynamic_state3_rasterization_stream)
5595             && (self.extended_dynamic_state3_representative_fragment_test_enable
5596                 || !other.extended_dynamic_state3_representative_fragment_test_enable)
5597             && (self.extended_dynamic_state3_sample_locations_enable
5598                 || !other.extended_dynamic_state3_sample_locations_enable)
5599             && (self.extended_dynamic_state3_sample_mask
5600                 || !other.extended_dynamic_state3_sample_mask)
5601             && (self.extended_dynamic_state3_shading_rate_image_enable
5602                 || !other.extended_dynamic_state3_shading_rate_image_enable)
5603             && (self.extended_dynamic_state3_tessellation_domain_origin
5604                 || !other.extended_dynamic_state3_tessellation_domain_origin)
5605             && (self.extended_dynamic_state3_viewport_swizzle
5606                 || !other.extended_dynamic_state3_viewport_swizzle)
5607             && (self.extended_dynamic_state3_viewport_w_scaling_enable
5608                 || !other.extended_dynamic_state3_viewport_w_scaling_enable)
5609             && (self.external_memory_rdma || !other.external_memory_rdma)
5610             && (self.fill_mode_non_solid || !other.fill_mode_non_solid)
5611             && (self.format_a4b4g4r4 || !other.format_a4b4g4r4)
5612             && (self.format_a4r4g4b4 || !other.format_a4r4g4b4)
5613             && (self.format_rgba10x6_without_y_cb_cr_sampler
5614                 || !other.format_rgba10x6_without_y_cb_cr_sampler)
5615             && (self.fragment_density_map || !other.fragment_density_map)
5616             && (self.fragment_density_map_deferred || !other.fragment_density_map_deferred)
5617             && (self.fragment_density_map_dynamic || !other.fragment_density_map_dynamic)
5618             && (self.fragment_density_map_non_subsampled_images
5619                 || !other.fragment_density_map_non_subsampled_images)
5620             && (self.fragment_density_map_offset || !other.fragment_density_map_offset)
5621             && (self.fragment_shader_barycentric || !other.fragment_shader_barycentric)
5622             && (self.fragment_shader_pixel_interlock || !other.fragment_shader_pixel_interlock)
5623             && (self.fragment_shader_sample_interlock || !other.fragment_shader_sample_interlock)
5624             && (self.fragment_shader_shading_rate_interlock
5625                 || !other.fragment_shader_shading_rate_interlock)
5626             && (self.fragment_shading_rate_enums || !other.fragment_shading_rate_enums)
5627             && (self.fragment_stores_and_atomics || !other.fragment_stores_and_atomics)
5628             && (self.full_draw_index_uint32 || !other.full_draw_index_uint32)
5629             && (self.geometry_shader || !other.geometry_shader)
5630             && (self.geometry_streams || !other.geometry_streams)
5631             && (self.global_priority_query || !other.global_priority_query)
5632             && (self.graphics_pipeline_library || !other.graphics_pipeline_library)
5633             && (self.host_query_reset || !other.host_query_reset)
5634             && (self.image2_d_view_of3_d || !other.image2_d_view_of3_d)
5635             && (self.image_compression_control || !other.image_compression_control)
5636             && (self.image_compression_control_swapchain
5637                 || !other.image_compression_control_swapchain)
5638             && (self.image_cube_array || !other.image_cube_array)
5639             && (self.image_footprint || !other.image_footprint)
5640             && (self.image_view2_d_on3_d_image || !other.image_view2_d_on3_d_image)
5641             && (self.image_view_format_reinterpretation
5642                 || !other.image_view_format_reinterpretation)
5643             && (self.image_view_format_swizzle || !other.image_view_format_swizzle)
5644             && (self.imageless_framebuffer || !other.imageless_framebuffer)
5645             && (self.independent_blend || !other.independent_blend)
5646             && (self.index_type_uint8 || !other.index_type_uint8)
5647             && (self.indirect_copy || !other.indirect_copy)
5648             && (self.inherited_conditional_rendering || !other.inherited_conditional_rendering)
5649             && (self.inherited_queries || !other.inherited_queries)
5650             && (self.inherited_viewport_scissor2_d || !other.inherited_viewport_scissor2_d)
5651             && (self.inline_uniform_block || !other.inline_uniform_block)
5652             && (self.invocation_mask || !other.invocation_mask)
5653             && (self.large_points || !other.large_points)
5654             && (self.legacy_dithering || !other.legacy_dithering)
5655             && (self.linear_color_attachment || !other.linear_color_attachment)
5656             && (self.logic_op || !other.logic_op)
5657             && (self.maintenance4 || !other.maintenance4)
5658             && (self.memory_decompression || !other.memory_decompression)
5659             && (self.memory_priority || !other.memory_priority)
5660             && (self.mesh_shader || !other.mesh_shader)
5661             && (self.mesh_shader_queries || !other.mesh_shader_queries)
5662             && (self.micromap || !other.micromap)
5663             && (self.micromap_capture_replay || !other.micromap_capture_replay)
5664             && (self.micromap_host_commands || !other.micromap_host_commands)
5665             && (self.min_lod || !other.min_lod)
5666             && (self.multi_draw || !other.multi_draw)
5667             && (self.multi_draw_indirect || !other.multi_draw_indirect)
5668             && (self.multi_viewport || !other.multi_viewport)
5669             && (self.multisample_array_image || !other.multisample_array_image)
5670             && (self.multisampled_render_to_single_sampled
5671                 || !other.multisampled_render_to_single_sampled)
5672             && (self.multiview || !other.multiview)
5673             && (self.multiview_geometry_shader || !other.multiview_geometry_shader)
5674             && (self.multiview_mesh_shader || !other.multiview_mesh_shader)
5675             && (self.multiview_per_view_viewports || !other.multiview_per_view_viewports)
5676             && (self.multiview_tessellation_shader || !other.multiview_tessellation_shader)
5677             && (self.mutable_comparison_samplers || !other.mutable_comparison_samplers)
5678             && (self.mutable_descriptor_type || !other.mutable_descriptor_type)
5679             && (self.no_invocation_fragment_shading_rates
5680                 || !other.no_invocation_fragment_shading_rates)
5681             && (self.non_seamless_cube_map || !other.non_seamless_cube_map)
5682             && (self.null_descriptor || !other.null_descriptor)
5683             && (self.occlusion_query_precise || !other.occlusion_query_precise)
5684             && (self.optical_flow || !other.optical_flow)
5685             && (self.pageable_device_local_memory || !other.pageable_device_local_memory)
5686             && (self.performance_counter_multiple_query_pools
5687                 || !other.performance_counter_multiple_query_pools)
5688             && (self.performance_counter_query_pools || !other.performance_counter_query_pools)
5689             && (self.pipeline_creation_cache_control || !other.pipeline_creation_cache_control)
5690             && (self.pipeline_executable_info || !other.pipeline_executable_info)
5691             && (self.pipeline_fragment_shading_rate || !other.pipeline_fragment_shading_rate)
5692             && (self.pipeline_properties_identifier || !other.pipeline_properties_identifier)
5693             && (self.pipeline_protected_access || !other.pipeline_protected_access)
5694             && (self.pipeline_robustness || !other.pipeline_robustness)
5695             && (self.pipeline_statistics_query || !other.pipeline_statistics_query)
5696             && (self.point_polygons || !other.point_polygons)
5697             && (self.present_barrier || !other.present_barrier)
5698             && (self.present_id || !other.present_id)
5699             && (self.present_wait || !other.present_wait)
5700             && (self.primitive_fragment_shading_rate || !other.primitive_fragment_shading_rate)
5701             && (self.primitive_fragment_shading_rate_mesh_shader
5702                 || !other.primitive_fragment_shading_rate_mesh_shader)
5703             && (self.primitive_topology_list_restart || !other.primitive_topology_list_restart)
5704             && (self.primitive_topology_patch_list_restart
5705                 || !other.primitive_topology_patch_list_restart)
5706             && (self.primitives_generated_query || !other.primitives_generated_query)
5707             && (self.primitives_generated_query_with_non_zero_streams
5708                 || !other.primitives_generated_query_with_non_zero_streams)
5709             && (self.primitives_generated_query_with_rasterizer_discard
5710                 || !other.primitives_generated_query_with_rasterizer_discard)
5711             && (self.private_data || !other.private_data)
5712             && (self.protected_memory || !other.protected_memory)
5713             && (self.provoking_vertex_last || !other.provoking_vertex_last)
5714             && (self.rasterization_order_color_attachment_access
5715                 || !other.rasterization_order_color_attachment_access)
5716             && (self.rasterization_order_depth_attachment_access
5717                 || !other.rasterization_order_depth_attachment_access)
5718             && (self.rasterization_order_stencil_attachment_access
5719                 || !other.rasterization_order_stencil_attachment_access)
5720             && (self.ray_query || !other.ray_query)
5721             && (self.ray_tracing_invocation_reorder || !other.ray_tracing_invocation_reorder)
5722             && (self.ray_tracing_maintenance1 || !other.ray_tracing_maintenance1)
5723             && (self.ray_tracing_motion_blur || !other.ray_tracing_motion_blur)
5724             && (self.ray_tracing_motion_blur_pipeline_trace_rays_indirect
5725                 || !other.ray_tracing_motion_blur_pipeline_trace_rays_indirect)
5726             && (self.ray_tracing_pipeline || !other.ray_tracing_pipeline)
5727             && (self.ray_tracing_pipeline_shader_group_handle_capture_replay
5728                 || !other.ray_tracing_pipeline_shader_group_handle_capture_replay)
5729             && (self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
5730                 || !other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed)
5731             && (self.ray_tracing_pipeline_trace_rays_indirect
5732                 || !other.ray_tracing_pipeline_trace_rays_indirect)
5733             && (self.ray_tracing_pipeline_trace_rays_indirect2
5734                 || !other.ray_tracing_pipeline_trace_rays_indirect2)
5735             && (self.ray_traversal_primitive_culling || !other.ray_traversal_primitive_culling)
5736             && (self.rectangular_lines || !other.rectangular_lines)
5737             && (self.report_address_binding || !other.report_address_binding)
5738             && (self.representative_fragment_test || !other.representative_fragment_test)
5739             && (self.robust_buffer_access || !other.robust_buffer_access)
5740             && (self.robust_buffer_access2 || !other.robust_buffer_access2)
5741             && (self.robust_image_access || !other.robust_image_access)
5742             && (self.robust_image_access2 || !other.robust_image_access2)
5743             && (self.runtime_descriptor_array || !other.runtime_descriptor_array)
5744             && (self.sample_rate_shading || !other.sample_rate_shading)
5745             && (self.sampler2_d_view_of3_d || !other.sampler2_d_view_of3_d)
5746             && (self.sampler_anisotropy || !other.sampler_anisotropy)
5747             && (self.sampler_filter_minmax || !other.sampler_filter_minmax)
5748             && (self.sampler_mip_lod_bias || !other.sampler_mip_lod_bias)
5749             && (self.sampler_mirror_clamp_to_edge || !other.sampler_mirror_clamp_to_edge)
5750             && (self.sampler_ycbcr_conversion || !other.sampler_ycbcr_conversion)
5751             && (self.scalar_block_layout || !other.scalar_block_layout)
5752             && (self.separate_depth_stencil_layouts || !other.separate_depth_stencil_layouts)
5753             && (self.separate_stencil_mask_ref || !other.separate_stencil_mask_ref)
5754             && (self.shader_buffer_float16_atomic_add || !other.shader_buffer_float16_atomic_add)
5755             && (self.shader_buffer_float16_atomic_min_max
5756                 || !other.shader_buffer_float16_atomic_min_max)
5757             && (self.shader_buffer_float16_atomics || !other.shader_buffer_float16_atomics)
5758             && (self.shader_buffer_float32_atomic_add || !other.shader_buffer_float32_atomic_add)
5759             && (self.shader_buffer_float32_atomic_min_max
5760                 || !other.shader_buffer_float32_atomic_min_max)
5761             && (self.shader_buffer_float32_atomics || !other.shader_buffer_float32_atomics)
5762             && (self.shader_buffer_float64_atomic_add || !other.shader_buffer_float64_atomic_add)
5763             && (self.shader_buffer_float64_atomic_min_max
5764                 || !other.shader_buffer_float64_atomic_min_max)
5765             && (self.shader_buffer_float64_atomics || !other.shader_buffer_float64_atomics)
5766             && (self.shader_buffer_int64_atomics || !other.shader_buffer_int64_atomics)
5767             && (self.shader_clip_distance || !other.shader_clip_distance)
5768             && (self.shader_core_builtins || !other.shader_core_builtins)
5769             && (self.shader_cull_distance || !other.shader_cull_distance)
5770             && (self.shader_demote_to_helper_invocation
5771                 || !other.shader_demote_to_helper_invocation)
5772             && (self.shader_device_clock || !other.shader_device_clock)
5773             && (self.shader_draw_parameters || !other.shader_draw_parameters)
5774             && (self.shader_early_and_late_fragment_tests
5775                 || !other.shader_early_and_late_fragment_tests)
5776             && (self.shader_float16 || !other.shader_float16)
5777             && (self.shader_float64 || !other.shader_float64)
5778             && (self.shader_image_float32_atomic_add || !other.shader_image_float32_atomic_add)
5779             && (self.shader_image_float32_atomic_min_max
5780                 || !other.shader_image_float32_atomic_min_max)
5781             && (self.shader_image_float32_atomics || !other.shader_image_float32_atomics)
5782             && (self.shader_image_gather_extended || !other.shader_image_gather_extended)
5783             && (self.shader_image_int64_atomics || !other.shader_image_int64_atomics)
5784             && (self.shader_input_attachment_array_dynamic_indexing
5785                 || !other.shader_input_attachment_array_dynamic_indexing)
5786             && (self.shader_input_attachment_array_non_uniform_indexing
5787                 || !other.shader_input_attachment_array_non_uniform_indexing)
5788             && (self.shader_int16 || !other.shader_int16)
5789             && (self.shader_int64 || !other.shader_int64)
5790             && (self.shader_int8 || !other.shader_int8)
5791             && (self.shader_integer_dot_product || !other.shader_integer_dot_product)
5792             && (self.shader_integer_functions2 || !other.shader_integer_functions2)
5793             && (self.shader_module_identifier || !other.shader_module_identifier)
5794             && (self.shader_output_layer || !other.shader_output_layer)
5795             && (self.shader_output_viewport_index || !other.shader_output_viewport_index)
5796             && (self.shader_resource_min_lod || !other.shader_resource_min_lod)
5797             && (self.shader_resource_residency || !other.shader_resource_residency)
5798             && (self.shader_sample_rate_interpolation_functions
5799                 || !other.shader_sample_rate_interpolation_functions)
5800             && (self.shader_sampled_image_array_dynamic_indexing
5801                 || !other.shader_sampled_image_array_dynamic_indexing)
5802             && (self.shader_sampled_image_array_non_uniform_indexing
5803                 || !other.shader_sampled_image_array_non_uniform_indexing)
5804             && (self.shader_shared_float16_atomic_add || !other.shader_shared_float16_atomic_add)
5805             && (self.shader_shared_float16_atomic_min_max
5806                 || !other.shader_shared_float16_atomic_min_max)
5807             && (self.shader_shared_float16_atomics || !other.shader_shared_float16_atomics)
5808             && (self.shader_shared_float32_atomic_add || !other.shader_shared_float32_atomic_add)
5809             && (self.shader_shared_float32_atomic_min_max
5810                 || !other.shader_shared_float32_atomic_min_max)
5811             && (self.shader_shared_float32_atomics || !other.shader_shared_float32_atomics)
5812             && (self.shader_shared_float64_atomic_add || !other.shader_shared_float64_atomic_add)
5813             && (self.shader_shared_float64_atomic_min_max
5814                 || !other.shader_shared_float64_atomic_min_max)
5815             && (self.shader_shared_float64_atomics || !other.shader_shared_float64_atomics)
5816             && (self.shader_shared_int64_atomics || !other.shader_shared_int64_atomics)
5817             && (self.shader_sm_builtins || !other.shader_sm_builtins)
5818             && (self.shader_storage_buffer_array_dynamic_indexing
5819                 || !other.shader_storage_buffer_array_dynamic_indexing)
5820             && (self.shader_storage_buffer_array_non_uniform_indexing
5821                 || !other.shader_storage_buffer_array_non_uniform_indexing)
5822             && (self.shader_storage_image_array_dynamic_indexing
5823                 || !other.shader_storage_image_array_dynamic_indexing)
5824             && (self.shader_storage_image_array_non_uniform_indexing
5825                 || !other.shader_storage_image_array_non_uniform_indexing)
5826             && (self.shader_storage_image_extended_formats
5827                 || !other.shader_storage_image_extended_formats)
5828             && (self.shader_storage_image_multisample || !other.shader_storage_image_multisample)
5829             && (self.shader_storage_image_read_without_format
5830                 || !other.shader_storage_image_read_without_format)
5831             && (self.shader_storage_image_write_without_format
5832                 || !other.shader_storage_image_write_without_format)
5833             && (self.shader_storage_texel_buffer_array_dynamic_indexing
5834                 || !other.shader_storage_texel_buffer_array_dynamic_indexing)
5835             && (self.shader_storage_texel_buffer_array_non_uniform_indexing
5836                 || !other.shader_storage_texel_buffer_array_non_uniform_indexing)
5837             && (self.shader_subgroup_clock || !other.shader_subgroup_clock)
5838             && (self.shader_subgroup_extended_types || !other.shader_subgroup_extended_types)
5839             && (self.shader_subgroup_uniform_control_flow
5840                 || !other.shader_subgroup_uniform_control_flow)
5841             && (self.shader_terminate_invocation || !other.shader_terminate_invocation)
5842             && (self.shader_tessellation_and_geometry_point_size
5843                 || !other.shader_tessellation_and_geometry_point_size)
5844             && (self.shader_uniform_buffer_array_dynamic_indexing
5845                 || !other.shader_uniform_buffer_array_dynamic_indexing)
5846             && (self.shader_uniform_buffer_array_non_uniform_indexing
5847                 || !other.shader_uniform_buffer_array_non_uniform_indexing)
5848             && (self.shader_uniform_texel_buffer_array_dynamic_indexing
5849                 || !other.shader_uniform_texel_buffer_array_dynamic_indexing)
5850             && (self.shader_uniform_texel_buffer_array_non_uniform_indexing
5851                 || !other.shader_uniform_texel_buffer_array_non_uniform_indexing)
5852             && (self.shader_zero_initialize_workgroup_memory
5853                 || !other.shader_zero_initialize_workgroup_memory)
5854             && (self.shading_rate_coarse_sample_order || !other.shading_rate_coarse_sample_order)
5855             && (self.shading_rate_image || !other.shading_rate_image)
5856             && (self.smooth_lines || !other.smooth_lines)
5857             && (self.sparse_binding || !other.sparse_binding)
5858             && (self.sparse_image_float32_atomic_add || !other.sparse_image_float32_atomic_add)
5859             && (self.sparse_image_float32_atomic_min_max
5860                 || !other.sparse_image_float32_atomic_min_max)
5861             && (self.sparse_image_float32_atomics || !other.sparse_image_float32_atomics)
5862             && (self.sparse_image_int64_atomics || !other.sparse_image_int64_atomics)
5863             && (self.sparse_residency16_samples || !other.sparse_residency16_samples)
5864             && (self.sparse_residency2_samples || !other.sparse_residency2_samples)
5865             && (self.sparse_residency4_samples || !other.sparse_residency4_samples)
5866             && (self.sparse_residency8_samples || !other.sparse_residency8_samples)
5867             && (self.sparse_residency_aliased || !other.sparse_residency_aliased)
5868             && (self.sparse_residency_buffer || !other.sparse_residency_buffer)
5869             && (self.sparse_residency_image2_d || !other.sparse_residency_image2_d)
5870             && (self.sparse_residency_image3_d || !other.sparse_residency_image3_d)
5871             && (self.stippled_bresenham_lines || !other.stippled_bresenham_lines)
5872             && (self.stippled_rectangular_lines || !other.stippled_rectangular_lines)
5873             && (self.stippled_smooth_lines || !other.stippled_smooth_lines)
5874             && (self.storage_buffer16_bit_access || !other.storage_buffer16_bit_access)
5875             && (self.storage_buffer8_bit_access || !other.storage_buffer8_bit_access)
5876             && (self.storage_input_output16 || !other.storage_input_output16)
5877             && (self.storage_push_constant16 || !other.storage_push_constant16)
5878             && (self.storage_push_constant8 || !other.storage_push_constant8)
5879             && (self.subgroup_broadcast_dynamic_id || !other.subgroup_broadcast_dynamic_id)
5880             && (self.subgroup_size_control || !other.subgroup_size_control)
5881             && (self.subpass_merge_feedback || !other.subpass_merge_feedback)
5882             && (self.subpass_shading || !other.subpass_shading)
5883             && (self.supersample_fragment_shading_rates
5884                 || !other.supersample_fragment_shading_rates)
5885             && (self.swapchain_maintenance1 || !other.swapchain_maintenance1)
5886             && (self.synchronization2 || !other.synchronization2)
5887             && (self.task_shader || !other.task_shader)
5888             && (self.tessellation_isolines || !other.tessellation_isolines)
5889             && (self.tessellation_point_mode || !other.tessellation_point_mode)
5890             && (self.tessellation_shader || !other.tessellation_shader)
5891             && (self.texel_buffer_alignment || !other.texel_buffer_alignment)
5892             && (self.texture_block_match || !other.texture_block_match)
5893             && (self.texture_box_filter || !other.texture_box_filter)
5894             && (self.texture_compression_astc_hdr || !other.texture_compression_astc_hdr)
5895             && (self.texture_compression_astc_ldr || !other.texture_compression_astc_ldr)
5896             && (self.texture_compression_bc || !other.texture_compression_bc)
5897             && (self.texture_compression_etc2 || !other.texture_compression_etc2)
5898             && (self.texture_sample_weighted || !other.texture_sample_weighted)
5899             && (self.tile_properties || !other.tile_properties)
5900             && (self.timeline_semaphore || !other.timeline_semaphore)
5901             && (self.transform_feedback || !other.transform_feedback)
5902             && (self.transform_feedback_preserves_provoking_vertex
5903                 || !other.transform_feedback_preserves_provoking_vertex)
5904             && (self.triangle_fans || !other.triangle_fans)
5905             && (self.uniform_and_storage_buffer16_bit_access
5906                 || !other.uniform_and_storage_buffer16_bit_access)
5907             && (self.uniform_and_storage_buffer8_bit_access
5908                 || !other.uniform_and_storage_buffer8_bit_access)
5909             && (self.uniform_buffer_standard_layout || !other.uniform_buffer_standard_layout)
5910             && (self.variable_multisample_rate || !other.variable_multisample_rate)
5911             && (self.variable_pointers || !other.variable_pointers)
5912             && (self.variable_pointers_storage_buffer || !other.variable_pointers_storage_buffer)
5913             && (self.vertex_attribute_access_beyond_stride
5914                 || !other.vertex_attribute_access_beyond_stride)
5915             && (self.vertex_attribute_instance_rate_divisor
5916                 || !other.vertex_attribute_instance_rate_divisor)
5917             && (self.vertex_attribute_instance_rate_zero_divisor
5918                 || !other.vertex_attribute_instance_rate_zero_divisor)
5919             && (self.vertex_input_dynamic_state || !other.vertex_input_dynamic_state)
5920             && (self.vertex_pipeline_stores_and_atomics
5921                 || !other.vertex_pipeline_stores_and_atomics)
5922             && (self.vulkan_memory_model || !other.vulkan_memory_model)
5923             && (self.vulkan_memory_model_availability_visibility_chains
5924                 || !other.vulkan_memory_model_availability_visibility_chains)
5925             && (self.vulkan_memory_model_device_scope || !other.vulkan_memory_model_device_scope)
5926             && (self.wide_lines || !other.wide_lines)
5927             && (self.workgroup_memory_explicit_layout || !other.workgroup_memory_explicit_layout)
5928             && (self.workgroup_memory_explicit_layout16_bit_access
5929                 || !other.workgroup_memory_explicit_layout16_bit_access)
5930             && (self.workgroup_memory_explicit_layout8_bit_access
5931                 || !other.workgroup_memory_explicit_layout8_bit_access)
5932             && (self.workgroup_memory_explicit_layout_scalar_block_layout
5933                 || !other.workgroup_memory_explicit_layout_scalar_block_layout)
5934             && (self.ycbcr2plane444_formats || !other.ycbcr2plane444_formats)
5935             && (self.ycbcr_image_arrays || !other.ycbcr_image_arrays)
5936     }
5937     #[doc = r" Returns whether all members in `other` are set in `self`."]
5938     #[deprecated(since = "0.31.0", note = "Use `contains` instead.")]
5939     #[inline]
is_superset_of(&self, other: &Self) -> bool5940     pub const fn is_superset_of(&self, other: &Self) -> bool {
5941         self.contains(other)
5942     }
5943     #[doc = r" Returns the union of `self` and `other`."]
5944     #[inline]
union(&self, other: &Self) -> Self5945     pub const fn union(&self, other: &Self) -> Self {
5946         Self {
5947             acceleration_structure: self.acceleration_structure || other.acceleration_structure,
5948             acceleration_structure_capture_replay: self.acceleration_structure_capture_replay
5949                 || other.acceleration_structure_capture_replay,
5950             acceleration_structure_host_commands: self.acceleration_structure_host_commands
5951                 || other.acceleration_structure_host_commands,
5952             acceleration_structure_indirect_build: self.acceleration_structure_indirect_build
5953                 || other.acceleration_structure_indirect_build,
5954             advanced_blend_coherent_operations: self.advanced_blend_coherent_operations
5955                 || other.advanced_blend_coherent_operations,
5956             alpha_to_one: self.alpha_to_one || other.alpha_to_one,
5957             amigo_profiling: self.amigo_profiling || other.amigo_profiling,
5958             attachment_feedback_loop_layout: self.attachment_feedback_loop_layout
5959                 || other.attachment_feedback_loop_layout,
5960             attachment_fragment_shading_rate: self.attachment_fragment_shading_rate
5961                 || other.attachment_fragment_shading_rate,
5962             border_color_swizzle: self.border_color_swizzle || other.border_color_swizzle,
5963             border_color_swizzle_from_image: self.border_color_swizzle_from_image
5964                 || other.border_color_swizzle_from_image,
5965             bresenham_lines: self.bresenham_lines || other.bresenham_lines,
5966             buffer_device_address: self.buffer_device_address || other.buffer_device_address,
5967             buffer_device_address_capture_replay: self.buffer_device_address_capture_replay
5968                 || other.buffer_device_address_capture_replay,
5969             buffer_device_address_multi_device: self.buffer_device_address_multi_device
5970                 || other.buffer_device_address_multi_device,
5971             color_write_enable: self.color_write_enable || other.color_write_enable,
5972             compute_derivative_group_linear: self.compute_derivative_group_linear
5973                 || other.compute_derivative_group_linear,
5974             compute_derivative_group_quads: self.compute_derivative_group_quads
5975                 || other.compute_derivative_group_quads,
5976             compute_full_subgroups: self.compute_full_subgroups || other.compute_full_subgroups,
5977             conditional_rendering: self.conditional_rendering || other.conditional_rendering,
5978             constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors
5979                 || other.constant_alpha_color_blend_factors,
5980             cooperative_matrix: self.cooperative_matrix || other.cooperative_matrix,
5981             cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access
5982                 || other.cooperative_matrix_robust_buffer_access,
5983             corner_sampled_image: self.corner_sampled_image || other.corner_sampled_image,
5984             coverage_reduction_mode: self.coverage_reduction_mode || other.coverage_reduction_mode,
5985             custom_border_color_without_format: self.custom_border_color_without_format
5986                 || other.custom_border_color_without_format,
5987             custom_border_colors: self.custom_border_colors || other.custom_border_colors,
5988             decode_mode_shared_exponent: self.decode_mode_shared_exponent
5989                 || other.decode_mode_shared_exponent,
5990             dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing
5991                 || other.dedicated_allocation_image_aliasing,
5992             depth_bias_clamp: self.depth_bias_clamp || other.depth_bias_clamp,
5993             depth_bounds: self.depth_bounds || other.depth_bounds,
5994             depth_clamp: self.depth_clamp || other.depth_clamp,
5995             depth_clamp_zero_one: self.depth_clamp_zero_one || other.depth_clamp_zero_one,
5996             depth_clip_control: self.depth_clip_control || other.depth_clip_control,
5997             depth_clip_enable: self.depth_clip_enable || other.depth_clip_enable,
5998             descriptor_binding_acceleration_structure_update_after_bind: self
5999                 .descriptor_binding_acceleration_structure_update_after_bind
6000                 || other.descriptor_binding_acceleration_structure_update_after_bind,
6001             descriptor_binding_inline_uniform_block_update_after_bind: self
6002                 .descriptor_binding_inline_uniform_block_update_after_bind
6003                 || other.descriptor_binding_inline_uniform_block_update_after_bind,
6004             descriptor_binding_partially_bound: self.descriptor_binding_partially_bound
6005                 || other.descriptor_binding_partially_bound,
6006             descriptor_binding_sampled_image_update_after_bind: self
6007                 .descriptor_binding_sampled_image_update_after_bind
6008                 || other.descriptor_binding_sampled_image_update_after_bind,
6009             descriptor_binding_storage_buffer_update_after_bind: self
6010                 .descriptor_binding_storage_buffer_update_after_bind
6011                 || other.descriptor_binding_storage_buffer_update_after_bind,
6012             descriptor_binding_storage_image_update_after_bind: self
6013                 .descriptor_binding_storage_image_update_after_bind
6014                 || other.descriptor_binding_storage_image_update_after_bind,
6015             descriptor_binding_storage_texel_buffer_update_after_bind: self
6016                 .descriptor_binding_storage_texel_buffer_update_after_bind
6017                 || other.descriptor_binding_storage_texel_buffer_update_after_bind,
6018             descriptor_binding_uniform_buffer_update_after_bind: self
6019                 .descriptor_binding_uniform_buffer_update_after_bind
6020                 || other.descriptor_binding_uniform_buffer_update_after_bind,
6021             descriptor_binding_uniform_texel_buffer_update_after_bind: self
6022                 .descriptor_binding_uniform_texel_buffer_update_after_bind
6023                 || other.descriptor_binding_uniform_texel_buffer_update_after_bind,
6024             descriptor_binding_update_unused_while_pending: self
6025                 .descriptor_binding_update_unused_while_pending
6026                 || other.descriptor_binding_update_unused_while_pending,
6027             descriptor_binding_variable_descriptor_count: self
6028                 .descriptor_binding_variable_descriptor_count
6029                 || other.descriptor_binding_variable_descriptor_count,
6030             descriptor_buffer: self.descriptor_buffer || other.descriptor_buffer,
6031             descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay
6032                 || other.descriptor_buffer_capture_replay,
6033             descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored
6034                 || other.descriptor_buffer_image_layout_ignored,
6035             descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors
6036                 || other.descriptor_buffer_push_descriptors,
6037             descriptor_indexing: self.descriptor_indexing || other.descriptor_indexing,
6038             descriptor_set_host_mapping: self.descriptor_set_host_mapping
6039                 || other.descriptor_set_host_mapping,
6040             device_coherent_memory: self.device_coherent_memory || other.device_coherent_memory,
6041             device_fault: self.device_fault || other.device_fault,
6042             device_fault_vendor_binary: self.device_fault_vendor_binary
6043                 || other.device_fault_vendor_binary,
6044             device_generated_commands: self.device_generated_commands
6045                 || other.device_generated_commands,
6046             device_memory_report: self.device_memory_report || other.device_memory_report,
6047             diagnostics_config: self.diagnostics_config || other.diagnostics_config,
6048             draw_indirect_count: self.draw_indirect_count || other.draw_indirect_count,
6049             draw_indirect_first_instance: self.draw_indirect_first_instance
6050                 || other.draw_indirect_first_instance,
6051             dual_src_blend: self.dual_src_blend || other.dual_src_blend,
6052             dynamic_rendering: self.dynamic_rendering || other.dynamic_rendering,
6053             events: self.events || other.events,
6054             exclusive_scissor: self.exclusive_scissor || other.exclusive_scissor,
6055             extended_dynamic_state: self.extended_dynamic_state || other.extended_dynamic_state,
6056             extended_dynamic_state2: self.extended_dynamic_state2 || other.extended_dynamic_state2,
6057             extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op
6058                 || other.extended_dynamic_state2_logic_op,
6059             extended_dynamic_state2_patch_control_points: self
6060                 .extended_dynamic_state2_patch_control_points
6061                 || other.extended_dynamic_state2_patch_control_points,
6062             extended_dynamic_state3_alpha_to_coverage_enable: self
6063                 .extended_dynamic_state3_alpha_to_coverage_enable
6064                 || other.extended_dynamic_state3_alpha_to_coverage_enable,
6065             extended_dynamic_state3_alpha_to_one_enable: self
6066                 .extended_dynamic_state3_alpha_to_one_enable
6067                 || other.extended_dynamic_state3_alpha_to_one_enable,
6068             extended_dynamic_state3_color_blend_advanced: self
6069                 .extended_dynamic_state3_color_blend_advanced
6070                 || other.extended_dynamic_state3_color_blend_advanced,
6071             extended_dynamic_state3_color_blend_enable: self
6072                 .extended_dynamic_state3_color_blend_enable
6073                 || other.extended_dynamic_state3_color_blend_enable,
6074             extended_dynamic_state3_color_blend_equation: self
6075                 .extended_dynamic_state3_color_blend_equation
6076                 || other.extended_dynamic_state3_color_blend_equation,
6077             extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask
6078                 || other.extended_dynamic_state3_color_write_mask,
6079             extended_dynamic_state3_conservative_rasterization_mode: self
6080                 .extended_dynamic_state3_conservative_rasterization_mode
6081                 || other.extended_dynamic_state3_conservative_rasterization_mode,
6082             extended_dynamic_state3_coverage_modulation_mode: self
6083                 .extended_dynamic_state3_coverage_modulation_mode
6084                 || other.extended_dynamic_state3_coverage_modulation_mode,
6085             extended_dynamic_state3_coverage_modulation_table: self
6086                 .extended_dynamic_state3_coverage_modulation_table
6087                 || other.extended_dynamic_state3_coverage_modulation_table,
6088             extended_dynamic_state3_coverage_modulation_table_enable: self
6089                 .extended_dynamic_state3_coverage_modulation_table_enable
6090                 || other.extended_dynamic_state3_coverage_modulation_table_enable,
6091             extended_dynamic_state3_coverage_reduction_mode: self
6092                 .extended_dynamic_state3_coverage_reduction_mode
6093                 || other.extended_dynamic_state3_coverage_reduction_mode,
6094             extended_dynamic_state3_coverage_to_color_enable: self
6095                 .extended_dynamic_state3_coverage_to_color_enable
6096                 || other.extended_dynamic_state3_coverage_to_color_enable,
6097             extended_dynamic_state3_coverage_to_color_location: self
6098                 .extended_dynamic_state3_coverage_to_color_location
6099                 || other.extended_dynamic_state3_coverage_to_color_location,
6100             extended_dynamic_state3_depth_clamp_enable: self
6101                 .extended_dynamic_state3_depth_clamp_enable
6102                 || other.extended_dynamic_state3_depth_clamp_enable,
6103             extended_dynamic_state3_depth_clip_enable: self
6104                 .extended_dynamic_state3_depth_clip_enable
6105                 || other.extended_dynamic_state3_depth_clip_enable,
6106             extended_dynamic_state3_depth_clip_negative_one_to_one: self
6107                 .extended_dynamic_state3_depth_clip_negative_one_to_one
6108                 || other.extended_dynamic_state3_depth_clip_negative_one_to_one,
6109             extended_dynamic_state3_extra_primitive_overestimation_size: self
6110                 .extended_dynamic_state3_extra_primitive_overestimation_size
6111                 || other.extended_dynamic_state3_extra_primitive_overestimation_size,
6112             extended_dynamic_state3_line_rasterization_mode: self
6113                 .extended_dynamic_state3_line_rasterization_mode
6114                 || other.extended_dynamic_state3_line_rasterization_mode,
6115             extended_dynamic_state3_line_stipple_enable: self
6116                 .extended_dynamic_state3_line_stipple_enable
6117                 || other.extended_dynamic_state3_line_stipple_enable,
6118             extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable
6119                 || other.extended_dynamic_state3_logic_op_enable,
6120             extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode
6121                 || other.extended_dynamic_state3_polygon_mode,
6122             extended_dynamic_state3_provoking_vertex_mode: self
6123                 .extended_dynamic_state3_provoking_vertex_mode
6124                 || other.extended_dynamic_state3_provoking_vertex_mode,
6125             extended_dynamic_state3_rasterization_samples: self
6126                 .extended_dynamic_state3_rasterization_samples
6127                 || other.extended_dynamic_state3_rasterization_samples,
6128             extended_dynamic_state3_rasterization_stream: self
6129                 .extended_dynamic_state3_rasterization_stream
6130                 || other.extended_dynamic_state3_rasterization_stream,
6131             extended_dynamic_state3_representative_fragment_test_enable: self
6132                 .extended_dynamic_state3_representative_fragment_test_enable
6133                 || other.extended_dynamic_state3_representative_fragment_test_enable,
6134             extended_dynamic_state3_sample_locations_enable: self
6135                 .extended_dynamic_state3_sample_locations_enable
6136                 || other.extended_dynamic_state3_sample_locations_enable,
6137             extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask
6138                 || other.extended_dynamic_state3_sample_mask,
6139             extended_dynamic_state3_shading_rate_image_enable: self
6140                 .extended_dynamic_state3_shading_rate_image_enable
6141                 || other.extended_dynamic_state3_shading_rate_image_enable,
6142             extended_dynamic_state3_tessellation_domain_origin: self
6143                 .extended_dynamic_state3_tessellation_domain_origin
6144                 || other.extended_dynamic_state3_tessellation_domain_origin,
6145             extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle
6146                 || other.extended_dynamic_state3_viewport_swizzle,
6147             extended_dynamic_state3_viewport_w_scaling_enable: self
6148                 .extended_dynamic_state3_viewport_w_scaling_enable
6149                 || other.extended_dynamic_state3_viewport_w_scaling_enable,
6150             external_memory_rdma: self.external_memory_rdma || other.external_memory_rdma,
6151             fill_mode_non_solid: self.fill_mode_non_solid || other.fill_mode_non_solid,
6152             format_a4b4g4r4: self.format_a4b4g4r4 || other.format_a4b4g4r4,
6153             format_a4r4g4b4: self.format_a4r4g4b4 || other.format_a4r4g4b4,
6154             format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler
6155                 || other.format_rgba10x6_without_y_cb_cr_sampler,
6156             fragment_density_map: self.fragment_density_map || other.fragment_density_map,
6157             fragment_density_map_deferred: self.fragment_density_map_deferred
6158                 || other.fragment_density_map_deferred,
6159             fragment_density_map_dynamic: self.fragment_density_map_dynamic
6160                 || other.fragment_density_map_dynamic,
6161             fragment_density_map_non_subsampled_images: self
6162                 .fragment_density_map_non_subsampled_images
6163                 || other.fragment_density_map_non_subsampled_images,
6164             fragment_density_map_offset: self.fragment_density_map_offset
6165                 || other.fragment_density_map_offset,
6166             fragment_shader_barycentric: self.fragment_shader_barycentric
6167                 || other.fragment_shader_barycentric,
6168             fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock
6169                 || other.fragment_shader_pixel_interlock,
6170             fragment_shader_sample_interlock: self.fragment_shader_sample_interlock
6171                 || other.fragment_shader_sample_interlock,
6172             fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock
6173                 || other.fragment_shader_shading_rate_interlock,
6174             fragment_shading_rate_enums: self.fragment_shading_rate_enums
6175                 || other.fragment_shading_rate_enums,
6176             fragment_stores_and_atomics: self.fragment_stores_and_atomics
6177                 || other.fragment_stores_and_atomics,
6178             full_draw_index_uint32: self.full_draw_index_uint32 || other.full_draw_index_uint32,
6179             geometry_shader: self.geometry_shader || other.geometry_shader,
6180             geometry_streams: self.geometry_streams || other.geometry_streams,
6181             global_priority_query: self.global_priority_query || other.global_priority_query,
6182             graphics_pipeline_library: self.graphics_pipeline_library
6183                 || other.graphics_pipeline_library,
6184             host_query_reset: self.host_query_reset || other.host_query_reset,
6185             image2_d_view_of3_d: self.image2_d_view_of3_d || other.image2_d_view_of3_d,
6186             image_compression_control: self.image_compression_control
6187                 || other.image_compression_control,
6188             image_compression_control_swapchain: self.image_compression_control_swapchain
6189                 || other.image_compression_control_swapchain,
6190             image_cube_array: self.image_cube_array || other.image_cube_array,
6191             image_footprint: self.image_footprint || other.image_footprint,
6192             image_view2_d_on3_d_image: self.image_view2_d_on3_d_image
6193                 || other.image_view2_d_on3_d_image,
6194             image_view_format_reinterpretation: self.image_view_format_reinterpretation
6195                 || other.image_view_format_reinterpretation,
6196             image_view_format_swizzle: self.image_view_format_swizzle
6197                 || other.image_view_format_swizzle,
6198             imageless_framebuffer: self.imageless_framebuffer || other.imageless_framebuffer,
6199             independent_blend: self.independent_blend || other.independent_blend,
6200             index_type_uint8: self.index_type_uint8 || other.index_type_uint8,
6201             indirect_copy: self.indirect_copy || other.indirect_copy,
6202             inherited_conditional_rendering: self.inherited_conditional_rendering
6203                 || other.inherited_conditional_rendering,
6204             inherited_queries: self.inherited_queries || other.inherited_queries,
6205             inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d
6206                 || other.inherited_viewport_scissor2_d,
6207             inline_uniform_block: self.inline_uniform_block || other.inline_uniform_block,
6208             invocation_mask: self.invocation_mask || other.invocation_mask,
6209             large_points: self.large_points || other.large_points,
6210             legacy_dithering: self.legacy_dithering || other.legacy_dithering,
6211             linear_color_attachment: self.linear_color_attachment || other.linear_color_attachment,
6212             logic_op: self.logic_op || other.logic_op,
6213             maintenance4: self.maintenance4 || other.maintenance4,
6214             memory_decompression: self.memory_decompression || other.memory_decompression,
6215             memory_priority: self.memory_priority || other.memory_priority,
6216             mesh_shader: self.mesh_shader || other.mesh_shader,
6217             mesh_shader_queries: self.mesh_shader_queries || other.mesh_shader_queries,
6218             micromap: self.micromap || other.micromap,
6219             micromap_capture_replay: self.micromap_capture_replay || other.micromap_capture_replay,
6220             micromap_host_commands: self.micromap_host_commands || other.micromap_host_commands,
6221             min_lod: self.min_lod || other.min_lod,
6222             multi_draw: self.multi_draw || other.multi_draw,
6223             multi_draw_indirect: self.multi_draw_indirect || other.multi_draw_indirect,
6224             multi_viewport: self.multi_viewport || other.multi_viewport,
6225             multisample_array_image: self.multisample_array_image || other.multisample_array_image,
6226             multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled
6227                 || other.multisampled_render_to_single_sampled,
6228             multiview: self.multiview || other.multiview,
6229             multiview_geometry_shader: self.multiview_geometry_shader
6230                 || other.multiview_geometry_shader,
6231             multiview_mesh_shader: self.multiview_mesh_shader || other.multiview_mesh_shader,
6232             multiview_per_view_viewports: self.multiview_per_view_viewports
6233                 || other.multiview_per_view_viewports,
6234             multiview_tessellation_shader: self.multiview_tessellation_shader
6235                 || other.multiview_tessellation_shader,
6236             mutable_comparison_samplers: self.mutable_comparison_samplers
6237                 || other.mutable_comparison_samplers,
6238             mutable_descriptor_type: self.mutable_descriptor_type || other.mutable_descriptor_type,
6239             no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates
6240                 || other.no_invocation_fragment_shading_rates,
6241             non_seamless_cube_map: self.non_seamless_cube_map || other.non_seamless_cube_map,
6242             null_descriptor: self.null_descriptor || other.null_descriptor,
6243             occlusion_query_precise: self.occlusion_query_precise || other.occlusion_query_precise,
6244             optical_flow: self.optical_flow || other.optical_flow,
6245             pageable_device_local_memory: self.pageable_device_local_memory
6246                 || other.pageable_device_local_memory,
6247             performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools
6248                 || other.performance_counter_multiple_query_pools,
6249             performance_counter_query_pools: self.performance_counter_query_pools
6250                 || other.performance_counter_query_pools,
6251             pipeline_creation_cache_control: self.pipeline_creation_cache_control
6252                 || other.pipeline_creation_cache_control,
6253             pipeline_executable_info: self.pipeline_executable_info
6254                 || other.pipeline_executable_info,
6255             pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate
6256                 || other.pipeline_fragment_shading_rate,
6257             pipeline_properties_identifier: self.pipeline_properties_identifier
6258                 || other.pipeline_properties_identifier,
6259             pipeline_protected_access: self.pipeline_protected_access
6260                 || other.pipeline_protected_access,
6261             pipeline_robustness: self.pipeline_robustness || other.pipeline_robustness,
6262             pipeline_statistics_query: self.pipeline_statistics_query
6263                 || other.pipeline_statistics_query,
6264             point_polygons: self.point_polygons || other.point_polygons,
6265             present_barrier: self.present_barrier || other.present_barrier,
6266             present_id: self.present_id || other.present_id,
6267             present_wait: self.present_wait || other.present_wait,
6268             primitive_fragment_shading_rate: self.primitive_fragment_shading_rate
6269                 || other.primitive_fragment_shading_rate,
6270             primitive_fragment_shading_rate_mesh_shader: self
6271                 .primitive_fragment_shading_rate_mesh_shader
6272                 || other.primitive_fragment_shading_rate_mesh_shader,
6273             primitive_topology_list_restart: self.primitive_topology_list_restart
6274                 || other.primitive_topology_list_restart,
6275             primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart
6276                 || other.primitive_topology_patch_list_restart,
6277             primitives_generated_query: self.primitives_generated_query
6278                 || other.primitives_generated_query,
6279             primitives_generated_query_with_non_zero_streams: self
6280                 .primitives_generated_query_with_non_zero_streams
6281                 || other.primitives_generated_query_with_non_zero_streams,
6282             primitives_generated_query_with_rasterizer_discard: self
6283                 .primitives_generated_query_with_rasterizer_discard
6284                 || other.primitives_generated_query_with_rasterizer_discard,
6285             private_data: self.private_data || other.private_data,
6286             protected_memory: self.protected_memory || other.protected_memory,
6287             provoking_vertex_last: self.provoking_vertex_last || other.provoking_vertex_last,
6288             rasterization_order_color_attachment_access: self
6289                 .rasterization_order_color_attachment_access
6290                 || other.rasterization_order_color_attachment_access,
6291             rasterization_order_depth_attachment_access: self
6292                 .rasterization_order_depth_attachment_access
6293                 || other.rasterization_order_depth_attachment_access,
6294             rasterization_order_stencil_attachment_access: self
6295                 .rasterization_order_stencil_attachment_access
6296                 || other.rasterization_order_stencil_attachment_access,
6297             ray_query: self.ray_query || other.ray_query,
6298             ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder
6299                 || other.ray_tracing_invocation_reorder,
6300             ray_tracing_maintenance1: self.ray_tracing_maintenance1
6301                 || other.ray_tracing_maintenance1,
6302             ray_tracing_motion_blur: self.ray_tracing_motion_blur || other.ray_tracing_motion_blur,
6303             ray_tracing_motion_blur_pipeline_trace_rays_indirect: self
6304                 .ray_tracing_motion_blur_pipeline_trace_rays_indirect
6305                 || other.ray_tracing_motion_blur_pipeline_trace_rays_indirect,
6306             ray_tracing_pipeline: self.ray_tracing_pipeline || other.ray_tracing_pipeline,
6307             ray_tracing_pipeline_shader_group_handle_capture_replay: self
6308                 .ray_tracing_pipeline_shader_group_handle_capture_replay
6309                 || other.ray_tracing_pipeline_shader_group_handle_capture_replay,
6310             ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self
6311                 .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
6312                 || other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed,
6313             ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect
6314                 || other.ray_tracing_pipeline_trace_rays_indirect,
6315             ray_tracing_pipeline_trace_rays_indirect2: self
6316                 .ray_tracing_pipeline_trace_rays_indirect2
6317                 || other.ray_tracing_pipeline_trace_rays_indirect2,
6318             ray_traversal_primitive_culling: self.ray_traversal_primitive_culling
6319                 || other.ray_traversal_primitive_culling,
6320             rectangular_lines: self.rectangular_lines || other.rectangular_lines,
6321             report_address_binding: self.report_address_binding || other.report_address_binding,
6322             representative_fragment_test: self.representative_fragment_test
6323                 || other.representative_fragment_test,
6324             robust_buffer_access: self.robust_buffer_access || other.robust_buffer_access,
6325             robust_buffer_access2: self.robust_buffer_access2 || other.robust_buffer_access2,
6326             robust_image_access: self.robust_image_access || other.robust_image_access,
6327             robust_image_access2: self.robust_image_access2 || other.robust_image_access2,
6328             runtime_descriptor_array: self.runtime_descriptor_array
6329                 || other.runtime_descriptor_array,
6330             sample_rate_shading: self.sample_rate_shading || other.sample_rate_shading,
6331             sampler2_d_view_of3_d: self.sampler2_d_view_of3_d || other.sampler2_d_view_of3_d,
6332             sampler_anisotropy: self.sampler_anisotropy || other.sampler_anisotropy,
6333             sampler_filter_minmax: self.sampler_filter_minmax || other.sampler_filter_minmax,
6334             sampler_mip_lod_bias: self.sampler_mip_lod_bias || other.sampler_mip_lod_bias,
6335             sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge
6336                 || other.sampler_mirror_clamp_to_edge,
6337             sampler_ycbcr_conversion: self.sampler_ycbcr_conversion
6338                 || other.sampler_ycbcr_conversion,
6339             scalar_block_layout: self.scalar_block_layout || other.scalar_block_layout,
6340             separate_depth_stencil_layouts: self.separate_depth_stencil_layouts
6341                 || other.separate_depth_stencil_layouts,
6342             separate_stencil_mask_ref: self.separate_stencil_mask_ref
6343                 || other.separate_stencil_mask_ref,
6344             shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add
6345                 || other.shader_buffer_float16_atomic_add,
6346             shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max
6347                 || other.shader_buffer_float16_atomic_min_max,
6348             shader_buffer_float16_atomics: self.shader_buffer_float16_atomics
6349                 || other.shader_buffer_float16_atomics,
6350             shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add
6351                 || other.shader_buffer_float32_atomic_add,
6352             shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max
6353                 || other.shader_buffer_float32_atomic_min_max,
6354             shader_buffer_float32_atomics: self.shader_buffer_float32_atomics
6355                 || other.shader_buffer_float32_atomics,
6356             shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add
6357                 || other.shader_buffer_float64_atomic_add,
6358             shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max
6359                 || other.shader_buffer_float64_atomic_min_max,
6360             shader_buffer_float64_atomics: self.shader_buffer_float64_atomics
6361                 || other.shader_buffer_float64_atomics,
6362             shader_buffer_int64_atomics: self.shader_buffer_int64_atomics
6363                 || other.shader_buffer_int64_atomics,
6364             shader_clip_distance: self.shader_clip_distance || other.shader_clip_distance,
6365             shader_core_builtins: self.shader_core_builtins || other.shader_core_builtins,
6366             shader_cull_distance: self.shader_cull_distance || other.shader_cull_distance,
6367             shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation
6368                 || other.shader_demote_to_helper_invocation,
6369             shader_device_clock: self.shader_device_clock || other.shader_device_clock,
6370             shader_draw_parameters: self.shader_draw_parameters || other.shader_draw_parameters,
6371             shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests
6372                 || other.shader_early_and_late_fragment_tests,
6373             shader_float16: self.shader_float16 || other.shader_float16,
6374             shader_float64: self.shader_float64 || other.shader_float64,
6375             shader_image_float32_atomic_add: self.shader_image_float32_atomic_add
6376                 || other.shader_image_float32_atomic_add,
6377             shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max
6378                 || other.shader_image_float32_atomic_min_max,
6379             shader_image_float32_atomics: self.shader_image_float32_atomics
6380                 || other.shader_image_float32_atomics,
6381             shader_image_gather_extended: self.shader_image_gather_extended
6382                 || other.shader_image_gather_extended,
6383             shader_image_int64_atomics: self.shader_image_int64_atomics
6384                 || other.shader_image_int64_atomics,
6385             shader_input_attachment_array_dynamic_indexing: self
6386                 .shader_input_attachment_array_dynamic_indexing
6387                 || other.shader_input_attachment_array_dynamic_indexing,
6388             shader_input_attachment_array_non_uniform_indexing: self
6389                 .shader_input_attachment_array_non_uniform_indexing
6390                 || other.shader_input_attachment_array_non_uniform_indexing,
6391             shader_int16: self.shader_int16 || other.shader_int16,
6392             shader_int64: self.shader_int64 || other.shader_int64,
6393             shader_int8: self.shader_int8 || other.shader_int8,
6394             shader_integer_dot_product: self.shader_integer_dot_product
6395                 || other.shader_integer_dot_product,
6396             shader_integer_functions2: self.shader_integer_functions2
6397                 || other.shader_integer_functions2,
6398             shader_module_identifier: self.shader_module_identifier
6399                 || other.shader_module_identifier,
6400             shader_output_layer: self.shader_output_layer || other.shader_output_layer,
6401             shader_output_viewport_index: self.shader_output_viewport_index
6402                 || other.shader_output_viewport_index,
6403             shader_resource_min_lod: self.shader_resource_min_lod || other.shader_resource_min_lod,
6404             shader_resource_residency: self.shader_resource_residency
6405                 || other.shader_resource_residency,
6406             shader_sample_rate_interpolation_functions: self
6407                 .shader_sample_rate_interpolation_functions
6408                 || other.shader_sample_rate_interpolation_functions,
6409             shader_sampled_image_array_dynamic_indexing: self
6410                 .shader_sampled_image_array_dynamic_indexing
6411                 || other.shader_sampled_image_array_dynamic_indexing,
6412             shader_sampled_image_array_non_uniform_indexing: self
6413                 .shader_sampled_image_array_non_uniform_indexing
6414                 || other.shader_sampled_image_array_non_uniform_indexing,
6415             shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add
6416                 || other.shader_shared_float16_atomic_add,
6417             shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max
6418                 || other.shader_shared_float16_atomic_min_max,
6419             shader_shared_float16_atomics: self.shader_shared_float16_atomics
6420                 || other.shader_shared_float16_atomics,
6421             shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add
6422                 || other.shader_shared_float32_atomic_add,
6423             shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max
6424                 || other.shader_shared_float32_atomic_min_max,
6425             shader_shared_float32_atomics: self.shader_shared_float32_atomics
6426                 || other.shader_shared_float32_atomics,
6427             shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add
6428                 || other.shader_shared_float64_atomic_add,
6429             shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max
6430                 || other.shader_shared_float64_atomic_min_max,
6431             shader_shared_float64_atomics: self.shader_shared_float64_atomics
6432                 || other.shader_shared_float64_atomics,
6433             shader_shared_int64_atomics: self.shader_shared_int64_atomics
6434                 || other.shader_shared_int64_atomics,
6435             shader_sm_builtins: self.shader_sm_builtins || other.shader_sm_builtins,
6436             shader_storage_buffer_array_dynamic_indexing: self
6437                 .shader_storage_buffer_array_dynamic_indexing
6438                 || other.shader_storage_buffer_array_dynamic_indexing,
6439             shader_storage_buffer_array_non_uniform_indexing: self
6440                 .shader_storage_buffer_array_non_uniform_indexing
6441                 || other.shader_storage_buffer_array_non_uniform_indexing,
6442             shader_storage_image_array_dynamic_indexing: self
6443                 .shader_storage_image_array_dynamic_indexing
6444                 || other.shader_storage_image_array_dynamic_indexing,
6445             shader_storage_image_array_non_uniform_indexing: self
6446                 .shader_storage_image_array_non_uniform_indexing
6447                 || other.shader_storage_image_array_non_uniform_indexing,
6448             shader_storage_image_extended_formats: self.shader_storage_image_extended_formats
6449                 || other.shader_storage_image_extended_formats,
6450             shader_storage_image_multisample: self.shader_storage_image_multisample
6451                 || other.shader_storage_image_multisample,
6452             shader_storage_image_read_without_format: self.shader_storage_image_read_without_format
6453                 || other.shader_storage_image_read_without_format,
6454             shader_storage_image_write_without_format: self
6455                 .shader_storage_image_write_without_format
6456                 || other.shader_storage_image_write_without_format,
6457             shader_storage_texel_buffer_array_dynamic_indexing: self
6458                 .shader_storage_texel_buffer_array_dynamic_indexing
6459                 || other.shader_storage_texel_buffer_array_dynamic_indexing,
6460             shader_storage_texel_buffer_array_non_uniform_indexing: self
6461                 .shader_storage_texel_buffer_array_non_uniform_indexing
6462                 || other.shader_storage_texel_buffer_array_non_uniform_indexing,
6463             shader_subgroup_clock: self.shader_subgroup_clock || other.shader_subgroup_clock,
6464             shader_subgroup_extended_types: self.shader_subgroup_extended_types
6465                 || other.shader_subgroup_extended_types,
6466             shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow
6467                 || other.shader_subgroup_uniform_control_flow,
6468             shader_terminate_invocation: self.shader_terminate_invocation
6469                 || other.shader_terminate_invocation,
6470             shader_tessellation_and_geometry_point_size: self
6471                 .shader_tessellation_and_geometry_point_size
6472                 || other.shader_tessellation_and_geometry_point_size,
6473             shader_uniform_buffer_array_dynamic_indexing: self
6474                 .shader_uniform_buffer_array_dynamic_indexing
6475                 || other.shader_uniform_buffer_array_dynamic_indexing,
6476             shader_uniform_buffer_array_non_uniform_indexing: self
6477                 .shader_uniform_buffer_array_non_uniform_indexing
6478                 || other.shader_uniform_buffer_array_non_uniform_indexing,
6479             shader_uniform_texel_buffer_array_dynamic_indexing: self
6480                 .shader_uniform_texel_buffer_array_dynamic_indexing
6481                 || other.shader_uniform_texel_buffer_array_dynamic_indexing,
6482             shader_uniform_texel_buffer_array_non_uniform_indexing: self
6483                 .shader_uniform_texel_buffer_array_non_uniform_indexing
6484                 || other.shader_uniform_texel_buffer_array_non_uniform_indexing,
6485             shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory
6486                 || other.shader_zero_initialize_workgroup_memory,
6487             shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order
6488                 || other.shading_rate_coarse_sample_order,
6489             shading_rate_image: self.shading_rate_image || other.shading_rate_image,
6490             smooth_lines: self.smooth_lines || other.smooth_lines,
6491             sparse_binding: self.sparse_binding || other.sparse_binding,
6492             sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add
6493                 || other.sparse_image_float32_atomic_add,
6494             sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max
6495                 || other.sparse_image_float32_atomic_min_max,
6496             sparse_image_float32_atomics: self.sparse_image_float32_atomics
6497                 || other.sparse_image_float32_atomics,
6498             sparse_image_int64_atomics: self.sparse_image_int64_atomics
6499                 || other.sparse_image_int64_atomics,
6500             sparse_residency16_samples: self.sparse_residency16_samples
6501                 || other.sparse_residency16_samples,
6502             sparse_residency2_samples: self.sparse_residency2_samples
6503                 || other.sparse_residency2_samples,
6504             sparse_residency4_samples: self.sparse_residency4_samples
6505                 || other.sparse_residency4_samples,
6506             sparse_residency8_samples: self.sparse_residency8_samples
6507                 || other.sparse_residency8_samples,
6508             sparse_residency_aliased: self.sparse_residency_aliased
6509                 || other.sparse_residency_aliased,
6510             sparse_residency_buffer: self.sparse_residency_buffer || other.sparse_residency_buffer,
6511             sparse_residency_image2_d: self.sparse_residency_image2_d
6512                 || other.sparse_residency_image2_d,
6513             sparse_residency_image3_d: self.sparse_residency_image3_d
6514                 || other.sparse_residency_image3_d,
6515             stippled_bresenham_lines: self.stippled_bresenham_lines
6516                 || other.stippled_bresenham_lines,
6517             stippled_rectangular_lines: self.stippled_rectangular_lines
6518                 || other.stippled_rectangular_lines,
6519             stippled_smooth_lines: self.stippled_smooth_lines || other.stippled_smooth_lines,
6520             storage_buffer16_bit_access: self.storage_buffer16_bit_access
6521                 || other.storage_buffer16_bit_access,
6522             storage_buffer8_bit_access: self.storage_buffer8_bit_access
6523                 || other.storage_buffer8_bit_access,
6524             storage_input_output16: self.storage_input_output16 || other.storage_input_output16,
6525             storage_push_constant16: self.storage_push_constant16 || other.storage_push_constant16,
6526             storage_push_constant8: self.storage_push_constant8 || other.storage_push_constant8,
6527             subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id
6528                 || other.subgroup_broadcast_dynamic_id,
6529             subgroup_size_control: self.subgroup_size_control || other.subgroup_size_control,
6530             subpass_merge_feedback: self.subpass_merge_feedback || other.subpass_merge_feedback,
6531             subpass_shading: self.subpass_shading || other.subpass_shading,
6532             supersample_fragment_shading_rates: self.supersample_fragment_shading_rates
6533                 || other.supersample_fragment_shading_rates,
6534             swapchain_maintenance1: self.swapchain_maintenance1 || other.swapchain_maintenance1,
6535             synchronization2: self.synchronization2 || other.synchronization2,
6536             task_shader: self.task_shader || other.task_shader,
6537             tessellation_isolines: self.tessellation_isolines || other.tessellation_isolines,
6538             tessellation_point_mode: self.tessellation_point_mode || other.tessellation_point_mode,
6539             tessellation_shader: self.tessellation_shader || other.tessellation_shader,
6540             texel_buffer_alignment: self.texel_buffer_alignment || other.texel_buffer_alignment,
6541             texture_block_match: self.texture_block_match || other.texture_block_match,
6542             texture_box_filter: self.texture_box_filter || other.texture_box_filter,
6543             texture_compression_astc_hdr: self.texture_compression_astc_hdr
6544                 || other.texture_compression_astc_hdr,
6545             texture_compression_astc_ldr: self.texture_compression_astc_ldr
6546                 || other.texture_compression_astc_ldr,
6547             texture_compression_bc: self.texture_compression_bc || other.texture_compression_bc,
6548             texture_compression_etc2: self.texture_compression_etc2
6549                 || other.texture_compression_etc2,
6550             texture_sample_weighted: self.texture_sample_weighted || other.texture_sample_weighted,
6551             tile_properties: self.tile_properties || other.tile_properties,
6552             timeline_semaphore: self.timeline_semaphore || other.timeline_semaphore,
6553             transform_feedback: self.transform_feedback || other.transform_feedback,
6554             transform_feedback_preserves_provoking_vertex: self
6555                 .transform_feedback_preserves_provoking_vertex
6556                 || other.transform_feedback_preserves_provoking_vertex,
6557             triangle_fans: self.triangle_fans || other.triangle_fans,
6558             uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access
6559                 || other.uniform_and_storage_buffer16_bit_access,
6560             uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access
6561                 || other.uniform_and_storage_buffer8_bit_access,
6562             uniform_buffer_standard_layout: self.uniform_buffer_standard_layout
6563                 || other.uniform_buffer_standard_layout,
6564             variable_multisample_rate: self.variable_multisample_rate
6565                 || other.variable_multisample_rate,
6566             variable_pointers: self.variable_pointers || other.variable_pointers,
6567             variable_pointers_storage_buffer: self.variable_pointers_storage_buffer
6568                 || other.variable_pointers_storage_buffer,
6569             vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride
6570                 || other.vertex_attribute_access_beyond_stride,
6571             vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor
6572                 || other.vertex_attribute_instance_rate_divisor,
6573             vertex_attribute_instance_rate_zero_divisor: self
6574                 .vertex_attribute_instance_rate_zero_divisor
6575                 || other.vertex_attribute_instance_rate_zero_divisor,
6576             vertex_input_dynamic_state: self.vertex_input_dynamic_state
6577                 || other.vertex_input_dynamic_state,
6578             vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics
6579                 || other.vertex_pipeline_stores_and_atomics,
6580             vulkan_memory_model: self.vulkan_memory_model || other.vulkan_memory_model,
6581             vulkan_memory_model_availability_visibility_chains: self
6582                 .vulkan_memory_model_availability_visibility_chains
6583                 || other.vulkan_memory_model_availability_visibility_chains,
6584             vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope
6585                 || other.vulkan_memory_model_device_scope,
6586             wide_lines: self.wide_lines || other.wide_lines,
6587             workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout
6588                 || other.workgroup_memory_explicit_layout,
6589             workgroup_memory_explicit_layout16_bit_access: self
6590                 .workgroup_memory_explicit_layout16_bit_access
6591                 || other.workgroup_memory_explicit_layout16_bit_access,
6592             workgroup_memory_explicit_layout8_bit_access: self
6593                 .workgroup_memory_explicit_layout8_bit_access
6594                 || other.workgroup_memory_explicit_layout8_bit_access,
6595             workgroup_memory_explicit_layout_scalar_block_layout: self
6596                 .workgroup_memory_explicit_layout_scalar_block_layout
6597                 || other.workgroup_memory_explicit_layout_scalar_block_layout,
6598             ycbcr2plane444_formats: self.ycbcr2plane444_formats || other.ycbcr2plane444_formats,
6599             ycbcr_image_arrays: self.ycbcr_image_arrays || other.ycbcr_image_arrays,
6600             _ne: crate::NonExhaustive(()),
6601         }
6602     }
6603     #[doc = r" Returns the intersection of `self` and `other`."]
6604     #[inline]
intersection(&self, other: &Self) -> Self6605     pub const fn intersection(&self, other: &Self) -> Self {
6606         Self {
6607             acceleration_structure: self.acceleration_structure && other.acceleration_structure,
6608             acceleration_structure_capture_replay: self.acceleration_structure_capture_replay
6609                 && other.acceleration_structure_capture_replay,
6610             acceleration_structure_host_commands: self.acceleration_structure_host_commands
6611                 && other.acceleration_structure_host_commands,
6612             acceleration_structure_indirect_build: self.acceleration_structure_indirect_build
6613                 && other.acceleration_structure_indirect_build,
6614             advanced_blend_coherent_operations: self.advanced_blend_coherent_operations
6615                 && other.advanced_blend_coherent_operations,
6616             alpha_to_one: self.alpha_to_one && other.alpha_to_one,
6617             amigo_profiling: self.amigo_profiling && other.amigo_profiling,
6618             attachment_feedback_loop_layout: self.attachment_feedback_loop_layout
6619                 && other.attachment_feedback_loop_layout,
6620             attachment_fragment_shading_rate: self.attachment_fragment_shading_rate
6621                 && other.attachment_fragment_shading_rate,
6622             border_color_swizzle: self.border_color_swizzle && other.border_color_swizzle,
6623             border_color_swizzle_from_image: self.border_color_swizzle_from_image
6624                 && other.border_color_swizzle_from_image,
6625             bresenham_lines: self.bresenham_lines && other.bresenham_lines,
6626             buffer_device_address: self.buffer_device_address && other.buffer_device_address,
6627             buffer_device_address_capture_replay: self.buffer_device_address_capture_replay
6628                 && other.buffer_device_address_capture_replay,
6629             buffer_device_address_multi_device: self.buffer_device_address_multi_device
6630                 && other.buffer_device_address_multi_device,
6631             color_write_enable: self.color_write_enable && other.color_write_enable,
6632             compute_derivative_group_linear: self.compute_derivative_group_linear
6633                 && other.compute_derivative_group_linear,
6634             compute_derivative_group_quads: self.compute_derivative_group_quads
6635                 && other.compute_derivative_group_quads,
6636             compute_full_subgroups: self.compute_full_subgroups && other.compute_full_subgroups,
6637             conditional_rendering: self.conditional_rendering && other.conditional_rendering,
6638             constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors
6639                 && other.constant_alpha_color_blend_factors,
6640             cooperative_matrix: self.cooperative_matrix && other.cooperative_matrix,
6641             cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access
6642                 && other.cooperative_matrix_robust_buffer_access,
6643             corner_sampled_image: self.corner_sampled_image && other.corner_sampled_image,
6644             coverage_reduction_mode: self.coverage_reduction_mode && other.coverage_reduction_mode,
6645             custom_border_color_without_format: self.custom_border_color_without_format
6646                 && other.custom_border_color_without_format,
6647             custom_border_colors: self.custom_border_colors && other.custom_border_colors,
6648             decode_mode_shared_exponent: self.decode_mode_shared_exponent
6649                 && other.decode_mode_shared_exponent,
6650             dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing
6651                 && other.dedicated_allocation_image_aliasing,
6652             depth_bias_clamp: self.depth_bias_clamp && other.depth_bias_clamp,
6653             depth_bounds: self.depth_bounds && other.depth_bounds,
6654             depth_clamp: self.depth_clamp && other.depth_clamp,
6655             depth_clamp_zero_one: self.depth_clamp_zero_one && other.depth_clamp_zero_one,
6656             depth_clip_control: self.depth_clip_control && other.depth_clip_control,
6657             depth_clip_enable: self.depth_clip_enable && other.depth_clip_enable,
6658             descriptor_binding_acceleration_structure_update_after_bind: self
6659                 .descriptor_binding_acceleration_structure_update_after_bind
6660                 && other.descriptor_binding_acceleration_structure_update_after_bind,
6661             descriptor_binding_inline_uniform_block_update_after_bind: self
6662                 .descriptor_binding_inline_uniform_block_update_after_bind
6663                 && other.descriptor_binding_inline_uniform_block_update_after_bind,
6664             descriptor_binding_partially_bound: self.descriptor_binding_partially_bound
6665                 && other.descriptor_binding_partially_bound,
6666             descriptor_binding_sampled_image_update_after_bind: self
6667                 .descriptor_binding_sampled_image_update_after_bind
6668                 && other.descriptor_binding_sampled_image_update_after_bind,
6669             descriptor_binding_storage_buffer_update_after_bind: self
6670                 .descriptor_binding_storage_buffer_update_after_bind
6671                 && other.descriptor_binding_storage_buffer_update_after_bind,
6672             descriptor_binding_storage_image_update_after_bind: self
6673                 .descriptor_binding_storage_image_update_after_bind
6674                 && other.descriptor_binding_storage_image_update_after_bind,
6675             descriptor_binding_storage_texel_buffer_update_after_bind: self
6676                 .descriptor_binding_storage_texel_buffer_update_after_bind
6677                 && other.descriptor_binding_storage_texel_buffer_update_after_bind,
6678             descriptor_binding_uniform_buffer_update_after_bind: self
6679                 .descriptor_binding_uniform_buffer_update_after_bind
6680                 && other.descriptor_binding_uniform_buffer_update_after_bind,
6681             descriptor_binding_uniform_texel_buffer_update_after_bind: self
6682                 .descriptor_binding_uniform_texel_buffer_update_after_bind
6683                 && other.descriptor_binding_uniform_texel_buffer_update_after_bind,
6684             descriptor_binding_update_unused_while_pending: self
6685                 .descriptor_binding_update_unused_while_pending
6686                 && other.descriptor_binding_update_unused_while_pending,
6687             descriptor_binding_variable_descriptor_count: self
6688                 .descriptor_binding_variable_descriptor_count
6689                 && other.descriptor_binding_variable_descriptor_count,
6690             descriptor_buffer: self.descriptor_buffer && other.descriptor_buffer,
6691             descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay
6692                 && other.descriptor_buffer_capture_replay,
6693             descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored
6694                 && other.descriptor_buffer_image_layout_ignored,
6695             descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors
6696                 && other.descriptor_buffer_push_descriptors,
6697             descriptor_indexing: self.descriptor_indexing && other.descriptor_indexing,
6698             descriptor_set_host_mapping: self.descriptor_set_host_mapping
6699                 && other.descriptor_set_host_mapping,
6700             device_coherent_memory: self.device_coherent_memory && other.device_coherent_memory,
6701             device_fault: self.device_fault && other.device_fault,
6702             device_fault_vendor_binary: self.device_fault_vendor_binary
6703                 && other.device_fault_vendor_binary,
6704             device_generated_commands: self.device_generated_commands
6705                 && other.device_generated_commands,
6706             device_memory_report: self.device_memory_report && other.device_memory_report,
6707             diagnostics_config: self.diagnostics_config && other.diagnostics_config,
6708             draw_indirect_count: self.draw_indirect_count && other.draw_indirect_count,
6709             draw_indirect_first_instance: self.draw_indirect_first_instance
6710                 && other.draw_indirect_first_instance,
6711             dual_src_blend: self.dual_src_blend && other.dual_src_blend,
6712             dynamic_rendering: self.dynamic_rendering && other.dynamic_rendering,
6713             events: self.events && other.events,
6714             exclusive_scissor: self.exclusive_scissor && other.exclusive_scissor,
6715             extended_dynamic_state: self.extended_dynamic_state && other.extended_dynamic_state,
6716             extended_dynamic_state2: self.extended_dynamic_state2 && other.extended_dynamic_state2,
6717             extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op
6718                 && other.extended_dynamic_state2_logic_op,
6719             extended_dynamic_state2_patch_control_points: self
6720                 .extended_dynamic_state2_patch_control_points
6721                 && other.extended_dynamic_state2_patch_control_points,
6722             extended_dynamic_state3_alpha_to_coverage_enable: self
6723                 .extended_dynamic_state3_alpha_to_coverage_enable
6724                 && other.extended_dynamic_state3_alpha_to_coverage_enable,
6725             extended_dynamic_state3_alpha_to_one_enable: self
6726                 .extended_dynamic_state3_alpha_to_one_enable
6727                 && other.extended_dynamic_state3_alpha_to_one_enable,
6728             extended_dynamic_state3_color_blend_advanced: self
6729                 .extended_dynamic_state3_color_blend_advanced
6730                 && other.extended_dynamic_state3_color_blend_advanced,
6731             extended_dynamic_state3_color_blend_enable: self
6732                 .extended_dynamic_state3_color_blend_enable
6733                 && other.extended_dynamic_state3_color_blend_enable,
6734             extended_dynamic_state3_color_blend_equation: self
6735                 .extended_dynamic_state3_color_blend_equation
6736                 && other.extended_dynamic_state3_color_blend_equation,
6737             extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask
6738                 && other.extended_dynamic_state3_color_write_mask,
6739             extended_dynamic_state3_conservative_rasterization_mode: self
6740                 .extended_dynamic_state3_conservative_rasterization_mode
6741                 && other.extended_dynamic_state3_conservative_rasterization_mode,
6742             extended_dynamic_state3_coverage_modulation_mode: self
6743                 .extended_dynamic_state3_coverage_modulation_mode
6744                 && other.extended_dynamic_state3_coverage_modulation_mode,
6745             extended_dynamic_state3_coverage_modulation_table: self
6746                 .extended_dynamic_state3_coverage_modulation_table
6747                 && other.extended_dynamic_state3_coverage_modulation_table,
6748             extended_dynamic_state3_coverage_modulation_table_enable: self
6749                 .extended_dynamic_state3_coverage_modulation_table_enable
6750                 && other.extended_dynamic_state3_coverage_modulation_table_enable,
6751             extended_dynamic_state3_coverage_reduction_mode: self
6752                 .extended_dynamic_state3_coverage_reduction_mode
6753                 && other.extended_dynamic_state3_coverage_reduction_mode,
6754             extended_dynamic_state3_coverage_to_color_enable: self
6755                 .extended_dynamic_state3_coverage_to_color_enable
6756                 && other.extended_dynamic_state3_coverage_to_color_enable,
6757             extended_dynamic_state3_coverage_to_color_location: self
6758                 .extended_dynamic_state3_coverage_to_color_location
6759                 && other.extended_dynamic_state3_coverage_to_color_location,
6760             extended_dynamic_state3_depth_clamp_enable: self
6761                 .extended_dynamic_state3_depth_clamp_enable
6762                 && other.extended_dynamic_state3_depth_clamp_enable,
6763             extended_dynamic_state3_depth_clip_enable: self
6764                 .extended_dynamic_state3_depth_clip_enable
6765                 && other.extended_dynamic_state3_depth_clip_enable,
6766             extended_dynamic_state3_depth_clip_negative_one_to_one: self
6767                 .extended_dynamic_state3_depth_clip_negative_one_to_one
6768                 && other.extended_dynamic_state3_depth_clip_negative_one_to_one,
6769             extended_dynamic_state3_extra_primitive_overestimation_size: self
6770                 .extended_dynamic_state3_extra_primitive_overestimation_size
6771                 && other.extended_dynamic_state3_extra_primitive_overestimation_size,
6772             extended_dynamic_state3_line_rasterization_mode: self
6773                 .extended_dynamic_state3_line_rasterization_mode
6774                 && other.extended_dynamic_state3_line_rasterization_mode,
6775             extended_dynamic_state3_line_stipple_enable: self
6776                 .extended_dynamic_state3_line_stipple_enable
6777                 && other.extended_dynamic_state3_line_stipple_enable,
6778             extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable
6779                 && other.extended_dynamic_state3_logic_op_enable,
6780             extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode
6781                 && other.extended_dynamic_state3_polygon_mode,
6782             extended_dynamic_state3_provoking_vertex_mode: self
6783                 .extended_dynamic_state3_provoking_vertex_mode
6784                 && other.extended_dynamic_state3_provoking_vertex_mode,
6785             extended_dynamic_state3_rasterization_samples: self
6786                 .extended_dynamic_state3_rasterization_samples
6787                 && other.extended_dynamic_state3_rasterization_samples,
6788             extended_dynamic_state3_rasterization_stream: self
6789                 .extended_dynamic_state3_rasterization_stream
6790                 && other.extended_dynamic_state3_rasterization_stream,
6791             extended_dynamic_state3_representative_fragment_test_enable: self
6792                 .extended_dynamic_state3_representative_fragment_test_enable
6793                 && other.extended_dynamic_state3_representative_fragment_test_enable,
6794             extended_dynamic_state3_sample_locations_enable: self
6795                 .extended_dynamic_state3_sample_locations_enable
6796                 && other.extended_dynamic_state3_sample_locations_enable,
6797             extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask
6798                 && other.extended_dynamic_state3_sample_mask,
6799             extended_dynamic_state3_shading_rate_image_enable: self
6800                 .extended_dynamic_state3_shading_rate_image_enable
6801                 && other.extended_dynamic_state3_shading_rate_image_enable,
6802             extended_dynamic_state3_tessellation_domain_origin: self
6803                 .extended_dynamic_state3_tessellation_domain_origin
6804                 && other.extended_dynamic_state3_tessellation_domain_origin,
6805             extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle
6806                 && other.extended_dynamic_state3_viewport_swizzle,
6807             extended_dynamic_state3_viewport_w_scaling_enable: self
6808                 .extended_dynamic_state3_viewport_w_scaling_enable
6809                 && other.extended_dynamic_state3_viewport_w_scaling_enable,
6810             external_memory_rdma: self.external_memory_rdma && other.external_memory_rdma,
6811             fill_mode_non_solid: self.fill_mode_non_solid && other.fill_mode_non_solid,
6812             format_a4b4g4r4: self.format_a4b4g4r4 && other.format_a4b4g4r4,
6813             format_a4r4g4b4: self.format_a4r4g4b4 && other.format_a4r4g4b4,
6814             format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler
6815                 && other.format_rgba10x6_without_y_cb_cr_sampler,
6816             fragment_density_map: self.fragment_density_map && other.fragment_density_map,
6817             fragment_density_map_deferred: self.fragment_density_map_deferred
6818                 && other.fragment_density_map_deferred,
6819             fragment_density_map_dynamic: self.fragment_density_map_dynamic
6820                 && other.fragment_density_map_dynamic,
6821             fragment_density_map_non_subsampled_images: self
6822                 .fragment_density_map_non_subsampled_images
6823                 && other.fragment_density_map_non_subsampled_images,
6824             fragment_density_map_offset: self.fragment_density_map_offset
6825                 && other.fragment_density_map_offset,
6826             fragment_shader_barycentric: self.fragment_shader_barycentric
6827                 && other.fragment_shader_barycentric,
6828             fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock
6829                 && other.fragment_shader_pixel_interlock,
6830             fragment_shader_sample_interlock: self.fragment_shader_sample_interlock
6831                 && other.fragment_shader_sample_interlock,
6832             fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock
6833                 && other.fragment_shader_shading_rate_interlock,
6834             fragment_shading_rate_enums: self.fragment_shading_rate_enums
6835                 && other.fragment_shading_rate_enums,
6836             fragment_stores_and_atomics: self.fragment_stores_and_atomics
6837                 && other.fragment_stores_and_atomics,
6838             full_draw_index_uint32: self.full_draw_index_uint32 && other.full_draw_index_uint32,
6839             geometry_shader: self.geometry_shader && other.geometry_shader,
6840             geometry_streams: self.geometry_streams && other.geometry_streams,
6841             global_priority_query: self.global_priority_query && other.global_priority_query,
6842             graphics_pipeline_library: self.graphics_pipeline_library
6843                 && other.graphics_pipeline_library,
6844             host_query_reset: self.host_query_reset && other.host_query_reset,
6845             image2_d_view_of3_d: self.image2_d_view_of3_d && other.image2_d_view_of3_d,
6846             image_compression_control: self.image_compression_control
6847                 && other.image_compression_control,
6848             image_compression_control_swapchain: self.image_compression_control_swapchain
6849                 && other.image_compression_control_swapchain,
6850             image_cube_array: self.image_cube_array && other.image_cube_array,
6851             image_footprint: self.image_footprint && other.image_footprint,
6852             image_view2_d_on3_d_image: self.image_view2_d_on3_d_image
6853                 && other.image_view2_d_on3_d_image,
6854             image_view_format_reinterpretation: self.image_view_format_reinterpretation
6855                 && other.image_view_format_reinterpretation,
6856             image_view_format_swizzle: self.image_view_format_swizzle
6857                 && other.image_view_format_swizzle,
6858             imageless_framebuffer: self.imageless_framebuffer && other.imageless_framebuffer,
6859             independent_blend: self.independent_blend && other.independent_blend,
6860             index_type_uint8: self.index_type_uint8 && other.index_type_uint8,
6861             indirect_copy: self.indirect_copy && other.indirect_copy,
6862             inherited_conditional_rendering: self.inherited_conditional_rendering
6863                 && other.inherited_conditional_rendering,
6864             inherited_queries: self.inherited_queries && other.inherited_queries,
6865             inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d
6866                 && other.inherited_viewport_scissor2_d,
6867             inline_uniform_block: self.inline_uniform_block && other.inline_uniform_block,
6868             invocation_mask: self.invocation_mask && other.invocation_mask,
6869             large_points: self.large_points && other.large_points,
6870             legacy_dithering: self.legacy_dithering && other.legacy_dithering,
6871             linear_color_attachment: self.linear_color_attachment && other.linear_color_attachment,
6872             logic_op: self.logic_op && other.logic_op,
6873             maintenance4: self.maintenance4 && other.maintenance4,
6874             memory_decompression: self.memory_decompression && other.memory_decompression,
6875             memory_priority: self.memory_priority && other.memory_priority,
6876             mesh_shader: self.mesh_shader && other.mesh_shader,
6877             mesh_shader_queries: self.mesh_shader_queries && other.mesh_shader_queries,
6878             micromap: self.micromap && other.micromap,
6879             micromap_capture_replay: self.micromap_capture_replay && other.micromap_capture_replay,
6880             micromap_host_commands: self.micromap_host_commands && other.micromap_host_commands,
6881             min_lod: self.min_lod && other.min_lod,
6882             multi_draw: self.multi_draw && other.multi_draw,
6883             multi_draw_indirect: self.multi_draw_indirect && other.multi_draw_indirect,
6884             multi_viewport: self.multi_viewport && other.multi_viewport,
6885             multisample_array_image: self.multisample_array_image && other.multisample_array_image,
6886             multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled
6887                 && other.multisampled_render_to_single_sampled,
6888             multiview: self.multiview && other.multiview,
6889             multiview_geometry_shader: self.multiview_geometry_shader
6890                 && other.multiview_geometry_shader,
6891             multiview_mesh_shader: self.multiview_mesh_shader && other.multiview_mesh_shader,
6892             multiview_per_view_viewports: self.multiview_per_view_viewports
6893                 && other.multiview_per_view_viewports,
6894             multiview_tessellation_shader: self.multiview_tessellation_shader
6895                 && other.multiview_tessellation_shader,
6896             mutable_comparison_samplers: self.mutable_comparison_samplers
6897                 && other.mutable_comparison_samplers,
6898             mutable_descriptor_type: self.mutable_descriptor_type && other.mutable_descriptor_type,
6899             no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates
6900                 && other.no_invocation_fragment_shading_rates,
6901             non_seamless_cube_map: self.non_seamless_cube_map && other.non_seamless_cube_map,
6902             null_descriptor: self.null_descriptor && other.null_descriptor,
6903             occlusion_query_precise: self.occlusion_query_precise && other.occlusion_query_precise,
6904             optical_flow: self.optical_flow && other.optical_flow,
6905             pageable_device_local_memory: self.pageable_device_local_memory
6906                 && other.pageable_device_local_memory,
6907             performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools
6908                 && other.performance_counter_multiple_query_pools,
6909             performance_counter_query_pools: self.performance_counter_query_pools
6910                 && other.performance_counter_query_pools,
6911             pipeline_creation_cache_control: self.pipeline_creation_cache_control
6912                 && other.pipeline_creation_cache_control,
6913             pipeline_executable_info: self.pipeline_executable_info
6914                 && other.pipeline_executable_info,
6915             pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate
6916                 && other.pipeline_fragment_shading_rate,
6917             pipeline_properties_identifier: self.pipeline_properties_identifier
6918                 && other.pipeline_properties_identifier,
6919             pipeline_protected_access: self.pipeline_protected_access
6920                 && other.pipeline_protected_access,
6921             pipeline_robustness: self.pipeline_robustness && other.pipeline_robustness,
6922             pipeline_statistics_query: self.pipeline_statistics_query
6923                 && other.pipeline_statistics_query,
6924             point_polygons: self.point_polygons && other.point_polygons,
6925             present_barrier: self.present_barrier && other.present_barrier,
6926             present_id: self.present_id && other.present_id,
6927             present_wait: self.present_wait && other.present_wait,
6928             primitive_fragment_shading_rate: self.primitive_fragment_shading_rate
6929                 && other.primitive_fragment_shading_rate,
6930             primitive_fragment_shading_rate_mesh_shader: self
6931                 .primitive_fragment_shading_rate_mesh_shader
6932                 && other.primitive_fragment_shading_rate_mesh_shader,
6933             primitive_topology_list_restart: self.primitive_topology_list_restart
6934                 && other.primitive_topology_list_restart,
6935             primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart
6936                 && other.primitive_topology_patch_list_restart,
6937             primitives_generated_query: self.primitives_generated_query
6938                 && other.primitives_generated_query,
6939             primitives_generated_query_with_non_zero_streams: self
6940                 .primitives_generated_query_with_non_zero_streams
6941                 && other.primitives_generated_query_with_non_zero_streams,
6942             primitives_generated_query_with_rasterizer_discard: self
6943                 .primitives_generated_query_with_rasterizer_discard
6944                 && other.primitives_generated_query_with_rasterizer_discard,
6945             private_data: self.private_data && other.private_data,
6946             protected_memory: self.protected_memory && other.protected_memory,
6947             provoking_vertex_last: self.provoking_vertex_last && other.provoking_vertex_last,
6948             rasterization_order_color_attachment_access: self
6949                 .rasterization_order_color_attachment_access
6950                 && other.rasterization_order_color_attachment_access,
6951             rasterization_order_depth_attachment_access: self
6952                 .rasterization_order_depth_attachment_access
6953                 && other.rasterization_order_depth_attachment_access,
6954             rasterization_order_stencil_attachment_access: self
6955                 .rasterization_order_stencil_attachment_access
6956                 && other.rasterization_order_stencil_attachment_access,
6957             ray_query: self.ray_query && other.ray_query,
6958             ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder
6959                 && other.ray_tracing_invocation_reorder,
6960             ray_tracing_maintenance1: self.ray_tracing_maintenance1
6961                 && other.ray_tracing_maintenance1,
6962             ray_tracing_motion_blur: self.ray_tracing_motion_blur && other.ray_tracing_motion_blur,
6963             ray_tracing_motion_blur_pipeline_trace_rays_indirect: self
6964                 .ray_tracing_motion_blur_pipeline_trace_rays_indirect
6965                 && other.ray_tracing_motion_blur_pipeline_trace_rays_indirect,
6966             ray_tracing_pipeline: self.ray_tracing_pipeline && other.ray_tracing_pipeline,
6967             ray_tracing_pipeline_shader_group_handle_capture_replay: self
6968                 .ray_tracing_pipeline_shader_group_handle_capture_replay
6969                 && other.ray_tracing_pipeline_shader_group_handle_capture_replay,
6970             ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self
6971                 .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
6972                 && other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed,
6973             ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect
6974                 && other.ray_tracing_pipeline_trace_rays_indirect,
6975             ray_tracing_pipeline_trace_rays_indirect2: self
6976                 .ray_tracing_pipeline_trace_rays_indirect2
6977                 && other.ray_tracing_pipeline_trace_rays_indirect2,
6978             ray_traversal_primitive_culling: self.ray_traversal_primitive_culling
6979                 && other.ray_traversal_primitive_culling,
6980             rectangular_lines: self.rectangular_lines && other.rectangular_lines,
6981             report_address_binding: self.report_address_binding && other.report_address_binding,
6982             representative_fragment_test: self.representative_fragment_test
6983                 && other.representative_fragment_test,
6984             robust_buffer_access: self.robust_buffer_access && other.robust_buffer_access,
6985             robust_buffer_access2: self.robust_buffer_access2 && other.robust_buffer_access2,
6986             robust_image_access: self.robust_image_access && other.robust_image_access,
6987             robust_image_access2: self.robust_image_access2 && other.robust_image_access2,
6988             runtime_descriptor_array: self.runtime_descriptor_array
6989                 && other.runtime_descriptor_array,
6990             sample_rate_shading: self.sample_rate_shading && other.sample_rate_shading,
6991             sampler2_d_view_of3_d: self.sampler2_d_view_of3_d && other.sampler2_d_view_of3_d,
6992             sampler_anisotropy: self.sampler_anisotropy && other.sampler_anisotropy,
6993             sampler_filter_minmax: self.sampler_filter_minmax && other.sampler_filter_minmax,
6994             sampler_mip_lod_bias: self.sampler_mip_lod_bias && other.sampler_mip_lod_bias,
6995             sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge
6996                 && other.sampler_mirror_clamp_to_edge,
6997             sampler_ycbcr_conversion: self.sampler_ycbcr_conversion
6998                 && other.sampler_ycbcr_conversion,
6999             scalar_block_layout: self.scalar_block_layout && other.scalar_block_layout,
7000             separate_depth_stencil_layouts: self.separate_depth_stencil_layouts
7001                 && other.separate_depth_stencil_layouts,
7002             separate_stencil_mask_ref: self.separate_stencil_mask_ref
7003                 && other.separate_stencil_mask_ref,
7004             shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add
7005                 && other.shader_buffer_float16_atomic_add,
7006             shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max
7007                 && other.shader_buffer_float16_atomic_min_max,
7008             shader_buffer_float16_atomics: self.shader_buffer_float16_atomics
7009                 && other.shader_buffer_float16_atomics,
7010             shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add
7011                 && other.shader_buffer_float32_atomic_add,
7012             shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max
7013                 && other.shader_buffer_float32_atomic_min_max,
7014             shader_buffer_float32_atomics: self.shader_buffer_float32_atomics
7015                 && other.shader_buffer_float32_atomics,
7016             shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add
7017                 && other.shader_buffer_float64_atomic_add,
7018             shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max
7019                 && other.shader_buffer_float64_atomic_min_max,
7020             shader_buffer_float64_atomics: self.shader_buffer_float64_atomics
7021                 && other.shader_buffer_float64_atomics,
7022             shader_buffer_int64_atomics: self.shader_buffer_int64_atomics
7023                 && other.shader_buffer_int64_atomics,
7024             shader_clip_distance: self.shader_clip_distance && other.shader_clip_distance,
7025             shader_core_builtins: self.shader_core_builtins && other.shader_core_builtins,
7026             shader_cull_distance: self.shader_cull_distance && other.shader_cull_distance,
7027             shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation
7028                 && other.shader_demote_to_helper_invocation,
7029             shader_device_clock: self.shader_device_clock && other.shader_device_clock,
7030             shader_draw_parameters: self.shader_draw_parameters && other.shader_draw_parameters,
7031             shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests
7032                 && other.shader_early_and_late_fragment_tests,
7033             shader_float16: self.shader_float16 && other.shader_float16,
7034             shader_float64: self.shader_float64 && other.shader_float64,
7035             shader_image_float32_atomic_add: self.shader_image_float32_atomic_add
7036                 && other.shader_image_float32_atomic_add,
7037             shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max
7038                 && other.shader_image_float32_atomic_min_max,
7039             shader_image_float32_atomics: self.shader_image_float32_atomics
7040                 && other.shader_image_float32_atomics,
7041             shader_image_gather_extended: self.shader_image_gather_extended
7042                 && other.shader_image_gather_extended,
7043             shader_image_int64_atomics: self.shader_image_int64_atomics
7044                 && other.shader_image_int64_atomics,
7045             shader_input_attachment_array_dynamic_indexing: self
7046                 .shader_input_attachment_array_dynamic_indexing
7047                 && other.shader_input_attachment_array_dynamic_indexing,
7048             shader_input_attachment_array_non_uniform_indexing: self
7049                 .shader_input_attachment_array_non_uniform_indexing
7050                 && other.shader_input_attachment_array_non_uniform_indexing,
7051             shader_int16: self.shader_int16 && other.shader_int16,
7052             shader_int64: self.shader_int64 && other.shader_int64,
7053             shader_int8: self.shader_int8 && other.shader_int8,
7054             shader_integer_dot_product: self.shader_integer_dot_product
7055                 && other.shader_integer_dot_product,
7056             shader_integer_functions2: self.shader_integer_functions2
7057                 && other.shader_integer_functions2,
7058             shader_module_identifier: self.shader_module_identifier
7059                 && other.shader_module_identifier,
7060             shader_output_layer: self.shader_output_layer && other.shader_output_layer,
7061             shader_output_viewport_index: self.shader_output_viewport_index
7062                 && other.shader_output_viewport_index,
7063             shader_resource_min_lod: self.shader_resource_min_lod && other.shader_resource_min_lod,
7064             shader_resource_residency: self.shader_resource_residency
7065                 && other.shader_resource_residency,
7066             shader_sample_rate_interpolation_functions: self
7067                 .shader_sample_rate_interpolation_functions
7068                 && other.shader_sample_rate_interpolation_functions,
7069             shader_sampled_image_array_dynamic_indexing: self
7070                 .shader_sampled_image_array_dynamic_indexing
7071                 && other.shader_sampled_image_array_dynamic_indexing,
7072             shader_sampled_image_array_non_uniform_indexing: self
7073                 .shader_sampled_image_array_non_uniform_indexing
7074                 && other.shader_sampled_image_array_non_uniform_indexing,
7075             shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add
7076                 && other.shader_shared_float16_atomic_add,
7077             shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max
7078                 && other.shader_shared_float16_atomic_min_max,
7079             shader_shared_float16_atomics: self.shader_shared_float16_atomics
7080                 && other.shader_shared_float16_atomics,
7081             shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add
7082                 && other.shader_shared_float32_atomic_add,
7083             shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max
7084                 && other.shader_shared_float32_atomic_min_max,
7085             shader_shared_float32_atomics: self.shader_shared_float32_atomics
7086                 && other.shader_shared_float32_atomics,
7087             shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add
7088                 && other.shader_shared_float64_atomic_add,
7089             shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max
7090                 && other.shader_shared_float64_atomic_min_max,
7091             shader_shared_float64_atomics: self.shader_shared_float64_atomics
7092                 && other.shader_shared_float64_atomics,
7093             shader_shared_int64_atomics: self.shader_shared_int64_atomics
7094                 && other.shader_shared_int64_atomics,
7095             shader_sm_builtins: self.shader_sm_builtins && other.shader_sm_builtins,
7096             shader_storage_buffer_array_dynamic_indexing: self
7097                 .shader_storage_buffer_array_dynamic_indexing
7098                 && other.shader_storage_buffer_array_dynamic_indexing,
7099             shader_storage_buffer_array_non_uniform_indexing: self
7100                 .shader_storage_buffer_array_non_uniform_indexing
7101                 && other.shader_storage_buffer_array_non_uniform_indexing,
7102             shader_storage_image_array_dynamic_indexing: self
7103                 .shader_storage_image_array_dynamic_indexing
7104                 && other.shader_storage_image_array_dynamic_indexing,
7105             shader_storage_image_array_non_uniform_indexing: self
7106                 .shader_storage_image_array_non_uniform_indexing
7107                 && other.shader_storage_image_array_non_uniform_indexing,
7108             shader_storage_image_extended_formats: self.shader_storage_image_extended_formats
7109                 && other.shader_storage_image_extended_formats,
7110             shader_storage_image_multisample: self.shader_storage_image_multisample
7111                 && other.shader_storage_image_multisample,
7112             shader_storage_image_read_without_format: self.shader_storage_image_read_without_format
7113                 && other.shader_storage_image_read_without_format,
7114             shader_storage_image_write_without_format: self
7115                 .shader_storage_image_write_without_format
7116                 && other.shader_storage_image_write_without_format,
7117             shader_storage_texel_buffer_array_dynamic_indexing: self
7118                 .shader_storage_texel_buffer_array_dynamic_indexing
7119                 && other.shader_storage_texel_buffer_array_dynamic_indexing,
7120             shader_storage_texel_buffer_array_non_uniform_indexing: self
7121                 .shader_storage_texel_buffer_array_non_uniform_indexing
7122                 && other.shader_storage_texel_buffer_array_non_uniform_indexing,
7123             shader_subgroup_clock: self.shader_subgroup_clock && other.shader_subgroup_clock,
7124             shader_subgroup_extended_types: self.shader_subgroup_extended_types
7125                 && other.shader_subgroup_extended_types,
7126             shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow
7127                 && other.shader_subgroup_uniform_control_flow,
7128             shader_terminate_invocation: self.shader_terminate_invocation
7129                 && other.shader_terminate_invocation,
7130             shader_tessellation_and_geometry_point_size: self
7131                 .shader_tessellation_and_geometry_point_size
7132                 && other.shader_tessellation_and_geometry_point_size,
7133             shader_uniform_buffer_array_dynamic_indexing: self
7134                 .shader_uniform_buffer_array_dynamic_indexing
7135                 && other.shader_uniform_buffer_array_dynamic_indexing,
7136             shader_uniform_buffer_array_non_uniform_indexing: self
7137                 .shader_uniform_buffer_array_non_uniform_indexing
7138                 && other.shader_uniform_buffer_array_non_uniform_indexing,
7139             shader_uniform_texel_buffer_array_dynamic_indexing: self
7140                 .shader_uniform_texel_buffer_array_dynamic_indexing
7141                 && other.shader_uniform_texel_buffer_array_dynamic_indexing,
7142             shader_uniform_texel_buffer_array_non_uniform_indexing: self
7143                 .shader_uniform_texel_buffer_array_non_uniform_indexing
7144                 && other.shader_uniform_texel_buffer_array_non_uniform_indexing,
7145             shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory
7146                 && other.shader_zero_initialize_workgroup_memory,
7147             shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order
7148                 && other.shading_rate_coarse_sample_order,
7149             shading_rate_image: self.shading_rate_image && other.shading_rate_image,
7150             smooth_lines: self.smooth_lines && other.smooth_lines,
7151             sparse_binding: self.sparse_binding && other.sparse_binding,
7152             sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add
7153                 && other.sparse_image_float32_atomic_add,
7154             sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max
7155                 && other.sparse_image_float32_atomic_min_max,
7156             sparse_image_float32_atomics: self.sparse_image_float32_atomics
7157                 && other.sparse_image_float32_atomics,
7158             sparse_image_int64_atomics: self.sparse_image_int64_atomics
7159                 && other.sparse_image_int64_atomics,
7160             sparse_residency16_samples: self.sparse_residency16_samples
7161                 && other.sparse_residency16_samples,
7162             sparse_residency2_samples: self.sparse_residency2_samples
7163                 && other.sparse_residency2_samples,
7164             sparse_residency4_samples: self.sparse_residency4_samples
7165                 && other.sparse_residency4_samples,
7166             sparse_residency8_samples: self.sparse_residency8_samples
7167                 && other.sparse_residency8_samples,
7168             sparse_residency_aliased: self.sparse_residency_aliased
7169                 && other.sparse_residency_aliased,
7170             sparse_residency_buffer: self.sparse_residency_buffer && other.sparse_residency_buffer,
7171             sparse_residency_image2_d: self.sparse_residency_image2_d
7172                 && other.sparse_residency_image2_d,
7173             sparse_residency_image3_d: self.sparse_residency_image3_d
7174                 && other.sparse_residency_image3_d,
7175             stippled_bresenham_lines: self.stippled_bresenham_lines
7176                 && other.stippled_bresenham_lines,
7177             stippled_rectangular_lines: self.stippled_rectangular_lines
7178                 && other.stippled_rectangular_lines,
7179             stippled_smooth_lines: self.stippled_smooth_lines && other.stippled_smooth_lines,
7180             storage_buffer16_bit_access: self.storage_buffer16_bit_access
7181                 && other.storage_buffer16_bit_access,
7182             storage_buffer8_bit_access: self.storage_buffer8_bit_access
7183                 && other.storage_buffer8_bit_access,
7184             storage_input_output16: self.storage_input_output16 && other.storage_input_output16,
7185             storage_push_constant16: self.storage_push_constant16 && other.storage_push_constant16,
7186             storage_push_constant8: self.storage_push_constant8 && other.storage_push_constant8,
7187             subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id
7188                 && other.subgroup_broadcast_dynamic_id,
7189             subgroup_size_control: self.subgroup_size_control && other.subgroup_size_control,
7190             subpass_merge_feedback: self.subpass_merge_feedback && other.subpass_merge_feedback,
7191             subpass_shading: self.subpass_shading && other.subpass_shading,
7192             supersample_fragment_shading_rates: self.supersample_fragment_shading_rates
7193                 && other.supersample_fragment_shading_rates,
7194             swapchain_maintenance1: self.swapchain_maintenance1 && other.swapchain_maintenance1,
7195             synchronization2: self.synchronization2 && other.synchronization2,
7196             task_shader: self.task_shader && other.task_shader,
7197             tessellation_isolines: self.tessellation_isolines && other.tessellation_isolines,
7198             tessellation_point_mode: self.tessellation_point_mode && other.tessellation_point_mode,
7199             tessellation_shader: self.tessellation_shader && other.tessellation_shader,
7200             texel_buffer_alignment: self.texel_buffer_alignment && other.texel_buffer_alignment,
7201             texture_block_match: self.texture_block_match && other.texture_block_match,
7202             texture_box_filter: self.texture_box_filter && other.texture_box_filter,
7203             texture_compression_astc_hdr: self.texture_compression_astc_hdr
7204                 && other.texture_compression_astc_hdr,
7205             texture_compression_astc_ldr: self.texture_compression_astc_ldr
7206                 && other.texture_compression_astc_ldr,
7207             texture_compression_bc: self.texture_compression_bc && other.texture_compression_bc,
7208             texture_compression_etc2: self.texture_compression_etc2
7209                 && other.texture_compression_etc2,
7210             texture_sample_weighted: self.texture_sample_weighted && other.texture_sample_weighted,
7211             tile_properties: self.tile_properties && other.tile_properties,
7212             timeline_semaphore: self.timeline_semaphore && other.timeline_semaphore,
7213             transform_feedback: self.transform_feedback && other.transform_feedback,
7214             transform_feedback_preserves_provoking_vertex: self
7215                 .transform_feedback_preserves_provoking_vertex
7216                 && other.transform_feedback_preserves_provoking_vertex,
7217             triangle_fans: self.triangle_fans && other.triangle_fans,
7218             uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access
7219                 && other.uniform_and_storage_buffer16_bit_access,
7220             uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access
7221                 && other.uniform_and_storage_buffer8_bit_access,
7222             uniform_buffer_standard_layout: self.uniform_buffer_standard_layout
7223                 && other.uniform_buffer_standard_layout,
7224             variable_multisample_rate: self.variable_multisample_rate
7225                 && other.variable_multisample_rate,
7226             variable_pointers: self.variable_pointers && other.variable_pointers,
7227             variable_pointers_storage_buffer: self.variable_pointers_storage_buffer
7228                 && other.variable_pointers_storage_buffer,
7229             vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride
7230                 && other.vertex_attribute_access_beyond_stride,
7231             vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor
7232                 && other.vertex_attribute_instance_rate_divisor,
7233             vertex_attribute_instance_rate_zero_divisor: self
7234                 .vertex_attribute_instance_rate_zero_divisor
7235                 && other.vertex_attribute_instance_rate_zero_divisor,
7236             vertex_input_dynamic_state: self.vertex_input_dynamic_state
7237                 && other.vertex_input_dynamic_state,
7238             vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics
7239                 && other.vertex_pipeline_stores_and_atomics,
7240             vulkan_memory_model: self.vulkan_memory_model && other.vulkan_memory_model,
7241             vulkan_memory_model_availability_visibility_chains: self
7242                 .vulkan_memory_model_availability_visibility_chains
7243                 && other.vulkan_memory_model_availability_visibility_chains,
7244             vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope
7245                 && other.vulkan_memory_model_device_scope,
7246             wide_lines: self.wide_lines && other.wide_lines,
7247             workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout
7248                 && other.workgroup_memory_explicit_layout,
7249             workgroup_memory_explicit_layout16_bit_access: self
7250                 .workgroup_memory_explicit_layout16_bit_access
7251                 && other.workgroup_memory_explicit_layout16_bit_access,
7252             workgroup_memory_explicit_layout8_bit_access: self
7253                 .workgroup_memory_explicit_layout8_bit_access
7254                 && other.workgroup_memory_explicit_layout8_bit_access,
7255             workgroup_memory_explicit_layout_scalar_block_layout: self
7256                 .workgroup_memory_explicit_layout_scalar_block_layout
7257                 && other.workgroup_memory_explicit_layout_scalar_block_layout,
7258             ycbcr2plane444_formats: self.ycbcr2plane444_formats && other.ycbcr2plane444_formats,
7259             ycbcr_image_arrays: self.ycbcr_image_arrays && other.ycbcr_image_arrays,
7260             _ne: crate::NonExhaustive(()),
7261         }
7262     }
7263     #[doc = r" Returns `self` without the members set in `other`."]
7264     #[inline]
difference(&self, other: &Self) -> Self7265     pub const fn difference(&self, other: &Self) -> Self {
7266         Self {
7267             acceleration_structure: self.acceleration_structure && !other.acceleration_structure,
7268             acceleration_structure_capture_replay: self.acceleration_structure_capture_replay
7269                 && !other.acceleration_structure_capture_replay,
7270             acceleration_structure_host_commands: self.acceleration_structure_host_commands
7271                 && !other.acceleration_structure_host_commands,
7272             acceleration_structure_indirect_build: self.acceleration_structure_indirect_build
7273                 && !other.acceleration_structure_indirect_build,
7274             advanced_blend_coherent_operations: self.advanced_blend_coherent_operations
7275                 && !other.advanced_blend_coherent_operations,
7276             alpha_to_one: self.alpha_to_one && !other.alpha_to_one,
7277             amigo_profiling: self.amigo_profiling && !other.amigo_profiling,
7278             attachment_feedback_loop_layout: self.attachment_feedback_loop_layout
7279                 && !other.attachment_feedback_loop_layout,
7280             attachment_fragment_shading_rate: self.attachment_fragment_shading_rate
7281                 && !other.attachment_fragment_shading_rate,
7282             border_color_swizzle: self.border_color_swizzle && !other.border_color_swizzle,
7283             border_color_swizzle_from_image: self.border_color_swizzle_from_image
7284                 && !other.border_color_swizzle_from_image,
7285             bresenham_lines: self.bresenham_lines && !other.bresenham_lines,
7286             buffer_device_address: self.buffer_device_address && !other.buffer_device_address,
7287             buffer_device_address_capture_replay: self.buffer_device_address_capture_replay
7288                 && !other.buffer_device_address_capture_replay,
7289             buffer_device_address_multi_device: self.buffer_device_address_multi_device
7290                 && !other.buffer_device_address_multi_device,
7291             color_write_enable: self.color_write_enable && !other.color_write_enable,
7292             compute_derivative_group_linear: self.compute_derivative_group_linear
7293                 && !other.compute_derivative_group_linear,
7294             compute_derivative_group_quads: self.compute_derivative_group_quads
7295                 && !other.compute_derivative_group_quads,
7296             compute_full_subgroups: self.compute_full_subgroups && !other.compute_full_subgroups,
7297             conditional_rendering: self.conditional_rendering && !other.conditional_rendering,
7298             constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors
7299                 && !other.constant_alpha_color_blend_factors,
7300             cooperative_matrix: self.cooperative_matrix && !other.cooperative_matrix,
7301             cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access
7302                 && !other.cooperative_matrix_robust_buffer_access,
7303             corner_sampled_image: self.corner_sampled_image && !other.corner_sampled_image,
7304             coverage_reduction_mode: self.coverage_reduction_mode && !other.coverage_reduction_mode,
7305             custom_border_color_without_format: self.custom_border_color_without_format
7306                 && !other.custom_border_color_without_format,
7307             custom_border_colors: self.custom_border_colors && !other.custom_border_colors,
7308             decode_mode_shared_exponent: self.decode_mode_shared_exponent
7309                 && !other.decode_mode_shared_exponent,
7310             dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing
7311                 && !other.dedicated_allocation_image_aliasing,
7312             depth_bias_clamp: self.depth_bias_clamp && !other.depth_bias_clamp,
7313             depth_bounds: self.depth_bounds && !other.depth_bounds,
7314             depth_clamp: self.depth_clamp && !other.depth_clamp,
7315             depth_clamp_zero_one: self.depth_clamp_zero_one && !other.depth_clamp_zero_one,
7316             depth_clip_control: self.depth_clip_control && !other.depth_clip_control,
7317             depth_clip_enable: self.depth_clip_enable && !other.depth_clip_enable,
7318             descriptor_binding_acceleration_structure_update_after_bind: self
7319                 .descriptor_binding_acceleration_structure_update_after_bind
7320                 && !other.descriptor_binding_acceleration_structure_update_after_bind,
7321             descriptor_binding_inline_uniform_block_update_after_bind: self
7322                 .descriptor_binding_inline_uniform_block_update_after_bind
7323                 && !other.descriptor_binding_inline_uniform_block_update_after_bind,
7324             descriptor_binding_partially_bound: self.descriptor_binding_partially_bound
7325                 && !other.descriptor_binding_partially_bound,
7326             descriptor_binding_sampled_image_update_after_bind: self
7327                 .descriptor_binding_sampled_image_update_after_bind
7328                 && !other.descriptor_binding_sampled_image_update_after_bind,
7329             descriptor_binding_storage_buffer_update_after_bind: self
7330                 .descriptor_binding_storage_buffer_update_after_bind
7331                 && !other.descriptor_binding_storage_buffer_update_after_bind,
7332             descriptor_binding_storage_image_update_after_bind: self
7333                 .descriptor_binding_storage_image_update_after_bind
7334                 && !other.descriptor_binding_storage_image_update_after_bind,
7335             descriptor_binding_storage_texel_buffer_update_after_bind: self
7336                 .descriptor_binding_storage_texel_buffer_update_after_bind
7337                 && !other.descriptor_binding_storage_texel_buffer_update_after_bind,
7338             descriptor_binding_uniform_buffer_update_after_bind: self
7339                 .descriptor_binding_uniform_buffer_update_after_bind
7340                 && !other.descriptor_binding_uniform_buffer_update_after_bind,
7341             descriptor_binding_uniform_texel_buffer_update_after_bind: self
7342                 .descriptor_binding_uniform_texel_buffer_update_after_bind
7343                 && !other.descriptor_binding_uniform_texel_buffer_update_after_bind,
7344             descriptor_binding_update_unused_while_pending: self
7345                 .descriptor_binding_update_unused_while_pending
7346                 && !other.descriptor_binding_update_unused_while_pending,
7347             descriptor_binding_variable_descriptor_count: self
7348                 .descriptor_binding_variable_descriptor_count
7349                 && !other.descriptor_binding_variable_descriptor_count,
7350             descriptor_buffer: self.descriptor_buffer && !other.descriptor_buffer,
7351             descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay
7352                 && !other.descriptor_buffer_capture_replay,
7353             descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored
7354                 && !other.descriptor_buffer_image_layout_ignored,
7355             descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors
7356                 && !other.descriptor_buffer_push_descriptors,
7357             descriptor_indexing: self.descriptor_indexing && !other.descriptor_indexing,
7358             descriptor_set_host_mapping: self.descriptor_set_host_mapping
7359                 && !other.descriptor_set_host_mapping,
7360             device_coherent_memory: self.device_coherent_memory && !other.device_coherent_memory,
7361             device_fault: self.device_fault && !other.device_fault,
7362             device_fault_vendor_binary: self.device_fault_vendor_binary
7363                 && !other.device_fault_vendor_binary,
7364             device_generated_commands: self.device_generated_commands
7365                 && !other.device_generated_commands,
7366             device_memory_report: self.device_memory_report && !other.device_memory_report,
7367             diagnostics_config: self.diagnostics_config && !other.diagnostics_config,
7368             draw_indirect_count: self.draw_indirect_count && !other.draw_indirect_count,
7369             draw_indirect_first_instance: self.draw_indirect_first_instance
7370                 && !other.draw_indirect_first_instance,
7371             dual_src_blend: self.dual_src_blend && !other.dual_src_blend,
7372             dynamic_rendering: self.dynamic_rendering && !other.dynamic_rendering,
7373             events: self.events && !other.events,
7374             exclusive_scissor: self.exclusive_scissor && !other.exclusive_scissor,
7375             extended_dynamic_state: self.extended_dynamic_state && !other.extended_dynamic_state,
7376             extended_dynamic_state2: self.extended_dynamic_state2 && !other.extended_dynamic_state2,
7377             extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op
7378                 && !other.extended_dynamic_state2_logic_op,
7379             extended_dynamic_state2_patch_control_points: self
7380                 .extended_dynamic_state2_patch_control_points
7381                 && !other.extended_dynamic_state2_patch_control_points,
7382             extended_dynamic_state3_alpha_to_coverage_enable: self
7383                 .extended_dynamic_state3_alpha_to_coverage_enable
7384                 && !other.extended_dynamic_state3_alpha_to_coverage_enable,
7385             extended_dynamic_state3_alpha_to_one_enable: self
7386                 .extended_dynamic_state3_alpha_to_one_enable
7387                 && !other.extended_dynamic_state3_alpha_to_one_enable,
7388             extended_dynamic_state3_color_blend_advanced: self
7389                 .extended_dynamic_state3_color_blend_advanced
7390                 && !other.extended_dynamic_state3_color_blend_advanced,
7391             extended_dynamic_state3_color_blend_enable: self
7392                 .extended_dynamic_state3_color_blend_enable
7393                 && !other.extended_dynamic_state3_color_blend_enable,
7394             extended_dynamic_state3_color_blend_equation: self
7395                 .extended_dynamic_state3_color_blend_equation
7396                 && !other.extended_dynamic_state3_color_blend_equation,
7397             extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask
7398                 && !other.extended_dynamic_state3_color_write_mask,
7399             extended_dynamic_state3_conservative_rasterization_mode: self
7400                 .extended_dynamic_state3_conservative_rasterization_mode
7401                 && !other.extended_dynamic_state3_conservative_rasterization_mode,
7402             extended_dynamic_state3_coverage_modulation_mode: self
7403                 .extended_dynamic_state3_coverage_modulation_mode
7404                 && !other.extended_dynamic_state3_coverage_modulation_mode,
7405             extended_dynamic_state3_coverage_modulation_table: self
7406                 .extended_dynamic_state3_coverage_modulation_table
7407                 && !other.extended_dynamic_state3_coverage_modulation_table,
7408             extended_dynamic_state3_coverage_modulation_table_enable: self
7409                 .extended_dynamic_state3_coverage_modulation_table_enable
7410                 && !other.extended_dynamic_state3_coverage_modulation_table_enable,
7411             extended_dynamic_state3_coverage_reduction_mode: self
7412                 .extended_dynamic_state3_coverage_reduction_mode
7413                 && !other.extended_dynamic_state3_coverage_reduction_mode,
7414             extended_dynamic_state3_coverage_to_color_enable: self
7415                 .extended_dynamic_state3_coverage_to_color_enable
7416                 && !other.extended_dynamic_state3_coverage_to_color_enable,
7417             extended_dynamic_state3_coverage_to_color_location: self
7418                 .extended_dynamic_state3_coverage_to_color_location
7419                 && !other.extended_dynamic_state3_coverage_to_color_location,
7420             extended_dynamic_state3_depth_clamp_enable: self
7421                 .extended_dynamic_state3_depth_clamp_enable
7422                 && !other.extended_dynamic_state3_depth_clamp_enable,
7423             extended_dynamic_state3_depth_clip_enable: self
7424                 .extended_dynamic_state3_depth_clip_enable
7425                 && !other.extended_dynamic_state3_depth_clip_enable,
7426             extended_dynamic_state3_depth_clip_negative_one_to_one: self
7427                 .extended_dynamic_state3_depth_clip_negative_one_to_one
7428                 && !other.extended_dynamic_state3_depth_clip_negative_one_to_one,
7429             extended_dynamic_state3_extra_primitive_overestimation_size: self
7430                 .extended_dynamic_state3_extra_primitive_overestimation_size
7431                 && !other.extended_dynamic_state3_extra_primitive_overestimation_size,
7432             extended_dynamic_state3_line_rasterization_mode: self
7433                 .extended_dynamic_state3_line_rasterization_mode
7434                 && !other.extended_dynamic_state3_line_rasterization_mode,
7435             extended_dynamic_state3_line_stipple_enable: self
7436                 .extended_dynamic_state3_line_stipple_enable
7437                 && !other.extended_dynamic_state3_line_stipple_enable,
7438             extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable
7439                 && !other.extended_dynamic_state3_logic_op_enable,
7440             extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode
7441                 && !other.extended_dynamic_state3_polygon_mode,
7442             extended_dynamic_state3_provoking_vertex_mode: self
7443                 .extended_dynamic_state3_provoking_vertex_mode
7444                 && !other.extended_dynamic_state3_provoking_vertex_mode,
7445             extended_dynamic_state3_rasterization_samples: self
7446                 .extended_dynamic_state3_rasterization_samples
7447                 && !other.extended_dynamic_state3_rasterization_samples,
7448             extended_dynamic_state3_rasterization_stream: self
7449                 .extended_dynamic_state3_rasterization_stream
7450                 && !other.extended_dynamic_state3_rasterization_stream,
7451             extended_dynamic_state3_representative_fragment_test_enable: self
7452                 .extended_dynamic_state3_representative_fragment_test_enable
7453                 && !other.extended_dynamic_state3_representative_fragment_test_enable,
7454             extended_dynamic_state3_sample_locations_enable: self
7455                 .extended_dynamic_state3_sample_locations_enable
7456                 && !other.extended_dynamic_state3_sample_locations_enable,
7457             extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask
7458                 && !other.extended_dynamic_state3_sample_mask,
7459             extended_dynamic_state3_shading_rate_image_enable: self
7460                 .extended_dynamic_state3_shading_rate_image_enable
7461                 && !other.extended_dynamic_state3_shading_rate_image_enable,
7462             extended_dynamic_state3_tessellation_domain_origin: self
7463                 .extended_dynamic_state3_tessellation_domain_origin
7464                 && !other.extended_dynamic_state3_tessellation_domain_origin,
7465             extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle
7466                 && !other.extended_dynamic_state3_viewport_swizzle,
7467             extended_dynamic_state3_viewport_w_scaling_enable: self
7468                 .extended_dynamic_state3_viewport_w_scaling_enable
7469                 && !other.extended_dynamic_state3_viewport_w_scaling_enable,
7470             external_memory_rdma: self.external_memory_rdma && !other.external_memory_rdma,
7471             fill_mode_non_solid: self.fill_mode_non_solid && !other.fill_mode_non_solid,
7472             format_a4b4g4r4: self.format_a4b4g4r4 && !other.format_a4b4g4r4,
7473             format_a4r4g4b4: self.format_a4r4g4b4 && !other.format_a4r4g4b4,
7474             format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler
7475                 && !other.format_rgba10x6_without_y_cb_cr_sampler,
7476             fragment_density_map: self.fragment_density_map && !other.fragment_density_map,
7477             fragment_density_map_deferred: self.fragment_density_map_deferred
7478                 && !other.fragment_density_map_deferred,
7479             fragment_density_map_dynamic: self.fragment_density_map_dynamic
7480                 && !other.fragment_density_map_dynamic,
7481             fragment_density_map_non_subsampled_images: self
7482                 .fragment_density_map_non_subsampled_images
7483                 && !other.fragment_density_map_non_subsampled_images,
7484             fragment_density_map_offset: self.fragment_density_map_offset
7485                 && !other.fragment_density_map_offset,
7486             fragment_shader_barycentric: self.fragment_shader_barycentric
7487                 && !other.fragment_shader_barycentric,
7488             fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock
7489                 && !other.fragment_shader_pixel_interlock,
7490             fragment_shader_sample_interlock: self.fragment_shader_sample_interlock
7491                 && !other.fragment_shader_sample_interlock,
7492             fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock
7493                 && !other.fragment_shader_shading_rate_interlock,
7494             fragment_shading_rate_enums: self.fragment_shading_rate_enums
7495                 && !other.fragment_shading_rate_enums,
7496             fragment_stores_and_atomics: self.fragment_stores_and_atomics
7497                 && !other.fragment_stores_and_atomics,
7498             full_draw_index_uint32: self.full_draw_index_uint32 && !other.full_draw_index_uint32,
7499             geometry_shader: self.geometry_shader && !other.geometry_shader,
7500             geometry_streams: self.geometry_streams && !other.geometry_streams,
7501             global_priority_query: self.global_priority_query && !other.global_priority_query,
7502             graphics_pipeline_library: self.graphics_pipeline_library
7503                 && !other.graphics_pipeline_library,
7504             host_query_reset: self.host_query_reset && !other.host_query_reset,
7505             image2_d_view_of3_d: self.image2_d_view_of3_d && !other.image2_d_view_of3_d,
7506             image_compression_control: self.image_compression_control
7507                 && !other.image_compression_control,
7508             image_compression_control_swapchain: self.image_compression_control_swapchain
7509                 && !other.image_compression_control_swapchain,
7510             image_cube_array: self.image_cube_array && !other.image_cube_array,
7511             image_footprint: self.image_footprint && !other.image_footprint,
7512             image_view2_d_on3_d_image: self.image_view2_d_on3_d_image
7513                 && !other.image_view2_d_on3_d_image,
7514             image_view_format_reinterpretation: self.image_view_format_reinterpretation
7515                 && !other.image_view_format_reinterpretation,
7516             image_view_format_swizzle: self.image_view_format_swizzle
7517                 && !other.image_view_format_swizzle,
7518             imageless_framebuffer: self.imageless_framebuffer && !other.imageless_framebuffer,
7519             independent_blend: self.independent_blend && !other.independent_blend,
7520             index_type_uint8: self.index_type_uint8 && !other.index_type_uint8,
7521             indirect_copy: self.indirect_copy && !other.indirect_copy,
7522             inherited_conditional_rendering: self.inherited_conditional_rendering
7523                 && !other.inherited_conditional_rendering,
7524             inherited_queries: self.inherited_queries && !other.inherited_queries,
7525             inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d
7526                 && !other.inherited_viewport_scissor2_d,
7527             inline_uniform_block: self.inline_uniform_block && !other.inline_uniform_block,
7528             invocation_mask: self.invocation_mask && !other.invocation_mask,
7529             large_points: self.large_points && !other.large_points,
7530             legacy_dithering: self.legacy_dithering && !other.legacy_dithering,
7531             linear_color_attachment: self.linear_color_attachment && !other.linear_color_attachment,
7532             logic_op: self.logic_op && !other.logic_op,
7533             maintenance4: self.maintenance4 && !other.maintenance4,
7534             memory_decompression: self.memory_decompression && !other.memory_decompression,
7535             memory_priority: self.memory_priority && !other.memory_priority,
7536             mesh_shader: self.mesh_shader && !other.mesh_shader,
7537             mesh_shader_queries: self.mesh_shader_queries && !other.mesh_shader_queries,
7538             micromap: self.micromap && !other.micromap,
7539             micromap_capture_replay: self.micromap_capture_replay && !other.micromap_capture_replay,
7540             micromap_host_commands: self.micromap_host_commands && !other.micromap_host_commands,
7541             min_lod: self.min_lod && !other.min_lod,
7542             multi_draw: self.multi_draw && !other.multi_draw,
7543             multi_draw_indirect: self.multi_draw_indirect && !other.multi_draw_indirect,
7544             multi_viewport: self.multi_viewport && !other.multi_viewport,
7545             multisample_array_image: self.multisample_array_image && !other.multisample_array_image,
7546             multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled
7547                 && !other.multisampled_render_to_single_sampled,
7548             multiview: self.multiview && !other.multiview,
7549             multiview_geometry_shader: self.multiview_geometry_shader
7550                 && !other.multiview_geometry_shader,
7551             multiview_mesh_shader: self.multiview_mesh_shader && !other.multiview_mesh_shader,
7552             multiview_per_view_viewports: self.multiview_per_view_viewports
7553                 && !other.multiview_per_view_viewports,
7554             multiview_tessellation_shader: self.multiview_tessellation_shader
7555                 && !other.multiview_tessellation_shader,
7556             mutable_comparison_samplers: self.mutable_comparison_samplers
7557                 && !other.mutable_comparison_samplers,
7558             mutable_descriptor_type: self.mutable_descriptor_type && !other.mutable_descriptor_type,
7559             no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates
7560                 && !other.no_invocation_fragment_shading_rates,
7561             non_seamless_cube_map: self.non_seamless_cube_map && !other.non_seamless_cube_map,
7562             null_descriptor: self.null_descriptor && !other.null_descriptor,
7563             occlusion_query_precise: self.occlusion_query_precise && !other.occlusion_query_precise,
7564             optical_flow: self.optical_flow && !other.optical_flow,
7565             pageable_device_local_memory: self.pageable_device_local_memory
7566                 && !other.pageable_device_local_memory,
7567             performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools
7568                 && !other.performance_counter_multiple_query_pools,
7569             performance_counter_query_pools: self.performance_counter_query_pools
7570                 && !other.performance_counter_query_pools,
7571             pipeline_creation_cache_control: self.pipeline_creation_cache_control
7572                 && !other.pipeline_creation_cache_control,
7573             pipeline_executable_info: self.pipeline_executable_info
7574                 && !other.pipeline_executable_info,
7575             pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate
7576                 && !other.pipeline_fragment_shading_rate,
7577             pipeline_properties_identifier: self.pipeline_properties_identifier
7578                 && !other.pipeline_properties_identifier,
7579             pipeline_protected_access: self.pipeline_protected_access
7580                 && !other.pipeline_protected_access,
7581             pipeline_robustness: self.pipeline_robustness && !other.pipeline_robustness,
7582             pipeline_statistics_query: self.pipeline_statistics_query
7583                 && !other.pipeline_statistics_query,
7584             point_polygons: self.point_polygons && !other.point_polygons,
7585             present_barrier: self.present_barrier && !other.present_barrier,
7586             present_id: self.present_id && !other.present_id,
7587             present_wait: self.present_wait && !other.present_wait,
7588             primitive_fragment_shading_rate: self.primitive_fragment_shading_rate
7589                 && !other.primitive_fragment_shading_rate,
7590             primitive_fragment_shading_rate_mesh_shader: self
7591                 .primitive_fragment_shading_rate_mesh_shader
7592                 && !other.primitive_fragment_shading_rate_mesh_shader,
7593             primitive_topology_list_restart: self.primitive_topology_list_restart
7594                 && !other.primitive_topology_list_restart,
7595             primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart
7596                 && !other.primitive_topology_patch_list_restart,
7597             primitives_generated_query: self.primitives_generated_query
7598                 && !other.primitives_generated_query,
7599             primitives_generated_query_with_non_zero_streams: self
7600                 .primitives_generated_query_with_non_zero_streams
7601                 && !other.primitives_generated_query_with_non_zero_streams,
7602             primitives_generated_query_with_rasterizer_discard: self
7603                 .primitives_generated_query_with_rasterizer_discard
7604                 && !other.primitives_generated_query_with_rasterizer_discard,
7605             private_data: self.private_data && !other.private_data,
7606             protected_memory: self.protected_memory && !other.protected_memory,
7607             provoking_vertex_last: self.provoking_vertex_last && !other.provoking_vertex_last,
7608             rasterization_order_color_attachment_access: self
7609                 .rasterization_order_color_attachment_access
7610                 && !other.rasterization_order_color_attachment_access,
7611             rasterization_order_depth_attachment_access: self
7612                 .rasterization_order_depth_attachment_access
7613                 && !other.rasterization_order_depth_attachment_access,
7614             rasterization_order_stencil_attachment_access: self
7615                 .rasterization_order_stencil_attachment_access
7616                 && !other.rasterization_order_stencil_attachment_access,
7617             ray_query: self.ray_query && !other.ray_query,
7618             ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder
7619                 && !other.ray_tracing_invocation_reorder,
7620             ray_tracing_maintenance1: self.ray_tracing_maintenance1
7621                 && !other.ray_tracing_maintenance1,
7622             ray_tracing_motion_blur: self.ray_tracing_motion_blur && !other.ray_tracing_motion_blur,
7623             ray_tracing_motion_blur_pipeline_trace_rays_indirect: self
7624                 .ray_tracing_motion_blur_pipeline_trace_rays_indirect
7625                 && !other.ray_tracing_motion_blur_pipeline_trace_rays_indirect,
7626             ray_tracing_pipeline: self.ray_tracing_pipeline && !other.ray_tracing_pipeline,
7627             ray_tracing_pipeline_shader_group_handle_capture_replay: self
7628                 .ray_tracing_pipeline_shader_group_handle_capture_replay
7629                 && !other.ray_tracing_pipeline_shader_group_handle_capture_replay,
7630             ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self
7631                 .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
7632                 && !other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed,
7633             ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect
7634                 && !other.ray_tracing_pipeline_trace_rays_indirect,
7635             ray_tracing_pipeline_trace_rays_indirect2: self
7636                 .ray_tracing_pipeline_trace_rays_indirect2
7637                 && !other.ray_tracing_pipeline_trace_rays_indirect2,
7638             ray_traversal_primitive_culling: self.ray_traversal_primitive_culling
7639                 && !other.ray_traversal_primitive_culling,
7640             rectangular_lines: self.rectangular_lines && !other.rectangular_lines,
7641             report_address_binding: self.report_address_binding && !other.report_address_binding,
7642             representative_fragment_test: self.representative_fragment_test
7643                 && !other.representative_fragment_test,
7644             robust_buffer_access: self.robust_buffer_access && !other.robust_buffer_access,
7645             robust_buffer_access2: self.robust_buffer_access2 && !other.robust_buffer_access2,
7646             robust_image_access: self.robust_image_access && !other.robust_image_access,
7647             robust_image_access2: self.robust_image_access2 && !other.robust_image_access2,
7648             runtime_descriptor_array: self.runtime_descriptor_array
7649                 && !other.runtime_descriptor_array,
7650             sample_rate_shading: self.sample_rate_shading && !other.sample_rate_shading,
7651             sampler2_d_view_of3_d: self.sampler2_d_view_of3_d && !other.sampler2_d_view_of3_d,
7652             sampler_anisotropy: self.sampler_anisotropy && !other.sampler_anisotropy,
7653             sampler_filter_minmax: self.sampler_filter_minmax && !other.sampler_filter_minmax,
7654             sampler_mip_lod_bias: self.sampler_mip_lod_bias && !other.sampler_mip_lod_bias,
7655             sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge
7656                 && !other.sampler_mirror_clamp_to_edge,
7657             sampler_ycbcr_conversion: self.sampler_ycbcr_conversion
7658                 && !other.sampler_ycbcr_conversion,
7659             scalar_block_layout: self.scalar_block_layout && !other.scalar_block_layout,
7660             separate_depth_stencil_layouts: self.separate_depth_stencil_layouts
7661                 && !other.separate_depth_stencil_layouts,
7662             separate_stencil_mask_ref: self.separate_stencil_mask_ref
7663                 && !other.separate_stencil_mask_ref,
7664             shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add
7665                 && !other.shader_buffer_float16_atomic_add,
7666             shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max
7667                 && !other.shader_buffer_float16_atomic_min_max,
7668             shader_buffer_float16_atomics: self.shader_buffer_float16_atomics
7669                 && !other.shader_buffer_float16_atomics,
7670             shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add
7671                 && !other.shader_buffer_float32_atomic_add,
7672             shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max
7673                 && !other.shader_buffer_float32_atomic_min_max,
7674             shader_buffer_float32_atomics: self.shader_buffer_float32_atomics
7675                 && !other.shader_buffer_float32_atomics,
7676             shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add
7677                 && !other.shader_buffer_float64_atomic_add,
7678             shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max
7679                 && !other.shader_buffer_float64_atomic_min_max,
7680             shader_buffer_float64_atomics: self.shader_buffer_float64_atomics
7681                 && !other.shader_buffer_float64_atomics,
7682             shader_buffer_int64_atomics: self.shader_buffer_int64_atomics
7683                 && !other.shader_buffer_int64_atomics,
7684             shader_clip_distance: self.shader_clip_distance && !other.shader_clip_distance,
7685             shader_core_builtins: self.shader_core_builtins && !other.shader_core_builtins,
7686             shader_cull_distance: self.shader_cull_distance && !other.shader_cull_distance,
7687             shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation
7688                 && !other.shader_demote_to_helper_invocation,
7689             shader_device_clock: self.shader_device_clock && !other.shader_device_clock,
7690             shader_draw_parameters: self.shader_draw_parameters && !other.shader_draw_parameters,
7691             shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests
7692                 && !other.shader_early_and_late_fragment_tests,
7693             shader_float16: self.shader_float16 && !other.shader_float16,
7694             shader_float64: self.shader_float64 && !other.shader_float64,
7695             shader_image_float32_atomic_add: self.shader_image_float32_atomic_add
7696                 && !other.shader_image_float32_atomic_add,
7697             shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max
7698                 && !other.shader_image_float32_atomic_min_max,
7699             shader_image_float32_atomics: self.shader_image_float32_atomics
7700                 && !other.shader_image_float32_atomics,
7701             shader_image_gather_extended: self.shader_image_gather_extended
7702                 && !other.shader_image_gather_extended,
7703             shader_image_int64_atomics: self.shader_image_int64_atomics
7704                 && !other.shader_image_int64_atomics,
7705             shader_input_attachment_array_dynamic_indexing: self
7706                 .shader_input_attachment_array_dynamic_indexing
7707                 && !other.shader_input_attachment_array_dynamic_indexing,
7708             shader_input_attachment_array_non_uniform_indexing: self
7709                 .shader_input_attachment_array_non_uniform_indexing
7710                 && !other.shader_input_attachment_array_non_uniform_indexing,
7711             shader_int16: self.shader_int16 && !other.shader_int16,
7712             shader_int64: self.shader_int64 && !other.shader_int64,
7713             shader_int8: self.shader_int8 && !other.shader_int8,
7714             shader_integer_dot_product: self.shader_integer_dot_product
7715                 && !other.shader_integer_dot_product,
7716             shader_integer_functions2: self.shader_integer_functions2
7717                 && !other.shader_integer_functions2,
7718             shader_module_identifier: self.shader_module_identifier
7719                 && !other.shader_module_identifier,
7720             shader_output_layer: self.shader_output_layer && !other.shader_output_layer,
7721             shader_output_viewport_index: self.shader_output_viewport_index
7722                 && !other.shader_output_viewport_index,
7723             shader_resource_min_lod: self.shader_resource_min_lod && !other.shader_resource_min_lod,
7724             shader_resource_residency: self.shader_resource_residency
7725                 && !other.shader_resource_residency,
7726             shader_sample_rate_interpolation_functions: self
7727                 .shader_sample_rate_interpolation_functions
7728                 && !other.shader_sample_rate_interpolation_functions,
7729             shader_sampled_image_array_dynamic_indexing: self
7730                 .shader_sampled_image_array_dynamic_indexing
7731                 && !other.shader_sampled_image_array_dynamic_indexing,
7732             shader_sampled_image_array_non_uniform_indexing: self
7733                 .shader_sampled_image_array_non_uniform_indexing
7734                 && !other.shader_sampled_image_array_non_uniform_indexing,
7735             shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add
7736                 && !other.shader_shared_float16_atomic_add,
7737             shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max
7738                 && !other.shader_shared_float16_atomic_min_max,
7739             shader_shared_float16_atomics: self.shader_shared_float16_atomics
7740                 && !other.shader_shared_float16_atomics,
7741             shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add
7742                 && !other.shader_shared_float32_atomic_add,
7743             shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max
7744                 && !other.shader_shared_float32_atomic_min_max,
7745             shader_shared_float32_atomics: self.shader_shared_float32_atomics
7746                 && !other.shader_shared_float32_atomics,
7747             shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add
7748                 && !other.shader_shared_float64_atomic_add,
7749             shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max
7750                 && !other.shader_shared_float64_atomic_min_max,
7751             shader_shared_float64_atomics: self.shader_shared_float64_atomics
7752                 && !other.shader_shared_float64_atomics,
7753             shader_shared_int64_atomics: self.shader_shared_int64_atomics
7754                 && !other.shader_shared_int64_atomics,
7755             shader_sm_builtins: self.shader_sm_builtins && !other.shader_sm_builtins,
7756             shader_storage_buffer_array_dynamic_indexing: self
7757                 .shader_storage_buffer_array_dynamic_indexing
7758                 && !other.shader_storage_buffer_array_dynamic_indexing,
7759             shader_storage_buffer_array_non_uniform_indexing: self
7760                 .shader_storage_buffer_array_non_uniform_indexing
7761                 && !other.shader_storage_buffer_array_non_uniform_indexing,
7762             shader_storage_image_array_dynamic_indexing: self
7763                 .shader_storage_image_array_dynamic_indexing
7764                 && !other.shader_storage_image_array_dynamic_indexing,
7765             shader_storage_image_array_non_uniform_indexing: self
7766                 .shader_storage_image_array_non_uniform_indexing
7767                 && !other.shader_storage_image_array_non_uniform_indexing,
7768             shader_storage_image_extended_formats: self.shader_storage_image_extended_formats
7769                 && !other.shader_storage_image_extended_formats,
7770             shader_storage_image_multisample: self.shader_storage_image_multisample
7771                 && !other.shader_storage_image_multisample,
7772             shader_storage_image_read_without_format: self.shader_storage_image_read_without_format
7773                 && !other.shader_storage_image_read_without_format,
7774             shader_storage_image_write_without_format: self
7775                 .shader_storage_image_write_without_format
7776                 && !other.shader_storage_image_write_without_format,
7777             shader_storage_texel_buffer_array_dynamic_indexing: self
7778                 .shader_storage_texel_buffer_array_dynamic_indexing
7779                 && !other.shader_storage_texel_buffer_array_dynamic_indexing,
7780             shader_storage_texel_buffer_array_non_uniform_indexing: self
7781                 .shader_storage_texel_buffer_array_non_uniform_indexing
7782                 && !other.shader_storage_texel_buffer_array_non_uniform_indexing,
7783             shader_subgroup_clock: self.shader_subgroup_clock && !other.shader_subgroup_clock,
7784             shader_subgroup_extended_types: self.shader_subgroup_extended_types
7785                 && !other.shader_subgroup_extended_types,
7786             shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow
7787                 && !other.shader_subgroup_uniform_control_flow,
7788             shader_terminate_invocation: self.shader_terminate_invocation
7789                 && !other.shader_terminate_invocation,
7790             shader_tessellation_and_geometry_point_size: self
7791                 .shader_tessellation_and_geometry_point_size
7792                 && !other.shader_tessellation_and_geometry_point_size,
7793             shader_uniform_buffer_array_dynamic_indexing: self
7794                 .shader_uniform_buffer_array_dynamic_indexing
7795                 && !other.shader_uniform_buffer_array_dynamic_indexing,
7796             shader_uniform_buffer_array_non_uniform_indexing: self
7797                 .shader_uniform_buffer_array_non_uniform_indexing
7798                 && !other.shader_uniform_buffer_array_non_uniform_indexing,
7799             shader_uniform_texel_buffer_array_dynamic_indexing: self
7800                 .shader_uniform_texel_buffer_array_dynamic_indexing
7801                 && !other.shader_uniform_texel_buffer_array_dynamic_indexing,
7802             shader_uniform_texel_buffer_array_non_uniform_indexing: self
7803                 .shader_uniform_texel_buffer_array_non_uniform_indexing
7804                 && !other.shader_uniform_texel_buffer_array_non_uniform_indexing,
7805             shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory
7806                 && !other.shader_zero_initialize_workgroup_memory,
7807             shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order
7808                 && !other.shading_rate_coarse_sample_order,
7809             shading_rate_image: self.shading_rate_image && !other.shading_rate_image,
7810             smooth_lines: self.smooth_lines && !other.smooth_lines,
7811             sparse_binding: self.sparse_binding && !other.sparse_binding,
7812             sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add
7813                 && !other.sparse_image_float32_atomic_add,
7814             sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max
7815                 && !other.sparse_image_float32_atomic_min_max,
7816             sparse_image_float32_atomics: self.sparse_image_float32_atomics
7817                 && !other.sparse_image_float32_atomics,
7818             sparse_image_int64_atomics: self.sparse_image_int64_atomics
7819                 && !other.sparse_image_int64_atomics,
7820             sparse_residency16_samples: self.sparse_residency16_samples
7821                 && !other.sparse_residency16_samples,
7822             sparse_residency2_samples: self.sparse_residency2_samples
7823                 && !other.sparse_residency2_samples,
7824             sparse_residency4_samples: self.sparse_residency4_samples
7825                 && !other.sparse_residency4_samples,
7826             sparse_residency8_samples: self.sparse_residency8_samples
7827                 && !other.sparse_residency8_samples,
7828             sparse_residency_aliased: self.sparse_residency_aliased
7829                 && !other.sparse_residency_aliased,
7830             sparse_residency_buffer: self.sparse_residency_buffer && !other.sparse_residency_buffer,
7831             sparse_residency_image2_d: self.sparse_residency_image2_d
7832                 && !other.sparse_residency_image2_d,
7833             sparse_residency_image3_d: self.sparse_residency_image3_d
7834                 && !other.sparse_residency_image3_d,
7835             stippled_bresenham_lines: self.stippled_bresenham_lines
7836                 && !other.stippled_bresenham_lines,
7837             stippled_rectangular_lines: self.stippled_rectangular_lines
7838                 && !other.stippled_rectangular_lines,
7839             stippled_smooth_lines: self.stippled_smooth_lines && !other.stippled_smooth_lines,
7840             storage_buffer16_bit_access: self.storage_buffer16_bit_access
7841                 && !other.storage_buffer16_bit_access,
7842             storage_buffer8_bit_access: self.storage_buffer8_bit_access
7843                 && !other.storage_buffer8_bit_access,
7844             storage_input_output16: self.storage_input_output16 && !other.storage_input_output16,
7845             storage_push_constant16: self.storage_push_constant16 && !other.storage_push_constant16,
7846             storage_push_constant8: self.storage_push_constant8 && !other.storage_push_constant8,
7847             subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id
7848                 && !other.subgroup_broadcast_dynamic_id,
7849             subgroup_size_control: self.subgroup_size_control && !other.subgroup_size_control,
7850             subpass_merge_feedback: self.subpass_merge_feedback && !other.subpass_merge_feedback,
7851             subpass_shading: self.subpass_shading && !other.subpass_shading,
7852             supersample_fragment_shading_rates: self.supersample_fragment_shading_rates
7853                 && !other.supersample_fragment_shading_rates,
7854             swapchain_maintenance1: self.swapchain_maintenance1 && !other.swapchain_maintenance1,
7855             synchronization2: self.synchronization2 && !other.synchronization2,
7856             task_shader: self.task_shader && !other.task_shader,
7857             tessellation_isolines: self.tessellation_isolines && !other.tessellation_isolines,
7858             tessellation_point_mode: self.tessellation_point_mode && !other.tessellation_point_mode,
7859             tessellation_shader: self.tessellation_shader && !other.tessellation_shader,
7860             texel_buffer_alignment: self.texel_buffer_alignment && !other.texel_buffer_alignment,
7861             texture_block_match: self.texture_block_match && !other.texture_block_match,
7862             texture_box_filter: self.texture_box_filter && !other.texture_box_filter,
7863             texture_compression_astc_hdr: self.texture_compression_astc_hdr
7864                 && !other.texture_compression_astc_hdr,
7865             texture_compression_astc_ldr: self.texture_compression_astc_ldr
7866                 && !other.texture_compression_astc_ldr,
7867             texture_compression_bc: self.texture_compression_bc && !other.texture_compression_bc,
7868             texture_compression_etc2: self.texture_compression_etc2
7869                 && !other.texture_compression_etc2,
7870             texture_sample_weighted: self.texture_sample_weighted && !other.texture_sample_weighted,
7871             tile_properties: self.tile_properties && !other.tile_properties,
7872             timeline_semaphore: self.timeline_semaphore && !other.timeline_semaphore,
7873             transform_feedback: self.transform_feedback && !other.transform_feedback,
7874             transform_feedback_preserves_provoking_vertex: self
7875                 .transform_feedback_preserves_provoking_vertex
7876                 && !other.transform_feedback_preserves_provoking_vertex,
7877             triangle_fans: self.triangle_fans && !other.triangle_fans,
7878             uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access
7879                 && !other.uniform_and_storage_buffer16_bit_access,
7880             uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access
7881                 && !other.uniform_and_storage_buffer8_bit_access,
7882             uniform_buffer_standard_layout: self.uniform_buffer_standard_layout
7883                 && !other.uniform_buffer_standard_layout,
7884             variable_multisample_rate: self.variable_multisample_rate
7885                 && !other.variable_multisample_rate,
7886             variable_pointers: self.variable_pointers && !other.variable_pointers,
7887             variable_pointers_storage_buffer: self.variable_pointers_storage_buffer
7888                 && !other.variable_pointers_storage_buffer,
7889             vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride
7890                 && !other.vertex_attribute_access_beyond_stride,
7891             vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor
7892                 && !other.vertex_attribute_instance_rate_divisor,
7893             vertex_attribute_instance_rate_zero_divisor: self
7894                 .vertex_attribute_instance_rate_zero_divisor
7895                 && !other.vertex_attribute_instance_rate_zero_divisor,
7896             vertex_input_dynamic_state: self.vertex_input_dynamic_state
7897                 && !other.vertex_input_dynamic_state,
7898             vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics
7899                 && !other.vertex_pipeline_stores_and_atomics,
7900             vulkan_memory_model: self.vulkan_memory_model && !other.vulkan_memory_model,
7901             vulkan_memory_model_availability_visibility_chains: self
7902                 .vulkan_memory_model_availability_visibility_chains
7903                 && !other.vulkan_memory_model_availability_visibility_chains,
7904             vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope
7905                 && !other.vulkan_memory_model_device_scope,
7906             wide_lines: self.wide_lines && !other.wide_lines,
7907             workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout
7908                 && !other.workgroup_memory_explicit_layout,
7909             workgroup_memory_explicit_layout16_bit_access: self
7910                 .workgroup_memory_explicit_layout16_bit_access
7911                 && !other.workgroup_memory_explicit_layout16_bit_access,
7912             workgroup_memory_explicit_layout8_bit_access: self
7913                 .workgroup_memory_explicit_layout8_bit_access
7914                 && !other.workgroup_memory_explicit_layout8_bit_access,
7915             workgroup_memory_explicit_layout_scalar_block_layout: self
7916                 .workgroup_memory_explicit_layout_scalar_block_layout
7917                 && !other.workgroup_memory_explicit_layout_scalar_block_layout,
7918             ycbcr2plane444_formats: self.ycbcr2plane444_formats && !other.ycbcr2plane444_formats,
7919             ycbcr_image_arrays: self.ycbcr_image_arrays && !other.ycbcr_image_arrays,
7920             _ne: crate::NonExhaustive(()),
7921         }
7922     }
7923     #[doc = r" Returns the members set in `self` or `other`, but not both."]
7924     #[inline]
symmetric_difference(&self, other: &Self) -> Self7925     pub const fn symmetric_difference(&self, other: &Self) -> Self {
7926         Self {
7927             acceleration_structure: self.acceleration_structure ^ other.acceleration_structure,
7928             acceleration_structure_capture_replay: self.acceleration_structure_capture_replay
7929                 ^ other.acceleration_structure_capture_replay,
7930             acceleration_structure_host_commands: self.acceleration_structure_host_commands
7931                 ^ other.acceleration_structure_host_commands,
7932             acceleration_structure_indirect_build: self.acceleration_structure_indirect_build
7933                 ^ other.acceleration_structure_indirect_build,
7934             advanced_blend_coherent_operations: self.advanced_blend_coherent_operations
7935                 ^ other.advanced_blend_coherent_operations,
7936             alpha_to_one: self.alpha_to_one ^ other.alpha_to_one,
7937             amigo_profiling: self.amigo_profiling ^ other.amigo_profiling,
7938             attachment_feedback_loop_layout: self.attachment_feedback_loop_layout
7939                 ^ other.attachment_feedback_loop_layout,
7940             attachment_fragment_shading_rate: self.attachment_fragment_shading_rate
7941                 ^ other.attachment_fragment_shading_rate,
7942             border_color_swizzle: self.border_color_swizzle ^ other.border_color_swizzle,
7943             border_color_swizzle_from_image: self.border_color_swizzle_from_image
7944                 ^ other.border_color_swizzle_from_image,
7945             bresenham_lines: self.bresenham_lines ^ other.bresenham_lines,
7946             buffer_device_address: self.buffer_device_address ^ other.buffer_device_address,
7947             buffer_device_address_capture_replay: self.buffer_device_address_capture_replay
7948                 ^ other.buffer_device_address_capture_replay,
7949             buffer_device_address_multi_device: self.buffer_device_address_multi_device
7950                 ^ other.buffer_device_address_multi_device,
7951             color_write_enable: self.color_write_enable ^ other.color_write_enable,
7952             compute_derivative_group_linear: self.compute_derivative_group_linear
7953                 ^ other.compute_derivative_group_linear,
7954             compute_derivative_group_quads: self.compute_derivative_group_quads
7955                 ^ other.compute_derivative_group_quads,
7956             compute_full_subgroups: self.compute_full_subgroups ^ other.compute_full_subgroups,
7957             conditional_rendering: self.conditional_rendering ^ other.conditional_rendering,
7958             constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors
7959                 ^ other.constant_alpha_color_blend_factors,
7960             cooperative_matrix: self.cooperative_matrix ^ other.cooperative_matrix,
7961             cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access
7962                 ^ other.cooperative_matrix_robust_buffer_access,
7963             corner_sampled_image: self.corner_sampled_image ^ other.corner_sampled_image,
7964             coverage_reduction_mode: self.coverage_reduction_mode ^ other.coverage_reduction_mode,
7965             custom_border_color_without_format: self.custom_border_color_without_format
7966                 ^ other.custom_border_color_without_format,
7967             custom_border_colors: self.custom_border_colors ^ other.custom_border_colors,
7968             decode_mode_shared_exponent: self.decode_mode_shared_exponent
7969                 ^ other.decode_mode_shared_exponent,
7970             dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing
7971                 ^ other.dedicated_allocation_image_aliasing,
7972             depth_bias_clamp: self.depth_bias_clamp ^ other.depth_bias_clamp,
7973             depth_bounds: self.depth_bounds ^ other.depth_bounds,
7974             depth_clamp: self.depth_clamp ^ other.depth_clamp,
7975             depth_clamp_zero_one: self.depth_clamp_zero_one ^ other.depth_clamp_zero_one,
7976             depth_clip_control: self.depth_clip_control ^ other.depth_clip_control,
7977             depth_clip_enable: self.depth_clip_enable ^ other.depth_clip_enable,
7978             descriptor_binding_acceleration_structure_update_after_bind: self
7979                 .descriptor_binding_acceleration_structure_update_after_bind
7980                 ^ other.descriptor_binding_acceleration_structure_update_after_bind,
7981             descriptor_binding_inline_uniform_block_update_after_bind: self
7982                 .descriptor_binding_inline_uniform_block_update_after_bind
7983                 ^ other.descriptor_binding_inline_uniform_block_update_after_bind,
7984             descriptor_binding_partially_bound: self.descriptor_binding_partially_bound
7985                 ^ other.descriptor_binding_partially_bound,
7986             descriptor_binding_sampled_image_update_after_bind: self
7987                 .descriptor_binding_sampled_image_update_after_bind
7988                 ^ other.descriptor_binding_sampled_image_update_after_bind,
7989             descriptor_binding_storage_buffer_update_after_bind: self
7990                 .descriptor_binding_storage_buffer_update_after_bind
7991                 ^ other.descriptor_binding_storage_buffer_update_after_bind,
7992             descriptor_binding_storage_image_update_after_bind: self
7993                 .descriptor_binding_storage_image_update_after_bind
7994                 ^ other.descriptor_binding_storage_image_update_after_bind,
7995             descriptor_binding_storage_texel_buffer_update_after_bind: self
7996                 .descriptor_binding_storage_texel_buffer_update_after_bind
7997                 ^ other.descriptor_binding_storage_texel_buffer_update_after_bind,
7998             descriptor_binding_uniform_buffer_update_after_bind: self
7999                 .descriptor_binding_uniform_buffer_update_after_bind
8000                 ^ other.descriptor_binding_uniform_buffer_update_after_bind,
8001             descriptor_binding_uniform_texel_buffer_update_after_bind: self
8002                 .descriptor_binding_uniform_texel_buffer_update_after_bind
8003                 ^ other.descriptor_binding_uniform_texel_buffer_update_after_bind,
8004             descriptor_binding_update_unused_while_pending: self
8005                 .descriptor_binding_update_unused_while_pending
8006                 ^ other.descriptor_binding_update_unused_while_pending,
8007             descriptor_binding_variable_descriptor_count: self
8008                 .descriptor_binding_variable_descriptor_count
8009                 ^ other.descriptor_binding_variable_descriptor_count,
8010             descriptor_buffer: self.descriptor_buffer ^ other.descriptor_buffer,
8011             descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay
8012                 ^ other.descriptor_buffer_capture_replay,
8013             descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored
8014                 ^ other.descriptor_buffer_image_layout_ignored,
8015             descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors
8016                 ^ other.descriptor_buffer_push_descriptors,
8017             descriptor_indexing: self.descriptor_indexing ^ other.descriptor_indexing,
8018             descriptor_set_host_mapping: self.descriptor_set_host_mapping
8019                 ^ other.descriptor_set_host_mapping,
8020             device_coherent_memory: self.device_coherent_memory ^ other.device_coherent_memory,
8021             device_fault: self.device_fault ^ other.device_fault,
8022             device_fault_vendor_binary: self.device_fault_vendor_binary
8023                 ^ other.device_fault_vendor_binary,
8024             device_generated_commands: self.device_generated_commands
8025                 ^ other.device_generated_commands,
8026             device_memory_report: self.device_memory_report ^ other.device_memory_report,
8027             diagnostics_config: self.diagnostics_config ^ other.diagnostics_config,
8028             draw_indirect_count: self.draw_indirect_count ^ other.draw_indirect_count,
8029             draw_indirect_first_instance: self.draw_indirect_first_instance
8030                 ^ other.draw_indirect_first_instance,
8031             dual_src_blend: self.dual_src_blend ^ other.dual_src_blend,
8032             dynamic_rendering: self.dynamic_rendering ^ other.dynamic_rendering,
8033             events: self.events ^ other.events,
8034             exclusive_scissor: self.exclusive_scissor ^ other.exclusive_scissor,
8035             extended_dynamic_state: self.extended_dynamic_state ^ other.extended_dynamic_state,
8036             extended_dynamic_state2: self.extended_dynamic_state2 ^ other.extended_dynamic_state2,
8037             extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op
8038                 ^ other.extended_dynamic_state2_logic_op,
8039             extended_dynamic_state2_patch_control_points: self
8040                 .extended_dynamic_state2_patch_control_points
8041                 ^ other.extended_dynamic_state2_patch_control_points,
8042             extended_dynamic_state3_alpha_to_coverage_enable: self
8043                 .extended_dynamic_state3_alpha_to_coverage_enable
8044                 ^ other.extended_dynamic_state3_alpha_to_coverage_enable,
8045             extended_dynamic_state3_alpha_to_one_enable: self
8046                 .extended_dynamic_state3_alpha_to_one_enable
8047                 ^ other.extended_dynamic_state3_alpha_to_one_enable,
8048             extended_dynamic_state3_color_blend_advanced: self
8049                 .extended_dynamic_state3_color_blend_advanced
8050                 ^ other.extended_dynamic_state3_color_blend_advanced,
8051             extended_dynamic_state3_color_blend_enable: self
8052                 .extended_dynamic_state3_color_blend_enable
8053                 ^ other.extended_dynamic_state3_color_blend_enable,
8054             extended_dynamic_state3_color_blend_equation: self
8055                 .extended_dynamic_state3_color_blend_equation
8056                 ^ other.extended_dynamic_state3_color_blend_equation,
8057             extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask
8058                 ^ other.extended_dynamic_state3_color_write_mask,
8059             extended_dynamic_state3_conservative_rasterization_mode: self
8060                 .extended_dynamic_state3_conservative_rasterization_mode
8061                 ^ other.extended_dynamic_state3_conservative_rasterization_mode,
8062             extended_dynamic_state3_coverage_modulation_mode: self
8063                 .extended_dynamic_state3_coverage_modulation_mode
8064                 ^ other.extended_dynamic_state3_coverage_modulation_mode,
8065             extended_dynamic_state3_coverage_modulation_table: self
8066                 .extended_dynamic_state3_coverage_modulation_table
8067                 ^ other.extended_dynamic_state3_coverage_modulation_table,
8068             extended_dynamic_state3_coverage_modulation_table_enable: self
8069                 .extended_dynamic_state3_coverage_modulation_table_enable
8070                 ^ other.extended_dynamic_state3_coverage_modulation_table_enable,
8071             extended_dynamic_state3_coverage_reduction_mode: self
8072                 .extended_dynamic_state3_coverage_reduction_mode
8073                 ^ other.extended_dynamic_state3_coverage_reduction_mode,
8074             extended_dynamic_state3_coverage_to_color_enable: self
8075                 .extended_dynamic_state3_coverage_to_color_enable
8076                 ^ other.extended_dynamic_state3_coverage_to_color_enable,
8077             extended_dynamic_state3_coverage_to_color_location: self
8078                 .extended_dynamic_state3_coverage_to_color_location
8079                 ^ other.extended_dynamic_state3_coverage_to_color_location,
8080             extended_dynamic_state3_depth_clamp_enable: self
8081                 .extended_dynamic_state3_depth_clamp_enable
8082                 ^ other.extended_dynamic_state3_depth_clamp_enable,
8083             extended_dynamic_state3_depth_clip_enable: self
8084                 .extended_dynamic_state3_depth_clip_enable
8085                 ^ other.extended_dynamic_state3_depth_clip_enable,
8086             extended_dynamic_state3_depth_clip_negative_one_to_one: self
8087                 .extended_dynamic_state3_depth_clip_negative_one_to_one
8088                 ^ other.extended_dynamic_state3_depth_clip_negative_one_to_one,
8089             extended_dynamic_state3_extra_primitive_overestimation_size: self
8090                 .extended_dynamic_state3_extra_primitive_overestimation_size
8091                 ^ other.extended_dynamic_state3_extra_primitive_overestimation_size,
8092             extended_dynamic_state3_line_rasterization_mode: self
8093                 .extended_dynamic_state3_line_rasterization_mode
8094                 ^ other.extended_dynamic_state3_line_rasterization_mode,
8095             extended_dynamic_state3_line_stipple_enable: self
8096                 .extended_dynamic_state3_line_stipple_enable
8097                 ^ other.extended_dynamic_state3_line_stipple_enable,
8098             extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable
8099                 ^ other.extended_dynamic_state3_logic_op_enable,
8100             extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode
8101                 ^ other.extended_dynamic_state3_polygon_mode,
8102             extended_dynamic_state3_provoking_vertex_mode: self
8103                 .extended_dynamic_state3_provoking_vertex_mode
8104                 ^ other.extended_dynamic_state3_provoking_vertex_mode,
8105             extended_dynamic_state3_rasterization_samples: self
8106                 .extended_dynamic_state3_rasterization_samples
8107                 ^ other.extended_dynamic_state3_rasterization_samples,
8108             extended_dynamic_state3_rasterization_stream: self
8109                 .extended_dynamic_state3_rasterization_stream
8110                 ^ other.extended_dynamic_state3_rasterization_stream,
8111             extended_dynamic_state3_representative_fragment_test_enable: self
8112                 .extended_dynamic_state3_representative_fragment_test_enable
8113                 ^ other.extended_dynamic_state3_representative_fragment_test_enable,
8114             extended_dynamic_state3_sample_locations_enable: self
8115                 .extended_dynamic_state3_sample_locations_enable
8116                 ^ other.extended_dynamic_state3_sample_locations_enable,
8117             extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask
8118                 ^ other.extended_dynamic_state3_sample_mask,
8119             extended_dynamic_state3_shading_rate_image_enable: self
8120                 .extended_dynamic_state3_shading_rate_image_enable
8121                 ^ other.extended_dynamic_state3_shading_rate_image_enable,
8122             extended_dynamic_state3_tessellation_domain_origin: self
8123                 .extended_dynamic_state3_tessellation_domain_origin
8124                 ^ other.extended_dynamic_state3_tessellation_domain_origin,
8125             extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle
8126                 ^ other.extended_dynamic_state3_viewport_swizzle,
8127             extended_dynamic_state3_viewport_w_scaling_enable: self
8128                 .extended_dynamic_state3_viewport_w_scaling_enable
8129                 ^ other.extended_dynamic_state3_viewport_w_scaling_enable,
8130             external_memory_rdma: self.external_memory_rdma ^ other.external_memory_rdma,
8131             fill_mode_non_solid: self.fill_mode_non_solid ^ other.fill_mode_non_solid,
8132             format_a4b4g4r4: self.format_a4b4g4r4 ^ other.format_a4b4g4r4,
8133             format_a4r4g4b4: self.format_a4r4g4b4 ^ other.format_a4r4g4b4,
8134             format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler
8135                 ^ other.format_rgba10x6_without_y_cb_cr_sampler,
8136             fragment_density_map: self.fragment_density_map ^ other.fragment_density_map,
8137             fragment_density_map_deferred: self.fragment_density_map_deferred
8138                 ^ other.fragment_density_map_deferred,
8139             fragment_density_map_dynamic: self.fragment_density_map_dynamic
8140                 ^ other.fragment_density_map_dynamic,
8141             fragment_density_map_non_subsampled_images: self
8142                 .fragment_density_map_non_subsampled_images
8143                 ^ other.fragment_density_map_non_subsampled_images,
8144             fragment_density_map_offset: self.fragment_density_map_offset
8145                 ^ other.fragment_density_map_offset,
8146             fragment_shader_barycentric: self.fragment_shader_barycentric
8147                 ^ other.fragment_shader_barycentric,
8148             fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock
8149                 ^ other.fragment_shader_pixel_interlock,
8150             fragment_shader_sample_interlock: self.fragment_shader_sample_interlock
8151                 ^ other.fragment_shader_sample_interlock,
8152             fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock
8153                 ^ other.fragment_shader_shading_rate_interlock,
8154             fragment_shading_rate_enums: self.fragment_shading_rate_enums
8155                 ^ other.fragment_shading_rate_enums,
8156             fragment_stores_and_atomics: self.fragment_stores_and_atomics
8157                 ^ other.fragment_stores_and_atomics,
8158             full_draw_index_uint32: self.full_draw_index_uint32 ^ other.full_draw_index_uint32,
8159             geometry_shader: self.geometry_shader ^ other.geometry_shader,
8160             geometry_streams: self.geometry_streams ^ other.geometry_streams,
8161             global_priority_query: self.global_priority_query ^ other.global_priority_query,
8162             graphics_pipeline_library: self.graphics_pipeline_library
8163                 ^ other.graphics_pipeline_library,
8164             host_query_reset: self.host_query_reset ^ other.host_query_reset,
8165             image2_d_view_of3_d: self.image2_d_view_of3_d ^ other.image2_d_view_of3_d,
8166             image_compression_control: self.image_compression_control
8167                 ^ other.image_compression_control,
8168             image_compression_control_swapchain: self.image_compression_control_swapchain
8169                 ^ other.image_compression_control_swapchain,
8170             image_cube_array: self.image_cube_array ^ other.image_cube_array,
8171             image_footprint: self.image_footprint ^ other.image_footprint,
8172             image_view2_d_on3_d_image: self.image_view2_d_on3_d_image
8173                 ^ other.image_view2_d_on3_d_image,
8174             image_view_format_reinterpretation: self.image_view_format_reinterpretation
8175                 ^ other.image_view_format_reinterpretation,
8176             image_view_format_swizzle: self.image_view_format_swizzle
8177                 ^ other.image_view_format_swizzle,
8178             imageless_framebuffer: self.imageless_framebuffer ^ other.imageless_framebuffer,
8179             independent_blend: self.independent_blend ^ other.independent_blend,
8180             index_type_uint8: self.index_type_uint8 ^ other.index_type_uint8,
8181             indirect_copy: self.indirect_copy ^ other.indirect_copy,
8182             inherited_conditional_rendering: self.inherited_conditional_rendering
8183                 ^ other.inherited_conditional_rendering,
8184             inherited_queries: self.inherited_queries ^ other.inherited_queries,
8185             inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d
8186                 ^ other.inherited_viewport_scissor2_d,
8187             inline_uniform_block: self.inline_uniform_block ^ other.inline_uniform_block,
8188             invocation_mask: self.invocation_mask ^ other.invocation_mask,
8189             large_points: self.large_points ^ other.large_points,
8190             legacy_dithering: self.legacy_dithering ^ other.legacy_dithering,
8191             linear_color_attachment: self.linear_color_attachment ^ other.linear_color_attachment,
8192             logic_op: self.logic_op ^ other.logic_op,
8193             maintenance4: self.maintenance4 ^ other.maintenance4,
8194             memory_decompression: self.memory_decompression ^ other.memory_decompression,
8195             memory_priority: self.memory_priority ^ other.memory_priority,
8196             mesh_shader: self.mesh_shader ^ other.mesh_shader,
8197             mesh_shader_queries: self.mesh_shader_queries ^ other.mesh_shader_queries,
8198             micromap: self.micromap ^ other.micromap,
8199             micromap_capture_replay: self.micromap_capture_replay ^ other.micromap_capture_replay,
8200             micromap_host_commands: self.micromap_host_commands ^ other.micromap_host_commands,
8201             min_lod: self.min_lod ^ other.min_lod,
8202             multi_draw: self.multi_draw ^ other.multi_draw,
8203             multi_draw_indirect: self.multi_draw_indirect ^ other.multi_draw_indirect,
8204             multi_viewport: self.multi_viewport ^ other.multi_viewport,
8205             multisample_array_image: self.multisample_array_image ^ other.multisample_array_image,
8206             multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled
8207                 ^ other.multisampled_render_to_single_sampled,
8208             multiview: self.multiview ^ other.multiview,
8209             multiview_geometry_shader: self.multiview_geometry_shader
8210                 ^ other.multiview_geometry_shader,
8211             multiview_mesh_shader: self.multiview_mesh_shader ^ other.multiview_mesh_shader,
8212             multiview_per_view_viewports: self.multiview_per_view_viewports
8213                 ^ other.multiview_per_view_viewports,
8214             multiview_tessellation_shader: self.multiview_tessellation_shader
8215                 ^ other.multiview_tessellation_shader,
8216             mutable_comparison_samplers: self.mutable_comparison_samplers
8217                 ^ other.mutable_comparison_samplers,
8218             mutable_descriptor_type: self.mutable_descriptor_type ^ other.mutable_descriptor_type,
8219             no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates
8220                 ^ other.no_invocation_fragment_shading_rates,
8221             non_seamless_cube_map: self.non_seamless_cube_map ^ other.non_seamless_cube_map,
8222             null_descriptor: self.null_descriptor ^ other.null_descriptor,
8223             occlusion_query_precise: self.occlusion_query_precise ^ other.occlusion_query_precise,
8224             optical_flow: self.optical_flow ^ other.optical_flow,
8225             pageable_device_local_memory: self.pageable_device_local_memory
8226                 ^ other.pageable_device_local_memory,
8227             performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools
8228                 ^ other.performance_counter_multiple_query_pools,
8229             performance_counter_query_pools: self.performance_counter_query_pools
8230                 ^ other.performance_counter_query_pools,
8231             pipeline_creation_cache_control: self.pipeline_creation_cache_control
8232                 ^ other.pipeline_creation_cache_control,
8233             pipeline_executable_info: self.pipeline_executable_info
8234                 ^ other.pipeline_executable_info,
8235             pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate
8236                 ^ other.pipeline_fragment_shading_rate,
8237             pipeline_properties_identifier: self.pipeline_properties_identifier
8238                 ^ other.pipeline_properties_identifier,
8239             pipeline_protected_access: self.pipeline_protected_access
8240                 ^ other.pipeline_protected_access,
8241             pipeline_robustness: self.pipeline_robustness ^ other.pipeline_robustness,
8242             pipeline_statistics_query: self.pipeline_statistics_query
8243                 ^ other.pipeline_statistics_query,
8244             point_polygons: self.point_polygons ^ other.point_polygons,
8245             present_barrier: self.present_barrier ^ other.present_barrier,
8246             present_id: self.present_id ^ other.present_id,
8247             present_wait: self.present_wait ^ other.present_wait,
8248             primitive_fragment_shading_rate: self.primitive_fragment_shading_rate
8249                 ^ other.primitive_fragment_shading_rate,
8250             primitive_fragment_shading_rate_mesh_shader: self
8251                 .primitive_fragment_shading_rate_mesh_shader
8252                 ^ other.primitive_fragment_shading_rate_mesh_shader,
8253             primitive_topology_list_restart: self.primitive_topology_list_restart
8254                 ^ other.primitive_topology_list_restart,
8255             primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart
8256                 ^ other.primitive_topology_patch_list_restart,
8257             primitives_generated_query: self.primitives_generated_query
8258                 ^ other.primitives_generated_query,
8259             primitives_generated_query_with_non_zero_streams: self
8260                 .primitives_generated_query_with_non_zero_streams
8261                 ^ other.primitives_generated_query_with_non_zero_streams,
8262             primitives_generated_query_with_rasterizer_discard: self
8263                 .primitives_generated_query_with_rasterizer_discard
8264                 ^ other.primitives_generated_query_with_rasterizer_discard,
8265             private_data: self.private_data ^ other.private_data,
8266             protected_memory: self.protected_memory ^ other.protected_memory,
8267             provoking_vertex_last: self.provoking_vertex_last ^ other.provoking_vertex_last,
8268             rasterization_order_color_attachment_access: self
8269                 .rasterization_order_color_attachment_access
8270                 ^ other.rasterization_order_color_attachment_access,
8271             rasterization_order_depth_attachment_access: self
8272                 .rasterization_order_depth_attachment_access
8273                 ^ other.rasterization_order_depth_attachment_access,
8274             rasterization_order_stencil_attachment_access: self
8275                 .rasterization_order_stencil_attachment_access
8276                 ^ other.rasterization_order_stencil_attachment_access,
8277             ray_query: self.ray_query ^ other.ray_query,
8278             ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder
8279                 ^ other.ray_tracing_invocation_reorder,
8280             ray_tracing_maintenance1: self.ray_tracing_maintenance1
8281                 ^ other.ray_tracing_maintenance1,
8282             ray_tracing_motion_blur: self.ray_tracing_motion_blur ^ other.ray_tracing_motion_blur,
8283             ray_tracing_motion_blur_pipeline_trace_rays_indirect: self
8284                 .ray_tracing_motion_blur_pipeline_trace_rays_indirect
8285                 ^ other.ray_tracing_motion_blur_pipeline_trace_rays_indirect,
8286             ray_tracing_pipeline: self.ray_tracing_pipeline ^ other.ray_tracing_pipeline,
8287             ray_tracing_pipeline_shader_group_handle_capture_replay: self
8288                 .ray_tracing_pipeline_shader_group_handle_capture_replay
8289                 ^ other.ray_tracing_pipeline_shader_group_handle_capture_replay,
8290             ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self
8291                 .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
8292                 ^ other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed,
8293             ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect
8294                 ^ other.ray_tracing_pipeline_trace_rays_indirect,
8295             ray_tracing_pipeline_trace_rays_indirect2: self
8296                 .ray_tracing_pipeline_trace_rays_indirect2
8297                 ^ other.ray_tracing_pipeline_trace_rays_indirect2,
8298             ray_traversal_primitive_culling: self.ray_traversal_primitive_culling
8299                 ^ other.ray_traversal_primitive_culling,
8300             rectangular_lines: self.rectangular_lines ^ other.rectangular_lines,
8301             report_address_binding: self.report_address_binding ^ other.report_address_binding,
8302             representative_fragment_test: self.representative_fragment_test
8303                 ^ other.representative_fragment_test,
8304             robust_buffer_access: self.robust_buffer_access ^ other.robust_buffer_access,
8305             robust_buffer_access2: self.robust_buffer_access2 ^ other.robust_buffer_access2,
8306             robust_image_access: self.robust_image_access ^ other.robust_image_access,
8307             robust_image_access2: self.robust_image_access2 ^ other.robust_image_access2,
8308             runtime_descriptor_array: self.runtime_descriptor_array
8309                 ^ other.runtime_descriptor_array,
8310             sample_rate_shading: self.sample_rate_shading ^ other.sample_rate_shading,
8311             sampler2_d_view_of3_d: self.sampler2_d_view_of3_d ^ other.sampler2_d_view_of3_d,
8312             sampler_anisotropy: self.sampler_anisotropy ^ other.sampler_anisotropy,
8313             sampler_filter_minmax: self.sampler_filter_minmax ^ other.sampler_filter_minmax,
8314             sampler_mip_lod_bias: self.sampler_mip_lod_bias ^ other.sampler_mip_lod_bias,
8315             sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge
8316                 ^ other.sampler_mirror_clamp_to_edge,
8317             sampler_ycbcr_conversion: self.sampler_ycbcr_conversion
8318                 ^ other.sampler_ycbcr_conversion,
8319             scalar_block_layout: self.scalar_block_layout ^ other.scalar_block_layout,
8320             separate_depth_stencil_layouts: self.separate_depth_stencil_layouts
8321                 ^ other.separate_depth_stencil_layouts,
8322             separate_stencil_mask_ref: self.separate_stencil_mask_ref
8323                 ^ other.separate_stencil_mask_ref,
8324             shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add
8325                 ^ other.shader_buffer_float16_atomic_add,
8326             shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max
8327                 ^ other.shader_buffer_float16_atomic_min_max,
8328             shader_buffer_float16_atomics: self.shader_buffer_float16_atomics
8329                 ^ other.shader_buffer_float16_atomics,
8330             shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add
8331                 ^ other.shader_buffer_float32_atomic_add,
8332             shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max
8333                 ^ other.shader_buffer_float32_atomic_min_max,
8334             shader_buffer_float32_atomics: self.shader_buffer_float32_atomics
8335                 ^ other.shader_buffer_float32_atomics,
8336             shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add
8337                 ^ other.shader_buffer_float64_atomic_add,
8338             shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max
8339                 ^ other.shader_buffer_float64_atomic_min_max,
8340             shader_buffer_float64_atomics: self.shader_buffer_float64_atomics
8341                 ^ other.shader_buffer_float64_atomics,
8342             shader_buffer_int64_atomics: self.shader_buffer_int64_atomics
8343                 ^ other.shader_buffer_int64_atomics,
8344             shader_clip_distance: self.shader_clip_distance ^ other.shader_clip_distance,
8345             shader_core_builtins: self.shader_core_builtins ^ other.shader_core_builtins,
8346             shader_cull_distance: self.shader_cull_distance ^ other.shader_cull_distance,
8347             shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation
8348                 ^ other.shader_demote_to_helper_invocation,
8349             shader_device_clock: self.shader_device_clock ^ other.shader_device_clock,
8350             shader_draw_parameters: self.shader_draw_parameters ^ other.shader_draw_parameters,
8351             shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests
8352                 ^ other.shader_early_and_late_fragment_tests,
8353             shader_float16: self.shader_float16 ^ other.shader_float16,
8354             shader_float64: self.shader_float64 ^ other.shader_float64,
8355             shader_image_float32_atomic_add: self.shader_image_float32_atomic_add
8356                 ^ other.shader_image_float32_atomic_add,
8357             shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max
8358                 ^ other.shader_image_float32_atomic_min_max,
8359             shader_image_float32_atomics: self.shader_image_float32_atomics
8360                 ^ other.shader_image_float32_atomics,
8361             shader_image_gather_extended: self.shader_image_gather_extended
8362                 ^ other.shader_image_gather_extended,
8363             shader_image_int64_atomics: self.shader_image_int64_atomics
8364                 ^ other.shader_image_int64_atomics,
8365             shader_input_attachment_array_dynamic_indexing: self
8366                 .shader_input_attachment_array_dynamic_indexing
8367                 ^ other.shader_input_attachment_array_dynamic_indexing,
8368             shader_input_attachment_array_non_uniform_indexing: self
8369                 .shader_input_attachment_array_non_uniform_indexing
8370                 ^ other.shader_input_attachment_array_non_uniform_indexing,
8371             shader_int16: self.shader_int16 ^ other.shader_int16,
8372             shader_int64: self.shader_int64 ^ other.shader_int64,
8373             shader_int8: self.shader_int8 ^ other.shader_int8,
8374             shader_integer_dot_product: self.shader_integer_dot_product
8375                 ^ other.shader_integer_dot_product,
8376             shader_integer_functions2: self.shader_integer_functions2
8377                 ^ other.shader_integer_functions2,
8378             shader_module_identifier: self.shader_module_identifier
8379                 ^ other.shader_module_identifier,
8380             shader_output_layer: self.shader_output_layer ^ other.shader_output_layer,
8381             shader_output_viewport_index: self.shader_output_viewport_index
8382                 ^ other.shader_output_viewport_index,
8383             shader_resource_min_lod: self.shader_resource_min_lod ^ other.shader_resource_min_lod,
8384             shader_resource_residency: self.shader_resource_residency
8385                 ^ other.shader_resource_residency,
8386             shader_sample_rate_interpolation_functions: self
8387                 .shader_sample_rate_interpolation_functions
8388                 ^ other.shader_sample_rate_interpolation_functions,
8389             shader_sampled_image_array_dynamic_indexing: self
8390                 .shader_sampled_image_array_dynamic_indexing
8391                 ^ other.shader_sampled_image_array_dynamic_indexing,
8392             shader_sampled_image_array_non_uniform_indexing: self
8393                 .shader_sampled_image_array_non_uniform_indexing
8394                 ^ other.shader_sampled_image_array_non_uniform_indexing,
8395             shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add
8396                 ^ other.shader_shared_float16_atomic_add,
8397             shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max
8398                 ^ other.shader_shared_float16_atomic_min_max,
8399             shader_shared_float16_atomics: self.shader_shared_float16_atomics
8400                 ^ other.shader_shared_float16_atomics,
8401             shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add
8402                 ^ other.shader_shared_float32_atomic_add,
8403             shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max
8404                 ^ other.shader_shared_float32_atomic_min_max,
8405             shader_shared_float32_atomics: self.shader_shared_float32_atomics
8406                 ^ other.shader_shared_float32_atomics,
8407             shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add
8408                 ^ other.shader_shared_float64_atomic_add,
8409             shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max
8410                 ^ other.shader_shared_float64_atomic_min_max,
8411             shader_shared_float64_atomics: self.shader_shared_float64_atomics
8412                 ^ other.shader_shared_float64_atomics,
8413             shader_shared_int64_atomics: self.shader_shared_int64_atomics
8414                 ^ other.shader_shared_int64_atomics,
8415             shader_sm_builtins: self.shader_sm_builtins ^ other.shader_sm_builtins,
8416             shader_storage_buffer_array_dynamic_indexing: self
8417                 .shader_storage_buffer_array_dynamic_indexing
8418                 ^ other.shader_storage_buffer_array_dynamic_indexing,
8419             shader_storage_buffer_array_non_uniform_indexing: self
8420                 .shader_storage_buffer_array_non_uniform_indexing
8421                 ^ other.shader_storage_buffer_array_non_uniform_indexing,
8422             shader_storage_image_array_dynamic_indexing: self
8423                 .shader_storage_image_array_dynamic_indexing
8424                 ^ other.shader_storage_image_array_dynamic_indexing,
8425             shader_storage_image_array_non_uniform_indexing: self
8426                 .shader_storage_image_array_non_uniform_indexing
8427                 ^ other.shader_storage_image_array_non_uniform_indexing,
8428             shader_storage_image_extended_formats: self.shader_storage_image_extended_formats
8429                 ^ other.shader_storage_image_extended_formats,
8430             shader_storage_image_multisample: self.shader_storage_image_multisample
8431                 ^ other.shader_storage_image_multisample,
8432             shader_storage_image_read_without_format: self.shader_storage_image_read_without_format
8433                 ^ other.shader_storage_image_read_without_format,
8434             shader_storage_image_write_without_format: self
8435                 .shader_storage_image_write_without_format
8436                 ^ other.shader_storage_image_write_without_format,
8437             shader_storage_texel_buffer_array_dynamic_indexing: self
8438                 .shader_storage_texel_buffer_array_dynamic_indexing
8439                 ^ other.shader_storage_texel_buffer_array_dynamic_indexing,
8440             shader_storage_texel_buffer_array_non_uniform_indexing: self
8441                 .shader_storage_texel_buffer_array_non_uniform_indexing
8442                 ^ other.shader_storage_texel_buffer_array_non_uniform_indexing,
8443             shader_subgroup_clock: self.shader_subgroup_clock ^ other.shader_subgroup_clock,
8444             shader_subgroup_extended_types: self.shader_subgroup_extended_types
8445                 ^ other.shader_subgroup_extended_types,
8446             shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow
8447                 ^ other.shader_subgroup_uniform_control_flow,
8448             shader_terminate_invocation: self.shader_terminate_invocation
8449                 ^ other.shader_terminate_invocation,
8450             shader_tessellation_and_geometry_point_size: self
8451                 .shader_tessellation_and_geometry_point_size
8452                 ^ other.shader_tessellation_and_geometry_point_size,
8453             shader_uniform_buffer_array_dynamic_indexing: self
8454                 .shader_uniform_buffer_array_dynamic_indexing
8455                 ^ other.shader_uniform_buffer_array_dynamic_indexing,
8456             shader_uniform_buffer_array_non_uniform_indexing: self
8457                 .shader_uniform_buffer_array_non_uniform_indexing
8458                 ^ other.shader_uniform_buffer_array_non_uniform_indexing,
8459             shader_uniform_texel_buffer_array_dynamic_indexing: self
8460                 .shader_uniform_texel_buffer_array_dynamic_indexing
8461                 ^ other.shader_uniform_texel_buffer_array_dynamic_indexing,
8462             shader_uniform_texel_buffer_array_non_uniform_indexing: self
8463                 .shader_uniform_texel_buffer_array_non_uniform_indexing
8464                 ^ other.shader_uniform_texel_buffer_array_non_uniform_indexing,
8465             shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory
8466                 ^ other.shader_zero_initialize_workgroup_memory,
8467             shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order
8468                 ^ other.shading_rate_coarse_sample_order,
8469             shading_rate_image: self.shading_rate_image ^ other.shading_rate_image,
8470             smooth_lines: self.smooth_lines ^ other.smooth_lines,
8471             sparse_binding: self.sparse_binding ^ other.sparse_binding,
8472             sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add
8473                 ^ other.sparse_image_float32_atomic_add,
8474             sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max
8475                 ^ other.sparse_image_float32_atomic_min_max,
8476             sparse_image_float32_atomics: self.sparse_image_float32_atomics
8477                 ^ other.sparse_image_float32_atomics,
8478             sparse_image_int64_atomics: self.sparse_image_int64_atomics
8479                 ^ other.sparse_image_int64_atomics,
8480             sparse_residency16_samples: self.sparse_residency16_samples
8481                 ^ other.sparse_residency16_samples,
8482             sparse_residency2_samples: self.sparse_residency2_samples
8483                 ^ other.sparse_residency2_samples,
8484             sparse_residency4_samples: self.sparse_residency4_samples
8485                 ^ other.sparse_residency4_samples,
8486             sparse_residency8_samples: self.sparse_residency8_samples
8487                 ^ other.sparse_residency8_samples,
8488             sparse_residency_aliased: self.sparse_residency_aliased
8489                 ^ other.sparse_residency_aliased,
8490             sparse_residency_buffer: self.sparse_residency_buffer ^ other.sparse_residency_buffer,
8491             sparse_residency_image2_d: self.sparse_residency_image2_d
8492                 ^ other.sparse_residency_image2_d,
8493             sparse_residency_image3_d: self.sparse_residency_image3_d
8494                 ^ other.sparse_residency_image3_d,
8495             stippled_bresenham_lines: self.stippled_bresenham_lines
8496                 ^ other.stippled_bresenham_lines,
8497             stippled_rectangular_lines: self.stippled_rectangular_lines
8498                 ^ other.stippled_rectangular_lines,
8499             stippled_smooth_lines: self.stippled_smooth_lines ^ other.stippled_smooth_lines,
8500             storage_buffer16_bit_access: self.storage_buffer16_bit_access
8501                 ^ other.storage_buffer16_bit_access,
8502             storage_buffer8_bit_access: self.storage_buffer8_bit_access
8503                 ^ other.storage_buffer8_bit_access,
8504             storage_input_output16: self.storage_input_output16 ^ other.storage_input_output16,
8505             storage_push_constant16: self.storage_push_constant16 ^ other.storage_push_constant16,
8506             storage_push_constant8: self.storage_push_constant8 ^ other.storage_push_constant8,
8507             subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id
8508                 ^ other.subgroup_broadcast_dynamic_id,
8509             subgroup_size_control: self.subgroup_size_control ^ other.subgroup_size_control,
8510             subpass_merge_feedback: self.subpass_merge_feedback ^ other.subpass_merge_feedback,
8511             subpass_shading: self.subpass_shading ^ other.subpass_shading,
8512             supersample_fragment_shading_rates: self.supersample_fragment_shading_rates
8513                 ^ other.supersample_fragment_shading_rates,
8514             swapchain_maintenance1: self.swapchain_maintenance1 ^ other.swapchain_maintenance1,
8515             synchronization2: self.synchronization2 ^ other.synchronization2,
8516             task_shader: self.task_shader ^ other.task_shader,
8517             tessellation_isolines: self.tessellation_isolines ^ other.tessellation_isolines,
8518             tessellation_point_mode: self.tessellation_point_mode ^ other.tessellation_point_mode,
8519             tessellation_shader: self.tessellation_shader ^ other.tessellation_shader,
8520             texel_buffer_alignment: self.texel_buffer_alignment ^ other.texel_buffer_alignment,
8521             texture_block_match: self.texture_block_match ^ other.texture_block_match,
8522             texture_box_filter: self.texture_box_filter ^ other.texture_box_filter,
8523             texture_compression_astc_hdr: self.texture_compression_astc_hdr
8524                 ^ other.texture_compression_astc_hdr,
8525             texture_compression_astc_ldr: self.texture_compression_astc_ldr
8526                 ^ other.texture_compression_astc_ldr,
8527             texture_compression_bc: self.texture_compression_bc ^ other.texture_compression_bc,
8528             texture_compression_etc2: self.texture_compression_etc2
8529                 ^ other.texture_compression_etc2,
8530             texture_sample_weighted: self.texture_sample_weighted ^ other.texture_sample_weighted,
8531             tile_properties: self.tile_properties ^ other.tile_properties,
8532             timeline_semaphore: self.timeline_semaphore ^ other.timeline_semaphore,
8533             transform_feedback: self.transform_feedback ^ other.transform_feedback,
8534             transform_feedback_preserves_provoking_vertex: self
8535                 .transform_feedback_preserves_provoking_vertex
8536                 ^ other.transform_feedback_preserves_provoking_vertex,
8537             triangle_fans: self.triangle_fans ^ other.triangle_fans,
8538             uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access
8539                 ^ other.uniform_and_storage_buffer16_bit_access,
8540             uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access
8541                 ^ other.uniform_and_storage_buffer8_bit_access,
8542             uniform_buffer_standard_layout: self.uniform_buffer_standard_layout
8543                 ^ other.uniform_buffer_standard_layout,
8544             variable_multisample_rate: self.variable_multisample_rate
8545                 ^ other.variable_multisample_rate,
8546             variable_pointers: self.variable_pointers ^ other.variable_pointers,
8547             variable_pointers_storage_buffer: self.variable_pointers_storage_buffer
8548                 ^ other.variable_pointers_storage_buffer,
8549             vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride
8550                 ^ other.vertex_attribute_access_beyond_stride,
8551             vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor
8552                 ^ other.vertex_attribute_instance_rate_divisor,
8553             vertex_attribute_instance_rate_zero_divisor: self
8554                 .vertex_attribute_instance_rate_zero_divisor
8555                 ^ other.vertex_attribute_instance_rate_zero_divisor,
8556             vertex_input_dynamic_state: self.vertex_input_dynamic_state
8557                 ^ other.vertex_input_dynamic_state,
8558             vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics
8559                 ^ other.vertex_pipeline_stores_and_atomics,
8560             vulkan_memory_model: self.vulkan_memory_model ^ other.vulkan_memory_model,
8561             vulkan_memory_model_availability_visibility_chains: self
8562                 .vulkan_memory_model_availability_visibility_chains
8563                 ^ other.vulkan_memory_model_availability_visibility_chains,
8564             vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope
8565                 ^ other.vulkan_memory_model_device_scope,
8566             wide_lines: self.wide_lines ^ other.wide_lines,
8567             workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout
8568                 ^ other.workgroup_memory_explicit_layout,
8569             workgroup_memory_explicit_layout16_bit_access: self
8570                 .workgroup_memory_explicit_layout16_bit_access
8571                 ^ other.workgroup_memory_explicit_layout16_bit_access,
8572             workgroup_memory_explicit_layout8_bit_access: self
8573                 .workgroup_memory_explicit_layout8_bit_access
8574                 ^ other.workgroup_memory_explicit_layout8_bit_access,
8575             workgroup_memory_explicit_layout_scalar_block_layout: self
8576                 .workgroup_memory_explicit_layout_scalar_block_layout
8577                 ^ other.workgroup_memory_explicit_layout_scalar_block_layout,
8578             ycbcr2plane444_formats: self.ycbcr2plane444_formats ^ other.ycbcr2plane444_formats,
8579             ycbcr_image_arrays: self.ycbcr_image_arrays ^ other.ycbcr_image_arrays,
8580             _ne: crate::NonExhaustive(()),
8581         }
8582     }
8583 }
8584 impl std::ops::BitAnd for Features {
8585     type Output = Features;
8586     #[inline]
bitand(self, rhs: Self) -> Self::Output8587     fn bitand(self, rhs: Self) -> Self::Output {
8588         self.intersection(&rhs)
8589     }
8590 }
8591 impl std::ops::BitAndAssign for Features {
8592     #[inline]
bitand_assign(&mut self, rhs: Self)8593     fn bitand_assign(&mut self, rhs: Self) {
8594         *self = self.intersection(&rhs);
8595     }
8596 }
8597 impl std::ops::BitOr for Features {
8598     type Output = Features;
8599     #[inline]
bitor(self, rhs: Self) -> Self::Output8600     fn bitor(self, rhs: Self) -> Self::Output {
8601         self.union(&rhs)
8602     }
8603 }
8604 impl std::ops::BitOrAssign for Features {
8605     #[inline]
bitor_assign(&mut self, rhs: Self)8606     fn bitor_assign(&mut self, rhs: Self) {
8607         *self = self.union(&rhs);
8608     }
8609 }
8610 impl std::ops::BitXor for Features {
8611     type Output = Features;
8612     #[inline]
bitxor(self, rhs: Self) -> Self::Output8613     fn bitxor(self, rhs: Self) -> Self::Output {
8614         self.symmetric_difference(&rhs)
8615     }
8616 }
8617 impl std::ops::BitXorAssign for Features {
8618     #[inline]
bitxor_assign(&mut self, rhs: Self)8619     fn bitxor_assign(&mut self, rhs: Self) {
8620         *self = self.symmetric_difference(&rhs);
8621     }
8622 }
8623 impl std::ops::Sub for Features {
8624     type Output = Features;
8625     #[inline]
sub(self, rhs: Self) -> Self::Output8626     fn sub(self, rhs: Self) -> Self::Output {
8627         self.difference(&rhs)
8628     }
8629 }
8630 impl std::ops::SubAssign for Features {
8631     #[inline]
sub_assign(&mut self, rhs: Self)8632     fn sub_assign(&mut self, rhs: Self) {
8633         *self = self.difference(&rhs);
8634     }
8635 }
8636 impl std::fmt::Debug for Features {
8637     #[allow(unused_assignments)]
fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error>8638     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
8639         write!(f, "[")?;
8640         let mut first = true;
8641         if self.acceleration_structure {
8642             if !first {
8643                 write!(f, ", ")?
8644             } else {
8645                 first = false;
8646             }
8647             f.write_str("accelerationStructure")?;
8648         }
8649         if self.acceleration_structure_capture_replay {
8650             if !first {
8651                 write!(f, ", ")?
8652             } else {
8653                 first = false;
8654             }
8655             f.write_str("accelerationStructureCaptureReplay")?;
8656         }
8657         if self.acceleration_structure_host_commands {
8658             if !first {
8659                 write!(f, ", ")?
8660             } else {
8661                 first = false;
8662             }
8663             f.write_str("accelerationStructureHostCommands")?;
8664         }
8665         if self.acceleration_structure_indirect_build {
8666             if !first {
8667                 write!(f, ", ")?
8668             } else {
8669                 first = false;
8670             }
8671             f.write_str("accelerationStructureIndirectBuild")?;
8672         }
8673         if self.advanced_blend_coherent_operations {
8674             if !first {
8675                 write!(f, ", ")?
8676             } else {
8677                 first = false;
8678             }
8679             f.write_str("advancedBlendCoherentOperations")?;
8680         }
8681         if self.alpha_to_one {
8682             if !first {
8683                 write!(f, ", ")?
8684             } else {
8685                 first = false;
8686             }
8687             f.write_str("alphaToOne")?;
8688         }
8689         if self.amigo_profiling {
8690             if !first {
8691                 write!(f, ", ")?
8692             } else {
8693                 first = false;
8694             }
8695             f.write_str("amigoProfiling")?;
8696         }
8697         if self.attachment_feedback_loop_layout {
8698             if !first {
8699                 write!(f, ", ")?
8700             } else {
8701                 first = false;
8702             }
8703             f.write_str("attachmentFeedbackLoopLayout")?;
8704         }
8705         if self.attachment_fragment_shading_rate {
8706             if !first {
8707                 write!(f, ", ")?
8708             } else {
8709                 first = false;
8710             }
8711             f.write_str("attachmentFragmentShadingRate")?;
8712         }
8713         if self.border_color_swizzle {
8714             if !first {
8715                 write!(f, ", ")?
8716             } else {
8717                 first = false;
8718             }
8719             f.write_str("borderColorSwizzle")?;
8720         }
8721         if self.border_color_swizzle_from_image {
8722             if !first {
8723                 write!(f, ", ")?
8724             } else {
8725                 first = false;
8726             }
8727             f.write_str("borderColorSwizzleFromImage")?;
8728         }
8729         if self.bresenham_lines {
8730             if !first {
8731                 write!(f, ", ")?
8732             } else {
8733                 first = false;
8734             }
8735             f.write_str("bresenhamLines")?;
8736         }
8737         if self.buffer_device_address {
8738             if !first {
8739                 write!(f, ", ")?
8740             } else {
8741                 first = false;
8742             }
8743             f.write_str("bufferDeviceAddress")?;
8744         }
8745         if self.buffer_device_address_capture_replay {
8746             if !first {
8747                 write!(f, ", ")?
8748             } else {
8749                 first = false;
8750             }
8751             f.write_str("bufferDeviceAddressCaptureReplay")?;
8752         }
8753         if self.buffer_device_address_multi_device {
8754             if !first {
8755                 write!(f, ", ")?
8756             } else {
8757                 first = false;
8758             }
8759             f.write_str("bufferDeviceAddressMultiDevice")?;
8760         }
8761         if self.color_write_enable {
8762             if !first {
8763                 write!(f, ", ")?
8764             } else {
8765                 first = false;
8766             }
8767             f.write_str("colorWriteEnable")?;
8768         }
8769         if self.compute_derivative_group_linear {
8770             if !first {
8771                 write!(f, ", ")?
8772             } else {
8773                 first = false;
8774             }
8775             f.write_str("computeDerivativeGroupLinear")?;
8776         }
8777         if self.compute_derivative_group_quads {
8778             if !first {
8779                 write!(f, ", ")?
8780             } else {
8781                 first = false;
8782             }
8783             f.write_str("computeDerivativeGroupQuads")?;
8784         }
8785         if self.compute_full_subgroups {
8786             if !first {
8787                 write!(f, ", ")?
8788             } else {
8789                 first = false;
8790             }
8791             f.write_str("computeFullSubgroups")?;
8792         }
8793         if self.conditional_rendering {
8794             if !first {
8795                 write!(f, ", ")?
8796             } else {
8797                 first = false;
8798             }
8799             f.write_str("conditionalRendering")?;
8800         }
8801         if self.constant_alpha_color_blend_factors {
8802             if !first {
8803                 write!(f, ", ")?
8804             } else {
8805                 first = false;
8806             }
8807             f.write_str("constantAlphaColorBlendFactors")?;
8808         }
8809         if self.cooperative_matrix {
8810             if !first {
8811                 write!(f, ", ")?
8812             } else {
8813                 first = false;
8814             }
8815             f.write_str("cooperativeMatrix")?;
8816         }
8817         if self.cooperative_matrix_robust_buffer_access {
8818             if !first {
8819                 write!(f, ", ")?
8820             } else {
8821                 first = false;
8822             }
8823             f.write_str("cooperativeMatrixRobustBufferAccess")?;
8824         }
8825         if self.corner_sampled_image {
8826             if !first {
8827                 write!(f, ", ")?
8828             } else {
8829                 first = false;
8830             }
8831             f.write_str("cornerSampledImage")?;
8832         }
8833         if self.coverage_reduction_mode {
8834             if !first {
8835                 write!(f, ", ")?
8836             } else {
8837                 first = false;
8838             }
8839             f.write_str("coverageReductionMode")?;
8840         }
8841         if self.custom_border_color_without_format {
8842             if !first {
8843                 write!(f, ", ")?
8844             } else {
8845                 first = false;
8846             }
8847             f.write_str("customBorderColorWithoutFormat")?;
8848         }
8849         if self.custom_border_colors {
8850             if !first {
8851                 write!(f, ", ")?
8852             } else {
8853                 first = false;
8854             }
8855             f.write_str("customBorderColors")?;
8856         }
8857         if self.decode_mode_shared_exponent {
8858             if !first {
8859                 write!(f, ", ")?
8860             } else {
8861                 first = false;
8862             }
8863             f.write_str("decodeModeSharedExponent")?;
8864         }
8865         if self.dedicated_allocation_image_aliasing {
8866             if !first {
8867                 write!(f, ", ")?
8868             } else {
8869                 first = false;
8870             }
8871             f.write_str("dedicatedAllocationImageAliasing")?;
8872         }
8873         if self.depth_bias_clamp {
8874             if !first {
8875                 write!(f, ", ")?
8876             } else {
8877                 first = false;
8878             }
8879             f.write_str("depthBiasClamp")?;
8880         }
8881         if self.depth_bounds {
8882             if !first {
8883                 write!(f, ", ")?
8884             } else {
8885                 first = false;
8886             }
8887             f.write_str("depthBounds")?;
8888         }
8889         if self.depth_clamp {
8890             if !first {
8891                 write!(f, ", ")?
8892             } else {
8893                 first = false;
8894             }
8895             f.write_str("depthClamp")?;
8896         }
8897         if self.depth_clamp_zero_one {
8898             if !first {
8899                 write!(f, ", ")?
8900             } else {
8901                 first = false;
8902             }
8903             f.write_str("depthClampZeroOne")?;
8904         }
8905         if self.depth_clip_control {
8906             if !first {
8907                 write!(f, ", ")?
8908             } else {
8909                 first = false;
8910             }
8911             f.write_str("depthClipControl")?;
8912         }
8913         if self.depth_clip_enable {
8914             if !first {
8915                 write!(f, ", ")?
8916             } else {
8917                 first = false;
8918             }
8919             f.write_str("depthClipEnable")?;
8920         }
8921         if self.descriptor_binding_acceleration_structure_update_after_bind {
8922             if !first {
8923                 write!(f, ", ")?
8924             } else {
8925                 first = false;
8926             }
8927             f.write_str("descriptorBindingAccelerationStructureUpdateAfterBind")?;
8928         }
8929         if self.descriptor_binding_inline_uniform_block_update_after_bind {
8930             if !first {
8931                 write!(f, ", ")?
8932             } else {
8933                 first = false;
8934             }
8935             f.write_str("descriptorBindingInlineUniformBlockUpdateAfterBind")?;
8936         }
8937         if self.descriptor_binding_partially_bound {
8938             if !first {
8939                 write!(f, ", ")?
8940             } else {
8941                 first = false;
8942             }
8943             f.write_str("descriptorBindingPartiallyBound")?;
8944         }
8945         if self.descriptor_binding_sampled_image_update_after_bind {
8946             if !first {
8947                 write!(f, ", ")?
8948             } else {
8949                 first = false;
8950             }
8951             f.write_str("descriptorBindingSampledImageUpdateAfterBind")?;
8952         }
8953         if self.descriptor_binding_storage_buffer_update_after_bind {
8954             if !first {
8955                 write!(f, ", ")?
8956             } else {
8957                 first = false;
8958             }
8959             f.write_str("descriptorBindingStorageBufferUpdateAfterBind")?;
8960         }
8961         if self.descriptor_binding_storage_image_update_after_bind {
8962             if !first {
8963                 write!(f, ", ")?
8964             } else {
8965                 first = false;
8966             }
8967             f.write_str("descriptorBindingStorageImageUpdateAfterBind")?;
8968         }
8969         if self.descriptor_binding_storage_texel_buffer_update_after_bind {
8970             if !first {
8971                 write!(f, ", ")?
8972             } else {
8973                 first = false;
8974             }
8975             f.write_str("descriptorBindingStorageTexelBufferUpdateAfterBind")?;
8976         }
8977         if self.descriptor_binding_uniform_buffer_update_after_bind {
8978             if !first {
8979                 write!(f, ", ")?
8980             } else {
8981                 first = false;
8982             }
8983             f.write_str("descriptorBindingUniformBufferUpdateAfterBind")?;
8984         }
8985         if self.descriptor_binding_uniform_texel_buffer_update_after_bind {
8986             if !first {
8987                 write!(f, ", ")?
8988             } else {
8989                 first = false;
8990             }
8991             f.write_str("descriptorBindingUniformTexelBufferUpdateAfterBind")?;
8992         }
8993         if self.descriptor_binding_update_unused_while_pending {
8994             if !first {
8995                 write!(f, ", ")?
8996             } else {
8997                 first = false;
8998             }
8999             f.write_str("descriptorBindingUpdateUnusedWhilePending")?;
9000         }
9001         if self.descriptor_binding_variable_descriptor_count {
9002             if !first {
9003                 write!(f, ", ")?
9004             } else {
9005                 first = false;
9006             }
9007             f.write_str("descriptorBindingVariableDescriptorCount")?;
9008         }
9009         if self.descriptor_buffer {
9010             if !first {
9011                 write!(f, ", ")?
9012             } else {
9013                 first = false;
9014             }
9015             f.write_str("descriptorBuffer")?;
9016         }
9017         if self.descriptor_buffer_capture_replay {
9018             if !first {
9019                 write!(f, ", ")?
9020             } else {
9021                 first = false;
9022             }
9023             f.write_str("descriptorBufferCaptureReplay")?;
9024         }
9025         if self.descriptor_buffer_image_layout_ignored {
9026             if !first {
9027                 write!(f, ", ")?
9028             } else {
9029                 first = false;
9030             }
9031             f.write_str("descriptorBufferImageLayoutIgnored")?;
9032         }
9033         if self.descriptor_buffer_push_descriptors {
9034             if !first {
9035                 write!(f, ", ")?
9036             } else {
9037                 first = false;
9038             }
9039             f.write_str("descriptorBufferPushDescriptors")?;
9040         }
9041         if self.descriptor_indexing {
9042             if !first {
9043                 write!(f, ", ")?
9044             } else {
9045                 first = false;
9046             }
9047             f.write_str("descriptorIndexing")?;
9048         }
9049         if self.descriptor_set_host_mapping {
9050             if !first {
9051                 write!(f, ", ")?
9052             } else {
9053                 first = false;
9054             }
9055             f.write_str("descriptorSetHostMapping")?;
9056         }
9057         if self.device_coherent_memory {
9058             if !first {
9059                 write!(f, ", ")?
9060             } else {
9061                 first = false;
9062             }
9063             f.write_str("deviceCoherentMemory")?;
9064         }
9065         if self.device_fault {
9066             if !first {
9067                 write!(f, ", ")?
9068             } else {
9069                 first = false;
9070             }
9071             f.write_str("deviceFault")?;
9072         }
9073         if self.device_fault_vendor_binary {
9074             if !first {
9075                 write!(f, ", ")?
9076             } else {
9077                 first = false;
9078             }
9079             f.write_str("deviceFaultVendorBinary")?;
9080         }
9081         if self.device_generated_commands {
9082             if !first {
9083                 write!(f, ", ")?
9084             } else {
9085                 first = false;
9086             }
9087             f.write_str("deviceGeneratedCommands")?;
9088         }
9089         if self.device_memory_report {
9090             if !first {
9091                 write!(f, ", ")?
9092             } else {
9093                 first = false;
9094             }
9095             f.write_str("deviceMemoryReport")?;
9096         }
9097         if self.diagnostics_config {
9098             if !first {
9099                 write!(f, ", ")?
9100             } else {
9101                 first = false;
9102             }
9103             f.write_str("diagnosticsConfig")?;
9104         }
9105         if self.draw_indirect_count {
9106             if !first {
9107                 write!(f, ", ")?
9108             } else {
9109                 first = false;
9110             }
9111             f.write_str("drawIndirectCount")?;
9112         }
9113         if self.draw_indirect_first_instance {
9114             if !first {
9115                 write!(f, ", ")?
9116             } else {
9117                 first = false;
9118             }
9119             f.write_str("drawIndirectFirstInstance")?;
9120         }
9121         if self.dual_src_blend {
9122             if !first {
9123                 write!(f, ", ")?
9124             } else {
9125                 first = false;
9126             }
9127             f.write_str("dualSrcBlend")?;
9128         }
9129         if self.dynamic_rendering {
9130             if !first {
9131                 write!(f, ", ")?
9132             } else {
9133                 first = false;
9134             }
9135             f.write_str("dynamicRendering")?;
9136         }
9137         if self.events {
9138             if !first {
9139                 write!(f, ", ")?
9140             } else {
9141                 first = false;
9142             }
9143             f.write_str("events")?;
9144         }
9145         if self.exclusive_scissor {
9146             if !first {
9147                 write!(f, ", ")?
9148             } else {
9149                 first = false;
9150             }
9151             f.write_str("exclusiveScissor")?;
9152         }
9153         if self.extended_dynamic_state {
9154             if !first {
9155                 write!(f, ", ")?
9156             } else {
9157                 first = false;
9158             }
9159             f.write_str("extendedDynamicState")?;
9160         }
9161         if self.extended_dynamic_state2 {
9162             if !first {
9163                 write!(f, ", ")?
9164             } else {
9165                 first = false;
9166             }
9167             f.write_str("extendedDynamicState2")?;
9168         }
9169         if self.extended_dynamic_state2_logic_op {
9170             if !first {
9171                 write!(f, ", ")?
9172             } else {
9173                 first = false;
9174             }
9175             f.write_str("extendedDynamicState2LogicOp")?;
9176         }
9177         if self.extended_dynamic_state2_patch_control_points {
9178             if !first {
9179                 write!(f, ", ")?
9180             } else {
9181                 first = false;
9182             }
9183             f.write_str("extendedDynamicState2PatchControlPoints")?;
9184         }
9185         if self.extended_dynamic_state3_alpha_to_coverage_enable {
9186             if !first {
9187                 write!(f, ", ")?
9188             } else {
9189                 first = false;
9190             }
9191             f.write_str("extendedDynamicState3AlphaToCoverageEnable")?;
9192         }
9193         if self.extended_dynamic_state3_alpha_to_one_enable {
9194             if !first {
9195                 write!(f, ", ")?
9196             } else {
9197                 first = false;
9198             }
9199             f.write_str("extendedDynamicState3AlphaToOneEnable")?;
9200         }
9201         if self.extended_dynamic_state3_color_blend_advanced {
9202             if !first {
9203                 write!(f, ", ")?
9204             } else {
9205                 first = false;
9206             }
9207             f.write_str("extendedDynamicState3ColorBlendAdvanced")?;
9208         }
9209         if self.extended_dynamic_state3_color_blend_enable {
9210             if !first {
9211                 write!(f, ", ")?
9212             } else {
9213                 first = false;
9214             }
9215             f.write_str("extendedDynamicState3ColorBlendEnable")?;
9216         }
9217         if self.extended_dynamic_state3_color_blend_equation {
9218             if !first {
9219                 write!(f, ", ")?
9220             } else {
9221                 first = false;
9222             }
9223             f.write_str("extendedDynamicState3ColorBlendEquation")?;
9224         }
9225         if self.extended_dynamic_state3_color_write_mask {
9226             if !first {
9227                 write!(f, ", ")?
9228             } else {
9229                 first = false;
9230             }
9231             f.write_str("extendedDynamicState3ColorWriteMask")?;
9232         }
9233         if self.extended_dynamic_state3_conservative_rasterization_mode {
9234             if !first {
9235                 write!(f, ", ")?
9236             } else {
9237                 first = false;
9238             }
9239             f.write_str("extendedDynamicState3ConservativeRasterizationMode")?;
9240         }
9241         if self.extended_dynamic_state3_coverage_modulation_mode {
9242             if !first {
9243                 write!(f, ", ")?
9244             } else {
9245                 first = false;
9246             }
9247             f.write_str("extendedDynamicState3CoverageModulationMode")?;
9248         }
9249         if self.extended_dynamic_state3_coverage_modulation_table {
9250             if !first {
9251                 write!(f, ", ")?
9252             } else {
9253                 first = false;
9254             }
9255             f.write_str("extendedDynamicState3CoverageModulationTable")?;
9256         }
9257         if self.extended_dynamic_state3_coverage_modulation_table_enable {
9258             if !first {
9259                 write!(f, ", ")?
9260             } else {
9261                 first = false;
9262             }
9263             f.write_str("extendedDynamicState3CoverageModulationTableEnable")?;
9264         }
9265         if self.extended_dynamic_state3_coverage_reduction_mode {
9266             if !first {
9267                 write!(f, ", ")?
9268             } else {
9269                 first = false;
9270             }
9271             f.write_str("extendedDynamicState3CoverageReductionMode")?;
9272         }
9273         if self.extended_dynamic_state3_coverage_to_color_enable {
9274             if !first {
9275                 write!(f, ", ")?
9276             } else {
9277                 first = false;
9278             }
9279             f.write_str("extendedDynamicState3CoverageToColorEnable")?;
9280         }
9281         if self.extended_dynamic_state3_coverage_to_color_location {
9282             if !first {
9283                 write!(f, ", ")?
9284             } else {
9285                 first = false;
9286             }
9287             f.write_str("extendedDynamicState3CoverageToColorLocation")?;
9288         }
9289         if self.extended_dynamic_state3_depth_clamp_enable {
9290             if !first {
9291                 write!(f, ", ")?
9292             } else {
9293                 first = false;
9294             }
9295             f.write_str("extendedDynamicState3DepthClampEnable")?;
9296         }
9297         if self.extended_dynamic_state3_depth_clip_enable {
9298             if !first {
9299                 write!(f, ", ")?
9300             } else {
9301                 first = false;
9302             }
9303             f.write_str("extendedDynamicState3DepthClipEnable")?;
9304         }
9305         if self.extended_dynamic_state3_depth_clip_negative_one_to_one {
9306             if !first {
9307                 write!(f, ", ")?
9308             } else {
9309                 first = false;
9310             }
9311             f.write_str("extendedDynamicState3DepthClipNegativeOneToOne")?;
9312         }
9313         if self.extended_dynamic_state3_extra_primitive_overestimation_size {
9314             if !first {
9315                 write!(f, ", ")?
9316             } else {
9317                 first = false;
9318             }
9319             f.write_str("extendedDynamicState3ExtraPrimitiveOverestimationSize")?;
9320         }
9321         if self.extended_dynamic_state3_line_rasterization_mode {
9322             if !first {
9323                 write!(f, ", ")?
9324             } else {
9325                 first = false;
9326             }
9327             f.write_str("extendedDynamicState3LineRasterizationMode")?;
9328         }
9329         if self.extended_dynamic_state3_line_stipple_enable {
9330             if !first {
9331                 write!(f, ", ")?
9332             } else {
9333                 first = false;
9334             }
9335             f.write_str("extendedDynamicState3LineStippleEnable")?;
9336         }
9337         if self.extended_dynamic_state3_logic_op_enable {
9338             if !first {
9339                 write!(f, ", ")?
9340             } else {
9341                 first = false;
9342             }
9343             f.write_str("extendedDynamicState3LogicOpEnable")?;
9344         }
9345         if self.extended_dynamic_state3_polygon_mode {
9346             if !first {
9347                 write!(f, ", ")?
9348             } else {
9349                 first = false;
9350             }
9351             f.write_str("extendedDynamicState3PolygonMode")?;
9352         }
9353         if self.extended_dynamic_state3_provoking_vertex_mode {
9354             if !first {
9355                 write!(f, ", ")?
9356             } else {
9357                 first = false;
9358             }
9359             f.write_str("extendedDynamicState3ProvokingVertexMode")?;
9360         }
9361         if self.extended_dynamic_state3_rasterization_samples {
9362             if !first {
9363                 write!(f, ", ")?
9364             } else {
9365                 first = false;
9366             }
9367             f.write_str("extendedDynamicState3RasterizationSamples")?;
9368         }
9369         if self.extended_dynamic_state3_rasterization_stream {
9370             if !first {
9371                 write!(f, ", ")?
9372             } else {
9373                 first = false;
9374             }
9375             f.write_str("extendedDynamicState3RasterizationStream")?;
9376         }
9377         if self.extended_dynamic_state3_representative_fragment_test_enable {
9378             if !first {
9379                 write!(f, ", ")?
9380             } else {
9381                 first = false;
9382             }
9383             f.write_str("extendedDynamicState3RepresentativeFragmentTestEnable")?;
9384         }
9385         if self.extended_dynamic_state3_sample_locations_enable {
9386             if !first {
9387                 write!(f, ", ")?
9388             } else {
9389                 first = false;
9390             }
9391             f.write_str("extendedDynamicState3SampleLocationsEnable")?;
9392         }
9393         if self.extended_dynamic_state3_sample_mask {
9394             if !first {
9395                 write!(f, ", ")?
9396             } else {
9397                 first = false;
9398             }
9399             f.write_str("extendedDynamicState3SampleMask")?;
9400         }
9401         if self.extended_dynamic_state3_shading_rate_image_enable {
9402             if !first {
9403                 write!(f, ", ")?
9404             } else {
9405                 first = false;
9406             }
9407             f.write_str("extendedDynamicState3ShadingRateImageEnable")?;
9408         }
9409         if self.extended_dynamic_state3_tessellation_domain_origin {
9410             if !first {
9411                 write!(f, ", ")?
9412             } else {
9413                 first = false;
9414             }
9415             f.write_str("extendedDynamicState3TessellationDomainOrigin")?;
9416         }
9417         if self.extended_dynamic_state3_viewport_swizzle {
9418             if !first {
9419                 write!(f, ", ")?
9420             } else {
9421                 first = false;
9422             }
9423             f.write_str("extendedDynamicState3ViewportSwizzle")?;
9424         }
9425         if self.extended_dynamic_state3_viewport_w_scaling_enable {
9426             if !first {
9427                 write!(f, ", ")?
9428             } else {
9429                 first = false;
9430             }
9431             f.write_str("extendedDynamicState3ViewportWScalingEnable")?;
9432         }
9433         if self.external_memory_rdma {
9434             if !first {
9435                 write!(f, ", ")?
9436             } else {
9437                 first = false;
9438             }
9439             f.write_str("externalMemoryRDMA")?;
9440         }
9441         if self.fill_mode_non_solid {
9442             if !first {
9443                 write!(f, ", ")?
9444             } else {
9445                 first = false;
9446             }
9447             f.write_str("fillModeNonSolid")?;
9448         }
9449         if self.format_a4b4g4r4 {
9450             if !first {
9451                 write!(f, ", ")?
9452             } else {
9453                 first = false;
9454             }
9455             f.write_str("formatA4B4G4R4")?;
9456         }
9457         if self.format_a4r4g4b4 {
9458             if !first {
9459                 write!(f, ", ")?
9460             } else {
9461                 first = false;
9462             }
9463             f.write_str("formatA4R4G4B4")?;
9464         }
9465         if self.format_rgba10x6_without_y_cb_cr_sampler {
9466             if !first {
9467                 write!(f, ", ")?
9468             } else {
9469                 first = false;
9470             }
9471             f.write_str("formatRgba10x6WithoutYCbCrSampler")?;
9472         }
9473         if self.fragment_density_map {
9474             if !first {
9475                 write!(f, ", ")?
9476             } else {
9477                 first = false;
9478             }
9479             f.write_str("fragmentDensityMap")?;
9480         }
9481         if self.fragment_density_map_deferred {
9482             if !first {
9483                 write!(f, ", ")?
9484             } else {
9485                 first = false;
9486             }
9487             f.write_str("fragmentDensityMapDeferred")?;
9488         }
9489         if self.fragment_density_map_dynamic {
9490             if !first {
9491                 write!(f, ", ")?
9492             } else {
9493                 first = false;
9494             }
9495             f.write_str("fragmentDensityMapDynamic")?;
9496         }
9497         if self.fragment_density_map_non_subsampled_images {
9498             if !first {
9499                 write!(f, ", ")?
9500             } else {
9501                 first = false;
9502             }
9503             f.write_str("fragmentDensityMapNonSubsampledImages")?;
9504         }
9505         if self.fragment_density_map_offset {
9506             if !first {
9507                 write!(f, ", ")?
9508             } else {
9509                 first = false;
9510             }
9511             f.write_str("fragmentDensityMapOffset")?;
9512         }
9513         if self.fragment_shader_barycentric {
9514             if !first {
9515                 write!(f, ", ")?
9516             } else {
9517                 first = false;
9518             }
9519             f.write_str("fragmentShaderBarycentric")?;
9520         }
9521         if self.fragment_shader_pixel_interlock {
9522             if !first {
9523                 write!(f, ", ")?
9524             } else {
9525                 first = false;
9526             }
9527             f.write_str("fragmentShaderPixelInterlock")?;
9528         }
9529         if self.fragment_shader_sample_interlock {
9530             if !first {
9531                 write!(f, ", ")?
9532             } else {
9533                 first = false;
9534             }
9535             f.write_str("fragmentShaderSampleInterlock")?;
9536         }
9537         if self.fragment_shader_shading_rate_interlock {
9538             if !first {
9539                 write!(f, ", ")?
9540             } else {
9541                 first = false;
9542             }
9543             f.write_str("fragmentShaderShadingRateInterlock")?;
9544         }
9545         if self.fragment_shading_rate_enums {
9546             if !first {
9547                 write!(f, ", ")?
9548             } else {
9549                 first = false;
9550             }
9551             f.write_str("fragmentShadingRateEnums")?;
9552         }
9553         if self.fragment_stores_and_atomics {
9554             if !first {
9555                 write!(f, ", ")?
9556             } else {
9557                 first = false;
9558             }
9559             f.write_str("fragmentStoresAndAtomics")?;
9560         }
9561         if self.full_draw_index_uint32 {
9562             if !first {
9563                 write!(f, ", ")?
9564             } else {
9565                 first = false;
9566             }
9567             f.write_str("fullDrawIndexUint32")?;
9568         }
9569         if self.geometry_shader {
9570             if !first {
9571                 write!(f, ", ")?
9572             } else {
9573                 first = false;
9574             }
9575             f.write_str("geometryShader")?;
9576         }
9577         if self.geometry_streams {
9578             if !first {
9579                 write!(f, ", ")?
9580             } else {
9581                 first = false;
9582             }
9583             f.write_str("geometryStreams")?;
9584         }
9585         if self.global_priority_query {
9586             if !first {
9587                 write!(f, ", ")?
9588             } else {
9589                 first = false;
9590             }
9591             f.write_str("globalPriorityQuery")?;
9592         }
9593         if self.graphics_pipeline_library {
9594             if !first {
9595                 write!(f, ", ")?
9596             } else {
9597                 first = false;
9598             }
9599             f.write_str("graphicsPipelineLibrary")?;
9600         }
9601         if self.host_query_reset {
9602             if !first {
9603                 write!(f, ", ")?
9604             } else {
9605                 first = false;
9606             }
9607             f.write_str("hostQueryReset")?;
9608         }
9609         if self.image2_d_view_of3_d {
9610             if !first {
9611                 write!(f, ", ")?
9612             } else {
9613                 first = false;
9614             }
9615             f.write_str("image2DViewOf3D")?;
9616         }
9617         if self.image_compression_control {
9618             if !first {
9619                 write!(f, ", ")?
9620             } else {
9621                 first = false;
9622             }
9623             f.write_str("imageCompressionControl")?;
9624         }
9625         if self.image_compression_control_swapchain {
9626             if !first {
9627                 write!(f, ", ")?
9628             } else {
9629                 first = false;
9630             }
9631             f.write_str("imageCompressionControlSwapchain")?;
9632         }
9633         if self.image_cube_array {
9634             if !first {
9635                 write!(f, ", ")?
9636             } else {
9637                 first = false;
9638             }
9639             f.write_str("imageCubeArray")?;
9640         }
9641         if self.image_footprint {
9642             if !first {
9643                 write!(f, ", ")?
9644             } else {
9645                 first = false;
9646             }
9647             f.write_str("imageFootprint")?;
9648         }
9649         if self.image_view2_d_on3_d_image {
9650             if !first {
9651                 write!(f, ", ")?
9652             } else {
9653                 first = false;
9654             }
9655             f.write_str("imageView2DOn3DImage")?;
9656         }
9657         if self.image_view_format_reinterpretation {
9658             if !first {
9659                 write!(f, ", ")?
9660             } else {
9661                 first = false;
9662             }
9663             f.write_str("imageViewFormatReinterpretation")?;
9664         }
9665         if self.image_view_format_swizzle {
9666             if !first {
9667                 write!(f, ", ")?
9668             } else {
9669                 first = false;
9670             }
9671             f.write_str("imageViewFormatSwizzle")?;
9672         }
9673         if self.imageless_framebuffer {
9674             if !first {
9675                 write!(f, ", ")?
9676             } else {
9677                 first = false;
9678             }
9679             f.write_str("imagelessFramebuffer")?;
9680         }
9681         if self.independent_blend {
9682             if !first {
9683                 write!(f, ", ")?
9684             } else {
9685                 first = false;
9686             }
9687             f.write_str("independentBlend")?;
9688         }
9689         if self.index_type_uint8 {
9690             if !first {
9691                 write!(f, ", ")?
9692             } else {
9693                 first = false;
9694             }
9695             f.write_str("indexTypeUint8")?;
9696         }
9697         if self.indirect_copy {
9698             if !first {
9699                 write!(f, ", ")?
9700             } else {
9701                 first = false;
9702             }
9703             f.write_str("indirectCopy")?;
9704         }
9705         if self.inherited_conditional_rendering {
9706             if !first {
9707                 write!(f, ", ")?
9708             } else {
9709                 first = false;
9710             }
9711             f.write_str("inheritedConditionalRendering")?;
9712         }
9713         if self.inherited_queries {
9714             if !first {
9715                 write!(f, ", ")?
9716             } else {
9717                 first = false;
9718             }
9719             f.write_str("inheritedQueries")?;
9720         }
9721         if self.inherited_viewport_scissor2_d {
9722             if !first {
9723                 write!(f, ", ")?
9724             } else {
9725                 first = false;
9726             }
9727             f.write_str("inheritedViewportScissor2D")?;
9728         }
9729         if self.inline_uniform_block {
9730             if !first {
9731                 write!(f, ", ")?
9732             } else {
9733                 first = false;
9734             }
9735             f.write_str("inlineUniformBlock")?;
9736         }
9737         if self.invocation_mask {
9738             if !first {
9739                 write!(f, ", ")?
9740             } else {
9741                 first = false;
9742             }
9743             f.write_str("invocationMask")?;
9744         }
9745         if self.large_points {
9746             if !first {
9747                 write!(f, ", ")?
9748             } else {
9749                 first = false;
9750             }
9751             f.write_str("largePoints")?;
9752         }
9753         if self.legacy_dithering {
9754             if !first {
9755                 write!(f, ", ")?
9756             } else {
9757                 first = false;
9758             }
9759             f.write_str("legacyDithering")?;
9760         }
9761         if self.linear_color_attachment {
9762             if !first {
9763                 write!(f, ", ")?
9764             } else {
9765                 first = false;
9766             }
9767             f.write_str("linearColorAttachment")?;
9768         }
9769         if self.logic_op {
9770             if !first {
9771                 write!(f, ", ")?
9772             } else {
9773                 first = false;
9774             }
9775             f.write_str("logicOp")?;
9776         }
9777         if self.maintenance4 {
9778             if !first {
9779                 write!(f, ", ")?
9780             } else {
9781                 first = false;
9782             }
9783             f.write_str("maintenance4")?;
9784         }
9785         if self.memory_decompression {
9786             if !first {
9787                 write!(f, ", ")?
9788             } else {
9789                 first = false;
9790             }
9791             f.write_str("memoryDecompression")?;
9792         }
9793         if self.memory_priority {
9794             if !first {
9795                 write!(f, ", ")?
9796             } else {
9797                 first = false;
9798             }
9799             f.write_str("memoryPriority")?;
9800         }
9801         if self.mesh_shader {
9802             if !first {
9803                 write!(f, ", ")?
9804             } else {
9805                 first = false;
9806             }
9807             f.write_str("meshShader")?;
9808         }
9809         if self.mesh_shader_queries {
9810             if !first {
9811                 write!(f, ", ")?
9812             } else {
9813                 first = false;
9814             }
9815             f.write_str("meshShaderQueries")?;
9816         }
9817         if self.micromap {
9818             if !first {
9819                 write!(f, ", ")?
9820             } else {
9821                 first = false;
9822             }
9823             f.write_str("micromap")?;
9824         }
9825         if self.micromap_capture_replay {
9826             if !first {
9827                 write!(f, ", ")?
9828             } else {
9829                 first = false;
9830             }
9831             f.write_str("micromapCaptureReplay")?;
9832         }
9833         if self.micromap_host_commands {
9834             if !first {
9835                 write!(f, ", ")?
9836             } else {
9837                 first = false;
9838             }
9839             f.write_str("micromapHostCommands")?;
9840         }
9841         if self.min_lod {
9842             if !first {
9843                 write!(f, ", ")?
9844             } else {
9845                 first = false;
9846             }
9847             f.write_str("minLod")?;
9848         }
9849         if self.multi_draw {
9850             if !first {
9851                 write!(f, ", ")?
9852             } else {
9853                 first = false;
9854             }
9855             f.write_str("multiDraw")?;
9856         }
9857         if self.multi_draw_indirect {
9858             if !first {
9859                 write!(f, ", ")?
9860             } else {
9861                 first = false;
9862             }
9863             f.write_str("multiDrawIndirect")?;
9864         }
9865         if self.multi_viewport {
9866             if !first {
9867                 write!(f, ", ")?
9868             } else {
9869                 first = false;
9870             }
9871             f.write_str("multiViewport")?;
9872         }
9873         if self.multisample_array_image {
9874             if !first {
9875                 write!(f, ", ")?
9876             } else {
9877                 first = false;
9878             }
9879             f.write_str("multisampleArrayImage")?;
9880         }
9881         if self.multisampled_render_to_single_sampled {
9882             if !first {
9883                 write!(f, ", ")?
9884             } else {
9885                 first = false;
9886             }
9887             f.write_str("multisampledRenderToSingleSampled")?;
9888         }
9889         if self.multiview {
9890             if !first {
9891                 write!(f, ", ")?
9892             } else {
9893                 first = false;
9894             }
9895             f.write_str("multiview")?;
9896         }
9897         if self.multiview_geometry_shader {
9898             if !first {
9899                 write!(f, ", ")?
9900             } else {
9901                 first = false;
9902             }
9903             f.write_str("multiviewGeometryShader")?;
9904         }
9905         if self.multiview_mesh_shader {
9906             if !first {
9907                 write!(f, ", ")?
9908             } else {
9909                 first = false;
9910             }
9911             f.write_str("multiviewMeshShader")?;
9912         }
9913         if self.multiview_per_view_viewports {
9914             if !first {
9915                 write!(f, ", ")?
9916             } else {
9917                 first = false;
9918             }
9919             f.write_str("multiviewPerViewViewports")?;
9920         }
9921         if self.multiview_tessellation_shader {
9922             if !first {
9923                 write!(f, ", ")?
9924             } else {
9925                 first = false;
9926             }
9927             f.write_str("multiviewTessellationShader")?;
9928         }
9929         if self.mutable_comparison_samplers {
9930             if !first {
9931                 write!(f, ", ")?
9932             } else {
9933                 first = false;
9934             }
9935             f.write_str("mutableComparisonSamplers")?;
9936         }
9937         if self.mutable_descriptor_type {
9938             if !first {
9939                 write!(f, ", ")?
9940             } else {
9941                 first = false;
9942             }
9943             f.write_str("mutableDescriptorType")?;
9944         }
9945         if self.no_invocation_fragment_shading_rates {
9946             if !first {
9947                 write!(f, ", ")?
9948             } else {
9949                 first = false;
9950             }
9951             f.write_str("noInvocationFragmentShadingRates")?;
9952         }
9953         if self.non_seamless_cube_map {
9954             if !first {
9955                 write!(f, ", ")?
9956             } else {
9957                 first = false;
9958             }
9959             f.write_str("nonSeamlessCubeMap")?;
9960         }
9961         if self.null_descriptor {
9962             if !first {
9963                 write!(f, ", ")?
9964             } else {
9965                 first = false;
9966             }
9967             f.write_str("nullDescriptor")?;
9968         }
9969         if self.occlusion_query_precise {
9970             if !first {
9971                 write!(f, ", ")?
9972             } else {
9973                 first = false;
9974             }
9975             f.write_str("occlusionQueryPrecise")?;
9976         }
9977         if self.optical_flow {
9978             if !first {
9979                 write!(f, ", ")?
9980             } else {
9981                 first = false;
9982             }
9983             f.write_str("opticalFlow")?;
9984         }
9985         if self.pageable_device_local_memory {
9986             if !first {
9987                 write!(f, ", ")?
9988             } else {
9989                 first = false;
9990             }
9991             f.write_str("pageableDeviceLocalMemory")?;
9992         }
9993         if self.performance_counter_multiple_query_pools {
9994             if !first {
9995                 write!(f, ", ")?
9996             } else {
9997                 first = false;
9998             }
9999             f.write_str("performanceCounterMultipleQueryPools")?;
10000         }
10001         if self.performance_counter_query_pools {
10002             if !first {
10003                 write!(f, ", ")?
10004             } else {
10005                 first = false;
10006             }
10007             f.write_str("performanceCounterQueryPools")?;
10008         }
10009         if self.pipeline_creation_cache_control {
10010             if !first {
10011                 write!(f, ", ")?
10012             } else {
10013                 first = false;
10014             }
10015             f.write_str("pipelineCreationCacheControl")?;
10016         }
10017         if self.pipeline_executable_info {
10018             if !first {
10019                 write!(f, ", ")?
10020             } else {
10021                 first = false;
10022             }
10023             f.write_str("pipelineExecutableInfo")?;
10024         }
10025         if self.pipeline_fragment_shading_rate {
10026             if !first {
10027                 write!(f, ", ")?
10028             } else {
10029                 first = false;
10030             }
10031             f.write_str("pipelineFragmentShadingRate")?;
10032         }
10033         if self.pipeline_properties_identifier {
10034             if !first {
10035                 write!(f, ", ")?
10036             } else {
10037                 first = false;
10038             }
10039             f.write_str("pipelinePropertiesIdentifier")?;
10040         }
10041         if self.pipeline_protected_access {
10042             if !first {
10043                 write!(f, ", ")?
10044             } else {
10045                 first = false;
10046             }
10047             f.write_str("pipelineProtectedAccess")?;
10048         }
10049         if self.pipeline_robustness {
10050             if !first {
10051                 write!(f, ", ")?
10052             } else {
10053                 first = false;
10054             }
10055             f.write_str("pipelineRobustness")?;
10056         }
10057         if self.pipeline_statistics_query {
10058             if !first {
10059                 write!(f, ", ")?
10060             } else {
10061                 first = false;
10062             }
10063             f.write_str("pipelineStatisticsQuery")?;
10064         }
10065         if self.point_polygons {
10066             if !first {
10067                 write!(f, ", ")?
10068             } else {
10069                 first = false;
10070             }
10071             f.write_str("pointPolygons")?;
10072         }
10073         if self.present_barrier {
10074             if !first {
10075                 write!(f, ", ")?
10076             } else {
10077                 first = false;
10078             }
10079             f.write_str("presentBarrier")?;
10080         }
10081         if self.present_id {
10082             if !first {
10083                 write!(f, ", ")?
10084             } else {
10085                 first = false;
10086             }
10087             f.write_str("presentId")?;
10088         }
10089         if self.present_wait {
10090             if !first {
10091                 write!(f, ", ")?
10092             } else {
10093                 first = false;
10094             }
10095             f.write_str("presentWait")?;
10096         }
10097         if self.primitive_fragment_shading_rate {
10098             if !first {
10099                 write!(f, ", ")?
10100             } else {
10101                 first = false;
10102             }
10103             f.write_str("primitiveFragmentShadingRate")?;
10104         }
10105         if self.primitive_fragment_shading_rate_mesh_shader {
10106             if !first {
10107                 write!(f, ", ")?
10108             } else {
10109                 first = false;
10110             }
10111             f.write_str("primitiveFragmentShadingRateMeshShader")?;
10112         }
10113         if self.primitive_topology_list_restart {
10114             if !first {
10115                 write!(f, ", ")?
10116             } else {
10117                 first = false;
10118             }
10119             f.write_str("primitiveTopologyListRestart")?;
10120         }
10121         if self.primitive_topology_patch_list_restart {
10122             if !first {
10123                 write!(f, ", ")?
10124             } else {
10125                 first = false;
10126             }
10127             f.write_str("primitiveTopologyPatchListRestart")?;
10128         }
10129         if self.primitives_generated_query {
10130             if !first {
10131                 write!(f, ", ")?
10132             } else {
10133                 first = false;
10134             }
10135             f.write_str("primitivesGeneratedQuery")?;
10136         }
10137         if self.primitives_generated_query_with_non_zero_streams {
10138             if !first {
10139                 write!(f, ", ")?
10140             } else {
10141                 first = false;
10142             }
10143             f.write_str("primitivesGeneratedQueryWithNonZeroStreams")?;
10144         }
10145         if self.primitives_generated_query_with_rasterizer_discard {
10146             if !first {
10147                 write!(f, ", ")?
10148             } else {
10149                 first = false;
10150             }
10151             f.write_str("primitivesGeneratedQueryWithRasterizerDiscard")?;
10152         }
10153         if self.private_data {
10154             if !first {
10155                 write!(f, ", ")?
10156             } else {
10157                 first = false;
10158             }
10159             f.write_str("privateData")?;
10160         }
10161         if self.protected_memory {
10162             if !first {
10163                 write!(f, ", ")?
10164             } else {
10165                 first = false;
10166             }
10167             f.write_str("protectedMemory")?;
10168         }
10169         if self.provoking_vertex_last {
10170             if !first {
10171                 write!(f, ", ")?
10172             } else {
10173                 first = false;
10174             }
10175             f.write_str("provokingVertexLast")?;
10176         }
10177         if self.rasterization_order_color_attachment_access {
10178             if !first {
10179                 write!(f, ", ")?
10180             } else {
10181                 first = false;
10182             }
10183             f.write_str("rasterizationOrderColorAttachmentAccess")?;
10184         }
10185         if self.rasterization_order_depth_attachment_access {
10186             if !first {
10187                 write!(f, ", ")?
10188             } else {
10189                 first = false;
10190             }
10191             f.write_str("rasterizationOrderDepthAttachmentAccess")?;
10192         }
10193         if self.rasterization_order_stencil_attachment_access {
10194             if !first {
10195                 write!(f, ", ")?
10196             } else {
10197                 first = false;
10198             }
10199             f.write_str("rasterizationOrderStencilAttachmentAccess")?;
10200         }
10201         if self.ray_query {
10202             if !first {
10203                 write!(f, ", ")?
10204             } else {
10205                 first = false;
10206             }
10207             f.write_str("rayQuery")?;
10208         }
10209         if self.ray_tracing_invocation_reorder {
10210             if !first {
10211                 write!(f, ", ")?
10212             } else {
10213                 first = false;
10214             }
10215             f.write_str("rayTracingInvocationReorder")?;
10216         }
10217         if self.ray_tracing_maintenance1 {
10218             if !first {
10219                 write!(f, ", ")?
10220             } else {
10221                 first = false;
10222             }
10223             f.write_str("rayTracingMaintenance1")?;
10224         }
10225         if self.ray_tracing_motion_blur {
10226             if !first {
10227                 write!(f, ", ")?
10228             } else {
10229                 first = false;
10230             }
10231             f.write_str("rayTracingMotionBlur")?;
10232         }
10233         if self.ray_tracing_motion_blur_pipeline_trace_rays_indirect {
10234             if !first {
10235                 write!(f, ", ")?
10236             } else {
10237                 first = false;
10238             }
10239             f.write_str("rayTracingMotionBlurPipelineTraceRaysIndirect")?;
10240         }
10241         if self.ray_tracing_pipeline {
10242             if !first {
10243                 write!(f, ", ")?
10244             } else {
10245                 first = false;
10246             }
10247             f.write_str("rayTracingPipeline")?;
10248         }
10249         if self.ray_tracing_pipeline_shader_group_handle_capture_replay {
10250             if !first {
10251                 write!(f, ", ")?
10252             } else {
10253                 first = false;
10254             }
10255             f.write_str("rayTracingPipelineShaderGroupHandleCaptureReplay")?;
10256         }
10257         if self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed {
10258             if !first {
10259                 write!(f, ", ")?
10260             } else {
10261                 first = false;
10262             }
10263             f.write_str("rayTracingPipelineShaderGroupHandleCaptureReplayMixed")?;
10264         }
10265         if self.ray_tracing_pipeline_trace_rays_indirect {
10266             if !first {
10267                 write!(f, ", ")?
10268             } else {
10269                 first = false;
10270             }
10271             f.write_str("rayTracingPipelineTraceRaysIndirect")?;
10272         }
10273         if self.ray_tracing_pipeline_trace_rays_indirect2 {
10274             if !first {
10275                 write!(f, ", ")?
10276             } else {
10277                 first = false;
10278             }
10279             f.write_str("rayTracingPipelineTraceRaysIndirect2")?;
10280         }
10281         if self.ray_traversal_primitive_culling {
10282             if !first {
10283                 write!(f, ", ")?
10284             } else {
10285                 first = false;
10286             }
10287             f.write_str("rayTraversalPrimitiveCulling")?;
10288         }
10289         if self.rectangular_lines {
10290             if !first {
10291                 write!(f, ", ")?
10292             } else {
10293                 first = false;
10294             }
10295             f.write_str("rectangularLines")?;
10296         }
10297         if self.report_address_binding {
10298             if !first {
10299                 write!(f, ", ")?
10300             } else {
10301                 first = false;
10302             }
10303             f.write_str("reportAddressBinding")?;
10304         }
10305         if self.representative_fragment_test {
10306             if !first {
10307                 write!(f, ", ")?
10308             } else {
10309                 first = false;
10310             }
10311             f.write_str("representativeFragmentTest")?;
10312         }
10313         if self.robust_buffer_access {
10314             if !first {
10315                 write!(f, ", ")?
10316             } else {
10317                 first = false;
10318             }
10319             f.write_str("robustBufferAccess")?;
10320         }
10321         if self.robust_buffer_access2 {
10322             if !first {
10323                 write!(f, ", ")?
10324             } else {
10325                 first = false;
10326             }
10327             f.write_str("robustBufferAccess2")?;
10328         }
10329         if self.robust_image_access {
10330             if !first {
10331                 write!(f, ", ")?
10332             } else {
10333                 first = false;
10334             }
10335             f.write_str("robustImageAccess")?;
10336         }
10337         if self.robust_image_access2 {
10338             if !first {
10339                 write!(f, ", ")?
10340             } else {
10341                 first = false;
10342             }
10343             f.write_str("robustImageAccess2")?;
10344         }
10345         if self.runtime_descriptor_array {
10346             if !first {
10347                 write!(f, ", ")?
10348             } else {
10349                 first = false;
10350             }
10351             f.write_str("runtimeDescriptorArray")?;
10352         }
10353         if self.sample_rate_shading {
10354             if !first {
10355                 write!(f, ", ")?
10356             } else {
10357                 first = false;
10358             }
10359             f.write_str("sampleRateShading")?;
10360         }
10361         if self.sampler2_d_view_of3_d {
10362             if !first {
10363                 write!(f, ", ")?
10364             } else {
10365                 first = false;
10366             }
10367             f.write_str("sampler2DViewOf3D")?;
10368         }
10369         if self.sampler_anisotropy {
10370             if !first {
10371                 write!(f, ", ")?
10372             } else {
10373                 first = false;
10374             }
10375             f.write_str("samplerAnisotropy")?;
10376         }
10377         if self.sampler_filter_minmax {
10378             if !first {
10379                 write!(f, ", ")?
10380             } else {
10381                 first = false;
10382             }
10383             f.write_str("samplerFilterMinmax")?;
10384         }
10385         if self.sampler_mip_lod_bias {
10386             if !first {
10387                 write!(f, ", ")?
10388             } else {
10389                 first = false;
10390             }
10391             f.write_str("samplerMipLodBias")?;
10392         }
10393         if self.sampler_mirror_clamp_to_edge {
10394             if !first {
10395                 write!(f, ", ")?
10396             } else {
10397                 first = false;
10398             }
10399             f.write_str("samplerMirrorClampToEdge")?;
10400         }
10401         if self.sampler_ycbcr_conversion {
10402             if !first {
10403                 write!(f, ", ")?
10404             } else {
10405                 first = false;
10406             }
10407             f.write_str("samplerYcbcrConversion")?;
10408         }
10409         if self.scalar_block_layout {
10410             if !first {
10411                 write!(f, ", ")?
10412             } else {
10413                 first = false;
10414             }
10415             f.write_str("scalarBlockLayout")?;
10416         }
10417         if self.separate_depth_stencil_layouts {
10418             if !first {
10419                 write!(f, ", ")?
10420             } else {
10421                 first = false;
10422             }
10423             f.write_str("separateDepthStencilLayouts")?;
10424         }
10425         if self.separate_stencil_mask_ref {
10426             if !first {
10427                 write!(f, ", ")?
10428             } else {
10429                 first = false;
10430             }
10431             f.write_str("separateStencilMaskRef")?;
10432         }
10433         if self.shader_buffer_float16_atomic_add {
10434             if !first {
10435                 write!(f, ", ")?
10436             } else {
10437                 first = false;
10438             }
10439             f.write_str("shaderBufferFloat16AtomicAdd")?;
10440         }
10441         if self.shader_buffer_float16_atomic_min_max {
10442             if !first {
10443                 write!(f, ", ")?
10444             } else {
10445                 first = false;
10446             }
10447             f.write_str("shaderBufferFloat16AtomicMinMax")?;
10448         }
10449         if self.shader_buffer_float16_atomics {
10450             if !first {
10451                 write!(f, ", ")?
10452             } else {
10453                 first = false;
10454             }
10455             f.write_str("shaderBufferFloat16Atomics")?;
10456         }
10457         if self.shader_buffer_float32_atomic_add {
10458             if !first {
10459                 write!(f, ", ")?
10460             } else {
10461                 first = false;
10462             }
10463             f.write_str("shaderBufferFloat32AtomicAdd")?;
10464         }
10465         if self.shader_buffer_float32_atomic_min_max {
10466             if !first {
10467                 write!(f, ", ")?
10468             } else {
10469                 first = false;
10470             }
10471             f.write_str("shaderBufferFloat32AtomicMinMax")?;
10472         }
10473         if self.shader_buffer_float32_atomics {
10474             if !first {
10475                 write!(f, ", ")?
10476             } else {
10477                 first = false;
10478             }
10479             f.write_str("shaderBufferFloat32Atomics")?;
10480         }
10481         if self.shader_buffer_float64_atomic_add {
10482             if !first {
10483                 write!(f, ", ")?
10484             } else {
10485                 first = false;
10486             }
10487             f.write_str("shaderBufferFloat64AtomicAdd")?;
10488         }
10489         if self.shader_buffer_float64_atomic_min_max {
10490             if !first {
10491                 write!(f, ", ")?
10492             } else {
10493                 first = false;
10494             }
10495             f.write_str("shaderBufferFloat64AtomicMinMax")?;
10496         }
10497         if self.shader_buffer_float64_atomics {
10498             if !first {
10499                 write!(f, ", ")?
10500             } else {
10501                 first = false;
10502             }
10503             f.write_str("shaderBufferFloat64Atomics")?;
10504         }
10505         if self.shader_buffer_int64_atomics {
10506             if !first {
10507                 write!(f, ", ")?
10508             } else {
10509                 first = false;
10510             }
10511             f.write_str("shaderBufferInt64Atomics")?;
10512         }
10513         if self.shader_clip_distance {
10514             if !first {
10515                 write!(f, ", ")?
10516             } else {
10517                 first = false;
10518             }
10519             f.write_str("shaderClipDistance")?;
10520         }
10521         if self.shader_core_builtins {
10522             if !first {
10523                 write!(f, ", ")?
10524             } else {
10525                 first = false;
10526             }
10527             f.write_str("shaderCoreBuiltins")?;
10528         }
10529         if self.shader_cull_distance {
10530             if !first {
10531                 write!(f, ", ")?
10532             } else {
10533                 first = false;
10534             }
10535             f.write_str("shaderCullDistance")?;
10536         }
10537         if self.shader_demote_to_helper_invocation {
10538             if !first {
10539                 write!(f, ", ")?
10540             } else {
10541                 first = false;
10542             }
10543             f.write_str("shaderDemoteToHelperInvocation")?;
10544         }
10545         if self.shader_device_clock {
10546             if !first {
10547                 write!(f, ", ")?
10548             } else {
10549                 first = false;
10550             }
10551             f.write_str("shaderDeviceClock")?;
10552         }
10553         if self.shader_draw_parameters {
10554             if !first {
10555                 write!(f, ", ")?
10556             } else {
10557                 first = false;
10558             }
10559             f.write_str("shaderDrawParameters")?;
10560         }
10561         if self.shader_early_and_late_fragment_tests {
10562             if !first {
10563                 write!(f, ", ")?
10564             } else {
10565                 first = false;
10566             }
10567             f.write_str("shaderEarlyAndLateFragmentTests")?;
10568         }
10569         if self.shader_float16 {
10570             if !first {
10571                 write!(f, ", ")?
10572             } else {
10573                 first = false;
10574             }
10575             f.write_str("shaderFloat16")?;
10576         }
10577         if self.shader_float64 {
10578             if !first {
10579                 write!(f, ", ")?
10580             } else {
10581                 first = false;
10582             }
10583             f.write_str("shaderFloat64")?;
10584         }
10585         if self.shader_image_float32_atomic_add {
10586             if !first {
10587                 write!(f, ", ")?
10588             } else {
10589                 first = false;
10590             }
10591             f.write_str("shaderImageFloat32AtomicAdd")?;
10592         }
10593         if self.shader_image_float32_atomic_min_max {
10594             if !first {
10595                 write!(f, ", ")?
10596             } else {
10597                 first = false;
10598             }
10599             f.write_str("shaderImageFloat32AtomicMinMax")?;
10600         }
10601         if self.shader_image_float32_atomics {
10602             if !first {
10603                 write!(f, ", ")?
10604             } else {
10605                 first = false;
10606             }
10607             f.write_str("shaderImageFloat32Atomics")?;
10608         }
10609         if self.shader_image_gather_extended {
10610             if !first {
10611                 write!(f, ", ")?
10612             } else {
10613                 first = false;
10614             }
10615             f.write_str("shaderImageGatherExtended")?;
10616         }
10617         if self.shader_image_int64_atomics {
10618             if !first {
10619                 write!(f, ", ")?
10620             } else {
10621                 first = false;
10622             }
10623             f.write_str("shaderImageInt64Atomics")?;
10624         }
10625         if self.shader_input_attachment_array_dynamic_indexing {
10626             if !first {
10627                 write!(f, ", ")?
10628             } else {
10629                 first = false;
10630             }
10631             f.write_str("shaderInputAttachmentArrayDynamicIndexing")?;
10632         }
10633         if self.shader_input_attachment_array_non_uniform_indexing {
10634             if !first {
10635                 write!(f, ", ")?
10636             } else {
10637                 first = false;
10638             }
10639             f.write_str("shaderInputAttachmentArrayNonUniformIndexing")?;
10640         }
10641         if self.shader_int16 {
10642             if !first {
10643                 write!(f, ", ")?
10644             } else {
10645                 first = false;
10646             }
10647             f.write_str("shaderInt16")?;
10648         }
10649         if self.shader_int64 {
10650             if !first {
10651                 write!(f, ", ")?
10652             } else {
10653                 first = false;
10654             }
10655             f.write_str("shaderInt64")?;
10656         }
10657         if self.shader_int8 {
10658             if !first {
10659                 write!(f, ", ")?
10660             } else {
10661                 first = false;
10662             }
10663             f.write_str("shaderInt8")?;
10664         }
10665         if self.shader_integer_dot_product {
10666             if !first {
10667                 write!(f, ", ")?
10668             } else {
10669                 first = false;
10670             }
10671             f.write_str("shaderIntegerDotProduct")?;
10672         }
10673         if self.shader_integer_functions2 {
10674             if !first {
10675                 write!(f, ", ")?
10676             } else {
10677                 first = false;
10678             }
10679             f.write_str("shaderIntegerFunctions2")?;
10680         }
10681         if self.shader_module_identifier {
10682             if !first {
10683                 write!(f, ", ")?
10684             } else {
10685                 first = false;
10686             }
10687             f.write_str("shaderModuleIdentifier")?;
10688         }
10689         if self.shader_output_layer {
10690             if !first {
10691                 write!(f, ", ")?
10692             } else {
10693                 first = false;
10694             }
10695             f.write_str("shaderOutputLayer")?;
10696         }
10697         if self.shader_output_viewport_index {
10698             if !first {
10699                 write!(f, ", ")?
10700             } else {
10701                 first = false;
10702             }
10703             f.write_str("shaderOutputViewportIndex")?;
10704         }
10705         if self.shader_resource_min_lod {
10706             if !first {
10707                 write!(f, ", ")?
10708             } else {
10709                 first = false;
10710             }
10711             f.write_str("shaderResourceMinLod")?;
10712         }
10713         if self.shader_resource_residency {
10714             if !first {
10715                 write!(f, ", ")?
10716             } else {
10717                 first = false;
10718             }
10719             f.write_str("shaderResourceResidency")?;
10720         }
10721         if self.shader_sample_rate_interpolation_functions {
10722             if !first {
10723                 write!(f, ", ")?
10724             } else {
10725                 first = false;
10726             }
10727             f.write_str("shaderSampleRateInterpolationFunctions")?;
10728         }
10729         if self.shader_sampled_image_array_dynamic_indexing {
10730             if !first {
10731                 write!(f, ", ")?
10732             } else {
10733                 first = false;
10734             }
10735             f.write_str("shaderSampledImageArrayDynamicIndexing")?;
10736         }
10737         if self.shader_sampled_image_array_non_uniform_indexing {
10738             if !first {
10739                 write!(f, ", ")?
10740             } else {
10741                 first = false;
10742             }
10743             f.write_str("shaderSampledImageArrayNonUniformIndexing")?;
10744         }
10745         if self.shader_shared_float16_atomic_add {
10746             if !first {
10747                 write!(f, ", ")?
10748             } else {
10749                 first = false;
10750             }
10751             f.write_str("shaderSharedFloat16AtomicAdd")?;
10752         }
10753         if self.shader_shared_float16_atomic_min_max {
10754             if !first {
10755                 write!(f, ", ")?
10756             } else {
10757                 first = false;
10758             }
10759             f.write_str("shaderSharedFloat16AtomicMinMax")?;
10760         }
10761         if self.shader_shared_float16_atomics {
10762             if !first {
10763                 write!(f, ", ")?
10764             } else {
10765                 first = false;
10766             }
10767             f.write_str("shaderSharedFloat16Atomics")?;
10768         }
10769         if self.shader_shared_float32_atomic_add {
10770             if !first {
10771                 write!(f, ", ")?
10772             } else {
10773                 first = false;
10774             }
10775             f.write_str("shaderSharedFloat32AtomicAdd")?;
10776         }
10777         if self.shader_shared_float32_atomic_min_max {
10778             if !first {
10779                 write!(f, ", ")?
10780             } else {
10781                 first = false;
10782             }
10783             f.write_str("shaderSharedFloat32AtomicMinMax")?;
10784         }
10785         if self.shader_shared_float32_atomics {
10786             if !first {
10787                 write!(f, ", ")?
10788             } else {
10789                 first = false;
10790             }
10791             f.write_str("shaderSharedFloat32Atomics")?;
10792         }
10793         if self.shader_shared_float64_atomic_add {
10794             if !first {
10795                 write!(f, ", ")?
10796             } else {
10797                 first = false;
10798             }
10799             f.write_str("shaderSharedFloat64AtomicAdd")?;
10800         }
10801         if self.shader_shared_float64_atomic_min_max {
10802             if !first {
10803                 write!(f, ", ")?
10804             } else {
10805                 first = false;
10806             }
10807             f.write_str("shaderSharedFloat64AtomicMinMax")?;
10808         }
10809         if self.shader_shared_float64_atomics {
10810             if !first {
10811                 write!(f, ", ")?
10812             } else {
10813                 first = false;
10814             }
10815             f.write_str("shaderSharedFloat64Atomics")?;
10816         }
10817         if self.shader_shared_int64_atomics {
10818             if !first {
10819                 write!(f, ", ")?
10820             } else {
10821                 first = false;
10822             }
10823             f.write_str("shaderSharedInt64Atomics")?;
10824         }
10825         if self.shader_sm_builtins {
10826             if !first {
10827                 write!(f, ", ")?
10828             } else {
10829                 first = false;
10830             }
10831             f.write_str("shaderSMBuiltins")?;
10832         }
10833         if self.shader_storage_buffer_array_dynamic_indexing {
10834             if !first {
10835                 write!(f, ", ")?
10836             } else {
10837                 first = false;
10838             }
10839             f.write_str("shaderStorageBufferArrayDynamicIndexing")?;
10840         }
10841         if self.shader_storage_buffer_array_non_uniform_indexing {
10842             if !first {
10843                 write!(f, ", ")?
10844             } else {
10845                 first = false;
10846             }
10847             f.write_str("shaderStorageBufferArrayNonUniformIndexing")?;
10848         }
10849         if self.shader_storage_image_array_dynamic_indexing {
10850             if !first {
10851                 write!(f, ", ")?
10852             } else {
10853                 first = false;
10854             }
10855             f.write_str("shaderStorageImageArrayDynamicIndexing")?;
10856         }
10857         if self.shader_storage_image_array_non_uniform_indexing {
10858             if !first {
10859                 write!(f, ", ")?
10860             } else {
10861                 first = false;
10862             }
10863             f.write_str("shaderStorageImageArrayNonUniformIndexing")?;
10864         }
10865         if self.shader_storage_image_extended_formats {
10866             if !first {
10867                 write!(f, ", ")?
10868             } else {
10869                 first = false;
10870             }
10871             f.write_str("shaderStorageImageExtendedFormats")?;
10872         }
10873         if self.shader_storage_image_multisample {
10874             if !first {
10875                 write!(f, ", ")?
10876             } else {
10877                 first = false;
10878             }
10879             f.write_str("shaderStorageImageMultisample")?;
10880         }
10881         if self.shader_storage_image_read_without_format {
10882             if !first {
10883                 write!(f, ", ")?
10884             } else {
10885                 first = false;
10886             }
10887             f.write_str("shaderStorageImageReadWithoutFormat")?;
10888         }
10889         if self.shader_storage_image_write_without_format {
10890             if !first {
10891                 write!(f, ", ")?
10892             } else {
10893                 first = false;
10894             }
10895             f.write_str("shaderStorageImageWriteWithoutFormat")?;
10896         }
10897         if self.shader_storage_texel_buffer_array_dynamic_indexing {
10898             if !first {
10899                 write!(f, ", ")?
10900             } else {
10901                 first = false;
10902             }
10903             f.write_str("shaderStorageTexelBufferArrayDynamicIndexing")?;
10904         }
10905         if self.shader_storage_texel_buffer_array_non_uniform_indexing {
10906             if !first {
10907                 write!(f, ", ")?
10908             } else {
10909                 first = false;
10910             }
10911             f.write_str("shaderStorageTexelBufferArrayNonUniformIndexing")?;
10912         }
10913         if self.shader_subgroup_clock {
10914             if !first {
10915                 write!(f, ", ")?
10916             } else {
10917                 first = false;
10918             }
10919             f.write_str("shaderSubgroupClock")?;
10920         }
10921         if self.shader_subgroup_extended_types {
10922             if !first {
10923                 write!(f, ", ")?
10924             } else {
10925                 first = false;
10926             }
10927             f.write_str("shaderSubgroupExtendedTypes")?;
10928         }
10929         if self.shader_subgroup_uniform_control_flow {
10930             if !first {
10931                 write!(f, ", ")?
10932             } else {
10933                 first = false;
10934             }
10935             f.write_str("shaderSubgroupUniformControlFlow")?;
10936         }
10937         if self.shader_terminate_invocation {
10938             if !first {
10939                 write!(f, ", ")?
10940             } else {
10941                 first = false;
10942             }
10943             f.write_str("shaderTerminateInvocation")?;
10944         }
10945         if self.shader_tessellation_and_geometry_point_size {
10946             if !first {
10947                 write!(f, ", ")?
10948             } else {
10949                 first = false;
10950             }
10951             f.write_str("shaderTessellationAndGeometryPointSize")?;
10952         }
10953         if self.shader_uniform_buffer_array_dynamic_indexing {
10954             if !first {
10955                 write!(f, ", ")?
10956             } else {
10957                 first = false;
10958             }
10959             f.write_str("shaderUniformBufferArrayDynamicIndexing")?;
10960         }
10961         if self.shader_uniform_buffer_array_non_uniform_indexing {
10962             if !first {
10963                 write!(f, ", ")?
10964             } else {
10965                 first = false;
10966             }
10967             f.write_str("shaderUniformBufferArrayNonUniformIndexing")?;
10968         }
10969         if self.shader_uniform_texel_buffer_array_dynamic_indexing {
10970             if !first {
10971                 write!(f, ", ")?
10972             } else {
10973                 first = false;
10974             }
10975             f.write_str("shaderUniformTexelBufferArrayDynamicIndexing")?;
10976         }
10977         if self.shader_uniform_texel_buffer_array_non_uniform_indexing {
10978             if !first {
10979                 write!(f, ", ")?
10980             } else {
10981                 first = false;
10982             }
10983             f.write_str("shaderUniformTexelBufferArrayNonUniformIndexing")?;
10984         }
10985         if self.shader_zero_initialize_workgroup_memory {
10986             if !first {
10987                 write!(f, ", ")?
10988             } else {
10989                 first = false;
10990             }
10991             f.write_str("shaderZeroInitializeWorkgroupMemory")?;
10992         }
10993         if self.shading_rate_coarse_sample_order {
10994             if !first {
10995                 write!(f, ", ")?
10996             } else {
10997                 first = false;
10998             }
10999             f.write_str("shadingRateCoarseSampleOrder")?;
11000         }
11001         if self.shading_rate_image {
11002             if !first {
11003                 write!(f, ", ")?
11004             } else {
11005                 first = false;
11006             }
11007             f.write_str("shadingRateImage")?;
11008         }
11009         if self.smooth_lines {
11010             if !first {
11011                 write!(f, ", ")?
11012             } else {
11013                 first = false;
11014             }
11015             f.write_str("smoothLines")?;
11016         }
11017         if self.sparse_binding {
11018             if !first {
11019                 write!(f, ", ")?
11020             } else {
11021                 first = false;
11022             }
11023             f.write_str("sparseBinding")?;
11024         }
11025         if self.sparse_image_float32_atomic_add {
11026             if !first {
11027                 write!(f, ", ")?
11028             } else {
11029                 first = false;
11030             }
11031             f.write_str("sparseImageFloat32AtomicAdd")?;
11032         }
11033         if self.sparse_image_float32_atomic_min_max {
11034             if !first {
11035                 write!(f, ", ")?
11036             } else {
11037                 first = false;
11038             }
11039             f.write_str("sparseImageFloat32AtomicMinMax")?;
11040         }
11041         if self.sparse_image_float32_atomics {
11042             if !first {
11043                 write!(f, ", ")?
11044             } else {
11045                 first = false;
11046             }
11047             f.write_str("sparseImageFloat32Atomics")?;
11048         }
11049         if self.sparse_image_int64_atomics {
11050             if !first {
11051                 write!(f, ", ")?
11052             } else {
11053                 first = false;
11054             }
11055             f.write_str("sparseImageInt64Atomics")?;
11056         }
11057         if self.sparse_residency16_samples {
11058             if !first {
11059                 write!(f, ", ")?
11060             } else {
11061                 first = false;
11062             }
11063             f.write_str("sparseResidency16Samples")?;
11064         }
11065         if self.sparse_residency2_samples {
11066             if !first {
11067                 write!(f, ", ")?
11068             } else {
11069                 first = false;
11070             }
11071             f.write_str("sparseResidency2Samples")?;
11072         }
11073         if self.sparse_residency4_samples {
11074             if !first {
11075                 write!(f, ", ")?
11076             } else {
11077                 first = false;
11078             }
11079             f.write_str("sparseResidency4Samples")?;
11080         }
11081         if self.sparse_residency8_samples {
11082             if !first {
11083                 write!(f, ", ")?
11084             } else {
11085                 first = false;
11086             }
11087             f.write_str("sparseResidency8Samples")?;
11088         }
11089         if self.sparse_residency_aliased {
11090             if !first {
11091                 write!(f, ", ")?
11092             } else {
11093                 first = false;
11094             }
11095             f.write_str("sparseResidencyAliased")?;
11096         }
11097         if self.sparse_residency_buffer {
11098             if !first {
11099                 write!(f, ", ")?
11100             } else {
11101                 first = false;
11102             }
11103             f.write_str("sparseResidencyBuffer")?;
11104         }
11105         if self.sparse_residency_image2_d {
11106             if !first {
11107                 write!(f, ", ")?
11108             } else {
11109                 first = false;
11110             }
11111             f.write_str("sparseResidencyImage2D")?;
11112         }
11113         if self.sparse_residency_image3_d {
11114             if !first {
11115                 write!(f, ", ")?
11116             } else {
11117                 first = false;
11118             }
11119             f.write_str("sparseResidencyImage3D")?;
11120         }
11121         if self.stippled_bresenham_lines {
11122             if !first {
11123                 write!(f, ", ")?
11124             } else {
11125                 first = false;
11126             }
11127             f.write_str("stippledBresenhamLines")?;
11128         }
11129         if self.stippled_rectangular_lines {
11130             if !first {
11131                 write!(f, ", ")?
11132             } else {
11133                 first = false;
11134             }
11135             f.write_str("stippledRectangularLines")?;
11136         }
11137         if self.stippled_smooth_lines {
11138             if !first {
11139                 write!(f, ", ")?
11140             } else {
11141                 first = false;
11142             }
11143             f.write_str("stippledSmoothLines")?;
11144         }
11145         if self.storage_buffer16_bit_access {
11146             if !first {
11147                 write!(f, ", ")?
11148             } else {
11149                 first = false;
11150             }
11151             f.write_str("storageBuffer16BitAccess")?;
11152         }
11153         if self.storage_buffer8_bit_access {
11154             if !first {
11155                 write!(f, ", ")?
11156             } else {
11157                 first = false;
11158             }
11159             f.write_str("storageBuffer8BitAccess")?;
11160         }
11161         if self.storage_input_output16 {
11162             if !first {
11163                 write!(f, ", ")?
11164             } else {
11165                 first = false;
11166             }
11167             f.write_str("storageInputOutput16")?;
11168         }
11169         if self.storage_push_constant16 {
11170             if !first {
11171                 write!(f, ", ")?
11172             } else {
11173                 first = false;
11174             }
11175             f.write_str("storagePushConstant16")?;
11176         }
11177         if self.storage_push_constant8 {
11178             if !first {
11179                 write!(f, ", ")?
11180             } else {
11181                 first = false;
11182             }
11183             f.write_str("storagePushConstant8")?;
11184         }
11185         if self.subgroup_broadcast_dynamic_id {
11186             if !first {
11187                 write!(f, ", ")?
11188             } else {
11189                 first = false;
11190             }
11191             f.write_str("subgroupBroadcastDynamicId")?;
11192         }
11193         if self.subgroup_size_control {
11194             if !first {
11195                 write!(f, ", ")?
11196             } else {
11197                 first = false;
11198             }
11199             f.write_str("subgroupSizeControl")?;
11200         }
11201         if self.subpass_merge_feedback {
11202             if !first {
11203                 write!(f, ", ")?
11204             } else {
11205                 first = false;
11206             }
11207             f.write_str("subpassMergeFeedback")?;
11208         }
11209         if self.subpass_shading {
11210             if !first {
11211                 write!(f, ", ")?
11212             } else {
11213                 first = false;
11214             }
11215             f.write_str("subpassShading")?;
11216         }
11217         if self.supersample_fragment_shading_rates {
11218             if !first {
11219                 write!(f, ", ")?
11220             } else {
11221                 first = false;
11222             }
11223             f.write_str("supersampleFragmentShadingRates")?;
11224         }
11225         if self.swapchain_maintenance1 {
11226             if !first {
11227                 write!(f, ", ")?
11228             } else {
11229                 first = false;
11230             }
11231             f.write_str("swapchainMaintenance1")?;
11232         }
11233         if self.synchronization2 {
11234             if !first {
11235                 write!(f, ", ")?
11236             } else {
11237                 first = false;
11238             }
11239             f.write_str("synchronization2")?;
11240         }
11241         if self.task_shader {
11242             if !first {
11243                 write!(f, ", ")?
11244             } else {
11245                 first = false;
11246             }
11247             f.write_str("taskShader")?;
11248         }
11249         if self.tessellation_isolines {
11250             if !first {
11251                 write!(f, ", ")?
11252             } else {
11253                 first = false;
11254             }
11255             f.write_str("tessellationIsolines")?;
11256         }
11257         if self.tessellation_point_mode {
11258             if !first {
11259                 write!(f, ", ")?
11260             } else {
11261                 first = false;
11262             }
11263             f.write_str("tessellationPointMode")?;
11264         }
11265         if self.tessellation_shader {
11266             if !first {
11267                 write!(f, ", ")?
11268             } else {
11269                 first = false;
11270             }
11271             f.write_str("tessellationShader")?;
11272         }
11273         if self.texel_buffer_alignment {
11274             if !first {
11275                 write!(f, ", ")?
11276             } else {
11277                 first = false;
11278             }
11279             f.write_str("texelBufferAlignment")?;
11280         }
11281         if self.texture_block_match {
11282             if !first {
11283                 write!(f, ", ")?
11284             } else {
11285                 first = false;
11286             }
11287             f.write_str("textureBlockMatch")?;
11288         }
11289         if self.texture_box_filter {
11290             if !first {
11291                 write!(f, ", ")?
11292             } else {
11293                 first = false;
11294             }
11295             f.write_str("textureBoxFilter")?;
11296         }
11297         if self.texture_compression_astc_hdr {
11298             if !first {
11299                 write!(f, ", ")?
11300             } else {
11301                 first = false;
11302             }
11303             f.write_str("textureCompressionASTC_HDR")?;
11304         }
11305         if self.texture_compression_astc_ldr {
11306             if !first {
11307                 write!(f, ", ")?
11308             } else {
11309                 first = false;
11310             }
11311             f.write_str("textureCompressionASTC_LDR")?;
11312         }
11313         if self.texture_compression_bc {
11314             if !first {
11315                 write!(f, ", ")?
11316             } else {
11317                 first = false;
11318             }
11319             f.write_str("textureCompressionBC")?;
11320         }
11321         if self.texture_compression_etc2 {
11322             if !first {
11323                 write!(f, ", ")?
11324             } else {
11325                 first = false;
11326             }
11327             f.write_str("textureCompressionETC2")?;
11328         }
11329         if self.texture_sample_weighted {
11330             if !first {
11331                 write!(f, ", ")?
11332             } else {
11333                 first = false;
11334             }
11335             f.write_str("textureSampleWeighted")?;
11336         }
11337         if self.tile_properties {
11338             if !first {
11339                 write!(f, ", ")?
11340             } else {
11341                 first = false;
11342             }
11343             f.write_str("tileProperties")?;
11344         }
11345         if self.timeline_semaphore {
11346             if !first {
11347                 write!(f, ", ")?
11348             } else {
11349                 first = false;
11350             }
11351             f.write_str("timelineSemaphore")?;
11352         }
11353         if self.transform_feedback {
11354             if !first {
11355                 write!(f, ", ")?
11356             } else {
11357                 first = false;
11358             }
11359             f.write_str("transformFeedback")?;
11360         }
11361         if self.transform_feedback_preserves_provoking_vertex {
11362             if !first {
11363                 write!(f, ", ")?
11364             } else {
11365                 first = false;
11366             }
11367             f.write_str("transformFeedbackPreservesProvokingVertex")?;
11368         }
11369         if self.triangle_fans {
11370             if !first {
11371                 write!(f, ", ")?
11372             } else {
11373                 first = false;
11374             }
11375             f.write_str("triangleFans")?;
11376         }
11377         if self.uniform_and_storage_buffer16_bit_access {
11378             if !first {
11379                 write!(f, ", ")?
11380             } else {
11381                 first = false;
11382             }
11383             f.write_str("uniformAndStorageBuffer16BitAccess")?;
11384         }
11385         if self.uniform_and_storage_buffer8_bit_access {
11386             if !first {
11387                 write!(f, ", ")?
11388             } else {
11389                 first = false;
11390             }
11391             f.write_str("uniformAndStorageBuffer8BitAccess")?;
11392         }
11393         if self.uniform_buffer_standard_layout {
11394             if !first {
11395                 write!(f, ", ")?
11396             } else {
11397                 first = false;
11398             }
11399             f.write_str("uniformBufferStandardLayout")?;
11400         }
11401         if self.variable_multisample_rate {
11402             if !first {
11403                 write!(f, ", ")?
11404             } else {
11405                 first = false;
11406             }
11407             f.write_str("variableMultisampleRate")?;
11408         }
11409         if self.variable_pointers {
11410             if !first {
11411                 write!(f, ", ")?
11412             } else {
11413                 first = false;
11414             }
11415             f.write_str("variablePointers")?;
11416         }
11417         if self.variable_pointers_storage_buffer {
11418             if !first {
11419                 write!(f, ", ")?
11420             } else {
11421                 first = false;
11422             }
11423             f.write_str("variablePointersStorageBuffer")?;
11424         }
11425         if self.vertex_attribute_access_beyond_stride {
11426             if !first {
11427                 write!(f, ", ")?
11428             } else {
11429                 first = false;
11430             }
11431             f.write_str("vertexAttributeAccessBeyondStride")?;
11432         }
11433         if self.vertex_attribute_instance_rate_divisor {
11434             if !first {
11435                 write!(f, ", ")?
11436             } else {
11437                 first = false;
11438             }
11439             f.write_str("vertexAttributeInstanceRateDivisor")?;
11440         }
11441         if self.vertex_attribute_instance_rate_zero_divisor {
11442             if !first {
11443                 write!(f, ", ")?
11444             } else {
11445                 first = false;
11446             }
11447             f.write_str("vertexAttributeInstanceRateZeroDivisor")?;
11448         }
11449         if self.vertex_input_dynamic_state {
11450             if !first {
11451                 write!(f, ", ")?
11452             } else {
11453                 first = false;
11454             }
11455             f.write_str("vertexInputDynamicState")?;
11456         }
11457         if self.vertex_pipeline_stores_and_atomics {
11458             if !first {
11459                 write!(f, ", ")?
11460             } else {
11461                 first = false;
11462             }
11463             f.write_str("vertexPipelineStoresAndAtomics")?;
11464         }
11465         if self.vulkan_memory_model {
11466             if !first {
11467                 write!(f, ", ")?
11468             } else {
11469                 first = false;
11470             }
11471             f.write_str("vulkanMemoryModel")?;
11472         }
11473         if self.vulkan_memory_model_availability_visibility_chains {
11474             if !first {
11475                 write!(f, ", ")?
11476             } else {
11477                 first = false;
11478             }
11479             f.write_str("vulkanMemoryModelAvailabilityVisibilityChains")?;
11480         }
11481         if self.vulkan_memory_model_device_scope {
11482             if !first {
11483                 write!(f, ", ")?
11484             } else {
11485                 first = false;
11486             }
11487             f.write_str("vulkanMemoryModelDeviceScope")?;
11488         }
11489         if self.wide_lines {
11490             if !first {
11491                 write!(f, ", ")?
11492             } else {
11493                 first = false;
11494             }
11495             f.write_str("wideLines")?;
11496         }
11497         if self.workgroup_memory_explicit_layout {
11498             if !first {
11499                 write!(f, ", ")?
11500             } else {
11501                 first = false;
11502             }
11503             f.write_str("workgroupMemoryExplicitLayout")?;
11504         }
11505         if self.workgroup_memory_explicit_layout16_bit_access {
11506             if !first {
11507                 write!(f, ", ")?
11508             } else {
11509                 first = false;
11510             }
11511             f.write_str("workgroupMemoryExplicitLayout16BitAccess")?;
11512         }
11513         if self.workgroup_memory_explicit_layout8_bit_access {
11514             if !first {
11515                 write!(f, ", ")?
11516             } else {
11517                 first = false;
11518             }
11519             f.write_str("workgroupMemoryExplicitLayout8BitAccess")?;
11520         }
11521         if self.workgroup_memory_explicit_layout_scalar_block_layout {
11522             if !first {
11523                 write!(f, ", ")?
11524             } else {
11525                 first = false;
11526             }
11527             f.write_str("workgroupMemoryExplicitLayoutScalarBlockLayout")?;
11528         }
11529         if self.ycbcr2plane444_formats {
11530             if !first {
11531                 write!(f, ", ")?
11532             } else {
11533                 first = false;
11534             }
11535             f.write_str("ycbcr2plane444Formats")?;
11536         }
11537         if self.ycbcr_image_arrays {
11538             if !first {
11539                 write!(f, ", ")?
11540             } else {
11541                 first = false;
11542             }
11543             f.write_str("ycbcrImageArrays")?;
11544         }
11545         write!(f, "]")
11546     }
11547 }
11548 impl FeaturesFfi {
write(&mut self, features: &Features)11549     pub(crate) fn write(&mut self, features: &Features) {
11550         if let Some(f) = [self
11551             .features_acceleration_structure_khr
11552             .as_mut()
11553             .map(|s| &mut s.acceleration_structure)]
11554         .into_iter()
11555         .flatten()
11556         .next()
11557         {
11558             *f = features.acceleration_structure as ash::vk::Bool32;
11559         }
11560         if let Some(f) = [self
11561             .features_acceleration_structure_khr
11562             .as_mut()
11563             .map(|s| &mut s.acceleration_structure_capture_replay)]
11564         .into_iter()
11565         .flatten()
11566         .next()
11567         {
11568             *f = features.acceleration_structure_capture_replay as ash::vk::Bool32;
11569         }
11570         if let Some(f) = [self
11571             .features_acceleration_structure_khr
11572             .as_mut()
11573             .map(|s| &mut s.acceleration_structure_host_commands)]
11574         .into_iter()
11575         .flatten()
11576         .next()
11577         {
11578             *f = features.acceleration_structure_host_commands as ash::vk::Bool32;
11579         }
11580         if let Some(f) = [self
11581             .features_acceleration_structure_khr
11582             .as_mut()
11583             .map(|s| &mut s.acceleration_structure_indirect_build)]
11584         .into_iter()
11585         .flatten()
11586         .next()
11587         {
11588             *f = features.acceleration_structure_indirect_build as ash::vk::Bool32;
11589         }
11590         if let Some(f) = [self
11591             .features_blend_operation_advanced_ext
11592             .as_mut()
11593             .map(|s| &mut s.advanced_blend_coherent_operations)]
11594         .into_iter()
11595         .flatten()
11596         .next()
11597         {
11598             *f = features.advanced_blend_coherent_operations as ash::vk::Bool32;
11599         }
11600         if let Some(f) = [&mut self.features_vulkan10.features.alpha_to_one]
11601             .into_iter()
11602             .next()
11603         {
11604             *f = features.alpha_to_one as ash::vk::Bool32;
11605         }
11606         if let Some(f) = [self
11607             .features_amigo_profiling_sec
11608             .as_mut()
11609             .map(|s| &mut s.amigo_profiling)]
11610         .into_iter()
11611         .flatten()
11612         .next()
11613         {
11614             *f = features.amigo_profiling as ash::vk::Bool32;
11615         }
11616         if let Some(f) = [self
11617             .features_attachment_feedback_loop_layout_ext
11618             .as_mut()
11619             .map(|s| &mut s.attachment_feedback_loop_layout)]
11620         .into_iter()
11621         .flatten()
11622         .next()
11623         {
11624             *f = features.attachment_feedback_loop_layout as ash::vk::Bool32;
11625         }
11626         if let Some(f) = [self
11627             .features_fragment_shading_rate_khr
11628             .as_mut()
11629             .map(|s| &mut s.attachment_fragment_shading_rate)]
11630         .into_iter()
11631         .flatten()
11632         .next()
11633         {
11634             *f = features.attachment_fragment_shading_rate as ash::vk::Bool32;
11635         }
11636         if let Some(f) = [self
11637             .features_border_color_swizzle_ext
11638             .as_mut()
11639             .map(|s| &mut s.border_color_swizzle)]
11640         .into_iter()
11641         .flatten()
11642         .next()
11643         {
11644             *f = features.border_color_swizzle as ash::vk::Bool32;
11645         }
11646         if let Some(f) = [self
11647             .features_border_color_swizzle_ext
11648             .as_mut()
11649             .map(|s| &mut s.border_color_swizzle_from_image)]
11650         .into_iter()
11651         .flatten()
11652         .next()
11653         {
11654             *f = features.border_color_swizzle_from_image as ash::vk::Bool32;
11655         }
11656         if let Some(f) = [self
11657             .features_line_rasterization_ext
11658             .as_mut()
11659             .map(|s| &mut s.bresenham_lines)]
11660         .into_iter()
11661         .flatten()
11662         .next()
11663         {
11664             *f = features.bresenham_lines as ash::vk::Bool32;
11665         }
11666         if let Some(f) = [
11667             self.features_vulkan12
11668                 .as_mut()
11669                 .map(|s| &mut s.buffer_device_address),
11670             self.features_buffer_device_address
11671                 .as_mut()
11672                 .map(|s| &mut s.buffer_device_address),
11673             self.features_buffer_device_address_ext
11674                 .as_mut()
11675                 .map(|s| &mut s.buffer_device_address),
11676         ]
11677         .into_iter()
11678         .flatten()
11679         .next()
11680         {
11681             *f = features.buffer_device_address as ash::vk::Bool32;
11682         }
11683         if let Some(f) = [
11684             self.features_vulkan12
11685                 .as_mut()
11686                 .map(|s| &mut s.buffer_device_address_capture_replay),
11687             self.features_buffer_device_address
11688                 .as_mut()
11689                 .map(|s| &mut s.buffer_device_address_capture_replay),
11690             self.features_buffer_device_address_ext
11691                 .as_mut()
11692                 .map(|s| &mut s.buffer_device_address_capture_replay),
11693         ]
11694         .into_iter()
11695         .flatten()
11696         .next()
11697         {
11698             *f = features.buffer_device_address_capture_replay as ash::vk::Bool32;
11699         }
11700         if let Some(f) = [
11701             self.features_vulkan12
11702                 .as_mut()
11703                 .map(|s| &mut s.buffer_device_address_multi_device),
11704             self.features_buffer_device_address
11705                 .as_mut()
11706                 .map(|s| &mut s.buffer_device_address_multi_device),
11707             self.features_buffer_device_address_ext
11708                 .as_mut()
11709                 .map(|s| &mut s.buffer_device_address_multi_device),
11710         ]
11711         .into_iter()
11712         .flatten()
11713         .next()
11714         {
11715             *f = features.buffer_device_address_multi_device as ash::vk::Bool32;
11716         }
11717         if let Some(f) = [self
11718             .features_color_write_enable_ext
11719             .as_mut()
11720             .map(|s| &mut s.color_write_enable)]
11721         .into_iter()
11722         .flatten()
11723         .next()
11724         {
11725             *f = features.color_write_enable as ash::vk::Bool32;
11726         }
11727         if let Some(f) = [self
11728             .features_compute_shader_derivatives_nv
11729             .as_mut()
11730             .map(|s| &mut s.compute_derivative_group_linear)]
11731         .into_iter()
11732         .flatten()
11733         .next()
11734         {
11735             *f = features.compute_derivative_group_linear as ash::vk::Bool32;
11736         }
11737         if let Some(f) = [self
11738             .features_compute_shader_derivatives_nv
11739             .as_mut()
11740             .map(|s| &mut s.compute_derivative_group_quads)]
11741         .into_iter()
11742         .flatten()
11743         .next()
11744         {
11745             *f = features.compute_derivative_group_quads as ash::vk::Bool32;
11746         }
11747         if let Some(f) = [
11748             self.features_vulkan13
11749                 .as_mut()
11750                 .map(|s| &mut s.compute_full_subgroups),
11751             self.features_subgroup_size_control
11752                 .as_mut()
11753                 .map(|s| &mut s.compute_full_subgroups),
11754         ]
11755         .into_iter()
11756         .flatten()
11757         .next()
11758         {
11759             *f = features.compute_full_subgroups as ash::vk::Bool32;
11760         }
11761         if let Some(f) = [self
11762             .features_conditional_rendering_ext
11763             .as_mut()
11764             .map(|s| &mut s.conditional_rendering)]
11765         .into_iter()
11766         .flatten()
11767         .next()
11768         {
11769             *f = features.conditional_rendering as ash::vk::Bool32;
11770         }
11771         if let Some(f) = [self
11772             .features_portability_subset_khr
11773             .as_mut()
11774             .map(|s| &mut s.constant_alpha_color_blend_factors)]
11775         .into_iter()
11776         .flatten()
11777         .next()
11778         {
11779             *f = features.constant_alpha_color_blend_factors as ash::vk::Bool32;
11780         }
11781         if let Some(f) = [self
11782             .features_cooperative_matrix_nv
11783             .as_mut()
11784             .map(|s| &mut s.cooperative_matrix)]
11785         .into_iter()
11786         .flatten()
11787         .next()
11788         {
11789             *f = features.cooperative_matrix as ash::vk::Bool32;
11790         }
11791         if let Some(f) = [self
11792             .features_cooperative_matrix_nv
11793             .as_mut()
11794             .map(|s| &mut s.cooperative_matrix_robust_buffer_access)]
11795         .into_iter()
11796         .flatten()
11797         .next()
11798         {
11799             *f = features.cooperative_matrix_robust_buffer_access as ash::vk::Bool32;
11800         }
11801         if let Some(f) = [self
11802             .features_corner_sampled_image_nv
11803             .as_mut()
11804             .map(|s| &mut s.corner_sampled_image)]
11805         .into_iter()
11806         .flatten()
11807         .next()
11808         {
11809             *f = features.corner_sampled_image as ash::vk::Bool32;
11810         }
11811         if let Some(f) = [self
11812             .features_coverage_reduction_mode_nv
11813             .as_mut()
11814             .map(|s| &mut s.coverage_reduction_mode)]
11815         .into_iter()
11816         .flatten()
11817         .next()
11818         {
11819             *f = features.coverage_reduction_mode as ash::vk::Bool32;
11820         }
11821         if let Some(f) = [self
11822             .features_custom_border_color_ext
11823             .as_mut()
11824             .map(|s| &mut s.custom_border_color_without_format)]
11825         .into_iter()
11826         .flatten()
11827         .next()
11828         {
11829             *f = features.custom_border_color_without_format as ash::vk::Bool32;
11830         }
11831         if let Some(f) = [self
11832             .features_custom_border_color_ext
11833             .as_mut()
11834             .map(|s| &mut s.custom_border_colors)]
11835         .into_iter()
11836         .flatten()
11837         .next()
11838         {
11839             *f = features.custom_border_colors as ash::vk::Bool32;
11840         }
11841         if let Some(f) = [self
11842             .features_astc_decode_ext
11843             .as_mut()
11844             .map(|s| &mut s.decode_mode_shared_exponent)]
11845         .into_iter()
11846         .flatten()
11847         .next()
11848         {
11849             *f = features.decode_mode_shared_exponent as ash::vk::Bool32;
11850         }
11851         if let Some(f) = [self
11852             .features_dedicated_allocation_image_aliasing_nv
11853             .as_mut()
11854             .map(|s| &mut s.dedicated_allocation_image_aliasing)]
11855         .into_iter()
11856         .flatten()
11857         .next()
11858         {
11859             *f = features.dedicated_allocation_image_aliasing as ash::vk::Bool32;
11860         }
11861         if let Some(f) = [&mut self.features_vulkan10.features.depth_bias_clamp]
11862             .into_iter()
11863             .next()
11864         {
11865             *f = features.depth_bias_clamp as ash::vk::Bool32;
11866         }
11867         if let Some(f) = [&mut self.features_vulkan10.features.depth_bounds]
11868             .into_iter()
11869             .next()
11870         {
11871             *f = features.depth_bounds as ash::vk::Bool32;
11872         }
11873         if let Some(f) = [&mut self.features_vulkan10.features.depth_clamp]
11874             .into_iter()
11875             .next()
11876         {
11877             *f = features.depth_clamp as ash::vk::Bool32;
11878         }
11879         if let Some(f) = [self
11880             .features_depth_clamp_zero_one_ext
11881             .as_mut()
11882             .map(|s| &mut s.depth_clamp_zero_one)]
11883         .into_iter()
11884         .flatten()
11885         .next()
11886         {
11887             *f = features.depth_clamp_zero_one as ash::vk::Bool32;
11888         }
11889         if let Some(f) = [self
11890             .features_depth_clip_control_ext
11891             .as_mut()
11892             .map(|s| &mut s.depth_clip_control)]
11893         .into_iter()
11894         .flatten()
11895         .next()
11896         {
11897             *f = features.depth_clip_control as ash::vk::Bool32;
11898         }
11899         if let Some(f) = [self
11900             .features_depth_clip_enable_ext
11901             .as_mut()
11902             .map(|s| &mut s.depth_clip_enable)]
11903         .into_iter()
11904         .flatten()
11905         .next()
11906         {
11907             *f = features.depth_clip_enable as ash::vk::Bool32;
11908         }
11909         if let Some(f) = [self
11910             .features_acceleration_structure_khr
11911             .as_mut()
11912             .map(|s| &mut s.descriptor_binding_acceleration_structure_update_after_bind)]
11913         .into_iter()
11914         .flatten()
11915         .next()
11916         {
11917             *f = features.descriptor_binding_acceleration_structure_update_after_bind
11918                 as ash::vk::Bool32;
11919         }
11920         if let Some(f) = [
11921             self.features_vulkan13
11922                 .as_mut()
11923                 .map(|s| &mut s.descriptor_binding_inline_uniform_block_update_after_bind),
11924             self.features_inline_uniform_block
11925                 .as_mut()
11926                 .map(|s| &mut s.descriptor_binding_inline_uniform_block_update_after_bind),
11927         ]
11928         .into_iter()
11929         .flatten()
11930         .next()
11931         {
11932             *f = features.descriptor_binding_inline_uniform_block_update_after_bind
11933                 as ash::vk::Bool32;
11934         }
11935         if let Some(f) = [
11936             self.features_vulkan12
11937                 .as_mut()
11938                 .map(|s| &mut s.descriptor_binding_partially_bound),
11939             self.features_descriptor_indexing
11940                 .as_mut()
11941                 .map(|s| &mut s.descriptor_binding_partially_bound),
11942         ]
11943         .into_iter()
11944         .flatten()
11945         .next()
11946         {
11947             *f = features.descriptor_binding_partially_bound as ash::vk::Bool32;
11948         }
11949         if let Some(f) = [
11950             self.features_vulkan12
11951                 .as_mut()
11952                 .map(|s| &mut s.descriptor_binding_sampled_image_update_after_bind),
11953             self.features_descriptor_indexing
11954                 .as_mut()
11955                 .map(|s| &mut s.descriptor_binding_sampled_image_update_after_bind),
11956         ]
11957         .into_iter()
11958         .flatten()
11959         .next()
11960         {
11961             *f = features.descriptor_binding_sampled_image_update_after_bind as ash::vk::Bool32;
11962         }
11963         if let Some(f) = [
11964             self.features_vulkan12
11965                 .as_mut()
11966                 .map(|s| &mut s.descriptor_binding_storage_buffer_update_after_bind),
11967             self.features_descriptor_indexing
11968                 .as_mut()
11969                 .map(|s| &mut s.descriptor_binding_storage_buffer_update_after_bind),
11970         ]
11971         .into_iter()
11972         .flatten()
11973         .next()
11974         {
11975             *f = features.descriptor_binding_storage_buffer_update_after_bind as ash::vk::Bool32;
11976         }
11977         if let Some(f) = [
11978             self.features_vulkan12
11979                 .as_mut()
11980                 .map(|s| &mut s.descriptor_binding_storage_image_update_after_bind),
11981             self.features_descriptor_indexing
11982                 .as_mut()
11983                 .map(|s| &mut s.descriptor_binding_storage_image_update_after_bind),
11984         ]
11985         .into_iter()
11986         .flatten()
11987         .next()
11988         {
11989             *f = features.descriptor_binding_storage_image_update_after_bind as ash::vk::Bool32;
11990         }
11991         if let Some(f) = [
11992             self.features_vulkan12
11993                 .as_mut()
11994                 .map(|s| &mut s.descriptor_binding_storage_texel_buffer_update_after_bind),
11995             self.features_descriptor_indexing
11996                 .as_mut()
11997                 .map(|s| &mut s.descriptor_binding_storage_texel_buffer_update_after_bind),
11998         ]
11999         .into_iter()
12000         .flatten()
12001         .next()
12002         {
12003             *f = features.descriptor_binding_storage_texel_buffer_update_after_bind
12004                 as ash::vk::Bool32;
12005         }
12006         if let Some(f) = [
12007             self.features_vulkan12
12008                 .as_mut()
12009                 .map(|s| &mut s.descriptor_binding_uniform_buffer_update_after_bind),
12010             self.features_descriptor_indexing
12011                 .as_mut()
12012                 .map(|s| &mut s.descriptor_binding_uniform_buffer_update_after_bind),
12013         ]
12014         .into_iter()
12015         .flatten()
12016         .next()
12017         {
12018             *f = features.descriptor_binding_uniform_buffer_update_after_bind as ash::vk::Bool32;
12019         }
12020         if let Some(f) = [
12021             self.features_vulkan12
12022                 .as_mut()
12023                 .map(|s| &mut s.descriptor_binding_uniform_texel_buffer_update_after_bind),
12024             self.features_descriptor_indexing
12025                 .as_mut()
12026                 .map(|s| &mut s.descriptor_binding_uniform_texel_buffer_update_after_bind),
12027         ]
12028         .into_iter()
12029         .flatten()
12030         .next()
12031         {
12032             *f = features.descriptor_binding_uniform_texel_buffer_update_after_bind
12033                 as ash::vk::Bool32;
12034         }
12035         if let Some(f) = [
12036             self.features_vulkan12
12037                 .as_mut()
12038                 .map(|s| &mut s.descriptor_binding_update_unused_while_pending),
12039             self.features_descriptor_indexing
12040                 .as_mut()
12041                 .map(|s| &mut s.descriptor_binding_update_unused_while_pending),
12042         ]
12043         .into_iter()
12044         .flatten()
12045         .next()
12046         {
12047             *f = features.descriptor_binding_update_unused_while_pending as ash::vk::Bool32;
12048         }
12049         if let Some(f) = [
12050             self.features_vulkan12
12051                 .as_mut()
12052                 .map(|s| &mut s.descriptor_binding_variable_descriptor_count),
12053             self.features_descriptor_indexing
12054                 .as_mut()
12055                 .map(|s| &mut s.descriptor_binding_variable_descriptor_count),
12056         ]
12057         .into_iter()
12058         .flatten()
12059         .next()
12060         {
12061             *f = features.descriptor_binding_variable_descriptor_count as ash::vk::Bool32;
12062         }
12063         if let Some(f) = [self
12064             .features_descriptor_buffer_ext
12065             .as_mut()
12066             .map(|s| &mut s.descriptor_buffer)]
12067         .into_iter()
12068         .flatten()
12069         .next()
12070         {
12071             *f = features.descriptor_buffer as ash::vk::Bool32;
12072         }
12073         if let Some(f) = [self
12074             .features_descriptor_buffer_ext
12075             .as_mut()
12076             .map(|s| &mut s.descriptor_buffer_capture_replay)]
12077         .into_iter()
12078         .flatten()
12079         .next()
12080         {
12081             *f = features.descriptor_buffer_capture_replay as ash::vk::Bool32;
12082         }
12083         if let Some(f) = [self
12084             .features_descriptor_buffer_ext
12085             .as_mut()
12086             .map(|s| &mut s.descriptor_buffer_image_layout_ignored)]
12087         .into_iter()
12088         .flatten()
12089         .next()
12090         {
12091             *f = features.descriptor_buffer_image_layout_ignored as ash::vk::Bool32;
12092         }
12093         if let Some(f) = [self
12094             .features_descriptor_buffer_ext
12095             .as_mut()
12096             .map(|s| &mut s.descriptor_buffer_push_descriptors)]
12097         .into_iter()
12098         .flatten()
12099         .next()
12100         {
12101             *f = features.descriptor_buffer_push_descriptors as ash::vk::Bool32;
12102         }
12103         if let Some(f) = [self
12104             .features_vulkan12
12105             .as_mut()
12106             .map(|s| &mut s.descriptor_indexing)]
12107         .into_iter()
12108         .flatten()
12109         .next()
12110         {
12111             *f = features.descriptor_indexing as ash::vk::Bool32;
12112         }
12113         if let Some(f) = [self
12114             .features_descriptor_set_host_mapping_valve
12115             .as_mut()
12116             .map(|s| &mut s.descriptor_set_host_mapping)]
12117         .into_iter()
12118         .flatten()
12119         .next()
12120         {
12121             *f = features.descriptor_set_host_mapping as ash::vk::Bool32;
12122         }
12123         if let Some(f) = [self
12124             .features_coherent_memory_amd
12125             .as_mut()
12126             .map(|s| &mut s.device_coherent_memory)]
12127         .into_iter()
12128         .flatten()
12129         .next()
12130         {
12131             *f = features.device_coherent_memory as ash::vk::Bool32;
12132         }
12133         if let Some(f) = [self
12134             .features_fault_ext
12135             .as_mut()
12136             .map(|s| &mut s.device_fault)]
12137         .into_iter()
12138         .flatten()
12139         .next()
12140         {
12141             *f = features.device_fault as ash::vk::Bool32;
12142         }
12143         if let Some(f) = [self
12144             .features_fault_ext
12145             .as_mut()
12146             .map(|s| &mut s.device_fault_vendor_binary)]
12147         .into_iter()
12148         .flatten()
12149         .next()
12150         {
12151             *f = features.device_fault_vendor_binary as ash::vk::Bool32;
12152         }
12153         if let Some(f) = [self
12154             .features_device_generated_commands_nv
12155             .as_mut()
12156             .map(|s| &mut s.device_generated_commands)]
12157         .into_iter()
12158         .flatten()
12159         .next()
12160         {
12161             *f = features.device_generated_commands as ash::vk::Bool32;
12162         }
12163         if let Some(f) = [self
12164             .features_device_memory_report_ext
12165             .as_mut()
12166             .map(|s| &mut s.device_memory_report)]
12167         .into_iter()
12168         .flatten()
12169         .next()
12170         {
12171             *f = features.device_memory_report as ash::vk::Bool32;
12172         }
12173         if let Some(f) = [self
12174             .features_diagnostics_config_nv
12175             .as_mut()
12176             .map(|s| &mut s.diagnostics_config)]
12177         .into_iter()
12178         .flatten()
12179         .next()
12180         {
12181             *f = features.diagnostics_config as ash::vk::Bool32;
12182         }
12183         if let Some(f) = [self
12184             .features_vulkan12
12185             .as_mut()
12186             .map(|s| &mut s.draw_indirect_count)]
12187         .into_iter()
12188         .flatten()
12189         .next()
12190         {
12191             *f = features.draw_indirect_count as ash::vk::Bool32;
12192         }
12193         if let Some(f) = [&mut self.features_vulkan10.features.draw_indirect_first_instance]
12194             .into_iter()
12195             .next()
12196         {
12197             *f = features.draw_indirect_first_instance as ash::vk::Bool32;
12198         }
12199         if let Some(f) = [&mut self.features_vulkan10.features.dual_src_blend]
12200             .into_iter()
12201             .next()
12202         {
12203             *f = features.dual_src_blend as ash::vk::Bool32;
12204         }
12205         if let Some(f) = [
12206             self.features_vulkan13
12207                 .as_mut()
12208                 .map(|s| &mut s.dynamic_rendering),
12209             self.features_dynamic_rendering
12210                 .as_mut()
12211                 .map(|s| &mut s.dynamic_rendering),
12212         ]
12213         .into_iter()
12214         .flatten()
12215         .next()
12216         {
12217             *f = features.dynamic_rendering as ash::vk::Bool32;
12218         }
12219         if let Some(f) = [self
12220             .features_portability_subset_khr
12221             .as_mut()
12222             .map(|s| &mut s.events)]
12223         .into_iter()
12224         .flatten()
12225         .next()
12226         {
12227             *f = features.events as ash::vk::Bool32;
12228         }
12229         if let Some(f) = [self
12230             .features_exclusive_scissor_nv
12231             .as_mut()
12232             .map(|s| &mut s.exclusive_scissor)]
12233         .into_iter()
12234         .flatten()
12235         .next()
12236         {
12237             *f = features.exclusive_scissor as ash::vk::Bool32;
12238         }
12239         if let Some(f) = [self
12240             .features_extended_dynamic_state_ext
12241             .as_mut()
12242             .map(|s| &mut s.extended_dynamic_state)]
12243         .into_iter()
12244         .flatten()
12245         .next()
12246         {
12247             *f = features.extended_dynamic_state as ash::vk::Bool32;
12248         }
12249         if let Some(f) = [self
12250             .features_extended_dynamic_state2_ext
12251             .as_mut()
12252             .map(|s| &mut s.extended_dynamic_state2)]
12253         .into_iter()
12254         .flatten()
12255         .next()
12256         {
12257             *f = features.extended_dynamic_state2 as ash::vk::Bool32;
12258         }
12259         if let Some(f) = [self
12260             .features_extended_dynamic_state2_ext
12261             .as_mut()
12262             .map(|s| &mut s.extended_dynamic_state2_logic_op)]
12263         .into_iter()
12264         .flatten()
12265         .next()
12266         {
12267             *f = features.extended_dynamic_state2_logic_op as ash::vk::Bool32;
12268         }
12269         if let Some(f) = [self
12270             .features_extended_dynamic_state2_ext
12271             .as_mut()
12272             .map(|s| &mut s.extended_dynamic_state2_patch_control_points)]
12273         .into_iter()
12274         .flatten()
12275         .next()
12276         {
12277             *f = features.extended_dynamic_state2_patch_control_points as ash::vk::Bool32;
12278         }
12279         if let Some(f) = [self
12280             .features_extended_dynamic_state3_ext
12281             .as_mut()
12282             .map(|s| &mut s.extended_dynamic_state3_alpha_to_coverage_enable)]
12283         .into_iter()
12284         .flatten()
12285         .next()
12286         {
12287             *f = features.extended_dynamic_state3_alpha_to_coverage_enable as ash::vk::Bool32;
12288         }
12289         if let Some(f) = [self
12290             .features_extended_dynamic_state3_ext
12291             .as_mut()
12292             .map(|s| &mut s.extended_dynamic_state3_alpha_to_one_enable)]
12293         .into_iter()
12294         .flatten()
12295         .next()
12296         {
12297             *f = features.extended_dynamic_state3_alpha_to_one_enable as ash::vk::Bool32;
12298         }
12299         if let Some(f) = [self
12300             .features_extended_dynamic_state3_ext
12301             .as_mut()
12302             .map(|s| &mut s.extended_dynamic_state3_color_blend_advanced)]
12303         .into_iter()
12304         .flatten()
12305         .next()
12306         {
12307             *f = features.extended_dynamic_state3_color_blend_advanced as ash::vk::Bool32;
12308         }
12309         if let Some(f) = [self
12310             .features_extended_dynamic_state3_ext
12311             .as_mut()
12312             .map(|s| &mut s.extended_dynamic_state3_color_blend_enable)]
12313         .into_iter()
12314         .flatten()
12315         .next()
12316         {
12317             *f = features.extended_dynamic_state3_color_blend_enable as ash::vk::Bool32;
12318         }
12319         if let Some(f) = [self
12320             .features_extended_dynamic_state3_ext
12321             .as_mut()
12322             .map(|s| &mut s.extended_dynamic_state3_color_blend_equation)]
12323         .into_iter()
12324         .flatten()
12325         .next()
12326         {
12327             *f = features.extended_dynamic_state3_color_blend_equation as ash::vk::Bool32;
12328         }
12329         if let Some(f) = [self
12330             .features_extended_dynamic_state3_ext
12331             .as_mut()
12332             .map(|s| &mut s.extended_dynamic_state3_color_write_mask)]
12333         .into_iter()
12334         .flatten()
12335         .next()
12336         {
12337             *f = features.extended_dynamic_state3_color_write_mask as ash::vk::Bool32;
12338         }
12339         if let Some(f) = [self
12340             .features_extended_dynamic_state3_ext
12341             .as_mut()
12342             .map(|s| &mut s.extended_dynamic_state3_conservative_rasterization_mode)]
12343         .into_iter()
12344         .flatten()
12345         .next()
12346         {
12347             *f =
12348                 features.extended_dynamic_state3_conservative_rasterization_mode as ash::vk::Bool32;
12349         }
12350         if let Some(f) = [self
12351             .features_extended_dynamic_state3_ext
12352             .as_mut()
12353             .map(|s| &mut s.extended_dynamic_state3_coverage_modulation_mode)]
12354         .into_iter()
12355         .flatten()
12356         .next()
12357         {
12358             *f = features.extended_dynamic_state3_coverage_modulation_mode as ash::vk::Bool32;
12359         }
12360         if let Some(f) = [self
12361             .features_extended_dynamic_state3_ext
12362             .as_mut()
12363             .map(|s| &mut s.extended_dynamic_state3_coverage_modulation_table)]
12364         .into_iter()
12365         .flatten()
12366         .next()
12367         {
12368             *f = features.extended_dynamic_state3_coverage_modulation_table as ash::vk::Bool32;
12369         }
12370         if let Some(f) = [self
12371             .features_extended_dynamic_state3_ext
12372             .as_mut()
12373             .map(|s| &mut s.extended_dynamic_state3_coverage_modulation_table_enable)]
12374         .into_iter()
12375         .flatten()
12376         .next()
12377         {
12378             *f = features.extended_dynamic_state3_coverage_modulation_table_enable
12379                 as ash::vk::Bool32;
12380         }
12381         if let Some(f) = [self
12382             .features_extended_dynamic_state3_ext
12383             .as_mut()
12384             .map(|s| &mut s.extended_dynamic_state3_coverage_reduction_mode)]
12385         .into_iter()
12386         .flatten()
12387         .next()
12388         {
12389             *f = features.extended_dynamic_state3_coverage_reduction_mode as ash::vk::Bool32;
12390         }
12391         if let Some(f) = [self
12392             .features_extended_dynamic_state3_ext
12393             .as_mut()
12394             .map(|s| &mut s.extended_dynamic_state3_coverage_to_color_enable)]
12395         .into_iter()
12396         .flatten()
12397         .next()
12398         {
12399             *f = features.extended_dynamic_state3_coverage_to_color_enable as ash::vk::Bool32;
12400         }
12401         if let Some(f) = [self
12402             .features_extended_dynamic_state3_ext
12403             .as_mut()
12404             .map(|s| &mut s.extended_dynamic_state3_coverage_to_color_location)]
12405         .into_iter()
12406         .flatten()
12407         .next()
12408         {
12409             *f = features.extended_dynamic_state3_coverage_to_color_location as ash::vk::Bool32;
12410         }
12411         if let Some(f) = [self
12412             .features_extended_dynamic_state3_ext
12413             .as_mut()
12414             .map(|s| &mut s.extended_dynamic_state3_depth_clamp_enable)]
12415         .into_iter()
12416         .flatten()
12417         .next()
12418         {
12419             *f = features.extended_dynamic_state3_depth_clamp_enable as ash::vk::Bool32;
12420         }
12421         if let Some(f) = [self
12422             .features_extended_dynamic_state3_ext
12423             .as_mut()
12424             .map(|s| &mut s.extended_dynamic_state3_depth_clip_enable)]
12425         .into_iter()
12426         .flatten()
12427         .next()
12428         {
12429             *f = features.extended_dynamic_state3_depth_clip_enable as ash::vk::Bool32;
12430         }
12431         if let Some(f) = [self
12432             .features_extended_dynamic_state3_ext
12433             .as_mut()
12434             .map(|s| &mut s.extended_dynamic_state3_depth_clip_negative_one_to_one)]
12435         .into_iter()
12436         .flatten()
12437         .next()
12438         {
12439             *f = features.extended_dynamic_state3_depth_clip_negative_one_to_one as ash::vk::Bool32;
12440         }
12441         if let Some(f) = [self
12442             .features_extended_dynamic_state3_ext
12443             .as_mut()
12444             .map(|s| &mut s.extended_dynamic_state3_extra_primitive_overestimation_size)]
12445         .into_iter()
12446         .flatten()
12447         .next()
12448         {
12449             *f = features.extended_dynamic_state3_extra_primitive_overestimation_size
12450                 as ash::vk::Bool32;
12451         }
12452         if let Some(f) = [self
12453             .features_extended_dynamic_state3_ext
12454             .as_mut()
12455             .map(|s| &mut s.extended_dynamic_state3_line_rasterization_mode)]
12456         .into_iter()
12457         .flatten()
12458         .next()
12459         {
12460             *f = features.extended_dynamic_state3_line_rasterization_mode as ash::vk::Bool32;
12461         }
12462         if let Some(f) = [self
12463             .features_extended_dynamic_state3_ext
12464             .as_mut()
12465             .map(|s| &mut s.extended_dynamic_state3_line_stipple_enable)]
12466         .into_iter()
12467         .flatten()
12468         .next()
12469         {
12470             *f = features.extended_dynamic_state3_line_stipple_enable as ash::vk::Bool32;
12471         }
12472         if let Some(f) = [self
12473             .features_extended_dynamic_state3_ext
12474             .as_mut()
12475             .map(|s| &mut s.extended_dynamic_state3_logic_op_enable)]
12476         .into_iter()
12477         .flatten()
12478         .next()
12479         {
12480             *f = features.extended_dynamic_state3_logic_op_enable as ash::vk::Bool32;
12481         }
12482         if let Some(f) = [self
12483             .features_extended_dynamic_state3_ext
12484             .as_mut()
12485             .map(|s| &mut s.extended_dynamic_state3_polygon_mode)]
12486         .into_iter()
12487         .flatten()
12488         .next()
12489         {
12490             *f = features.extended_dynamic_state3_polygon_mode as ash::vk::Bool32;
12491         }
12492         if let Some(f) = [self
12493             .features_extended_dynamic_state3_ext
12494             .as_mut()
12495             .map(|s| &mut s.extended_dynamic_state3_provoking_vertex_mode)]
12496         .into_iter()
12497         .flatten()
12498         .next()
12499         {
12500             *f = features.extended_dynamic_state3_provoking_vertex_mode as ash::vk::Bool32;
12501         }
12502         if let Some(f) = [self
12503             .features_extended_dynamic_state3_ext
12504             .as_mut()
12505             .map(|s| &mut s.extended_dynamic_state3_rasterization_samples)]
12506         .into_iter()
12507         .flatten()
12508         .next()
12509         {
12510             *f = features.extended_dynamic_state3_rasterization_samples as ash::vk::Bool32;
12511         }
12512         if let Some(f) = [self
12513             .features_extended_dynamic_state3_ext
12514             .as_mut()
12515             .map(|s| &mut s.extended_dynamic_state3_rasterization_stream)]
12516         .into_iter()
12517         .flatten()
12518         .next()
12519         {
12520             *f = features.extended_dynamic_state3_rasterization_stream as ash::vk::Bool32;
12521         }
12522         if let Some(f) = [self
12523             .features_extended_dynamic_state3_ext
12524             .as_mut()
12525             .map(|s| &mut s.extended_dynamic_state3_representative_fragment_test_enable)]
12526         .into_iter()
12527         .flatten()
12528         .next()
12529         {
12530             *f = features.extended_dynamic_state3_representative_fragment_test_enable
12531                 as ash::vk::Bool32;
12532         }
12533         if let Some(f) = [self
12534             .features_extended_dynamic_state3_ext
12535             .as_mut()
12536             .map(|s| &mut s.extended_dynamic_state3_sample_locations_enable)]
12537         .into_iter()
12538         .flatten()
12539         .next()
12540         {
12541             *f = features.extended_dynamic_state3_sample_locations_enable as ash::vk::Bool32;
12542         }
12543         if let Some(f) = [self
12544             .features_extended_dynamic_state3_ext
12545             .as_mut()
12546             .map(|s| &mut s.extended_dynamic_state3_sample_mask)]
12547         .into_iter()
12548         .flatten()
12549         .next()
12550         {
12551             *f = features.extended_dynamic_state3_sample_mask as ash::vk::Bool32;
12552         }
12553         if let Some(f) = [self
12554             .features_extended_dynamic_state3_ext
12555             .as_mut()
12556             .map(|s| &mut s.extended_dynamic_state3_shading_rate_image_enable)]
12557         .into_iter()
12558         .flatten()
12559         .next()
12560         {
12561             *f = features.extended_dynamic_state3_shading_rate_image_enable as ash::vk::Bool32;
12562         }
12563         if let Some(f) = [self
12564             .features_extended_dynamic_state3_ext
12565             .as_mut()
12566             .map(|s| &mut s.extended_dynamic_state3_tessellation_domain_origin)]
12567         .into_iter()
12568         .flatten()
12569         .next()
12570         {
12571             *f = features.extended_dynamic_state3_tessellation_domain_origin as ash::vk::Bool32;
12572         }
12573         if let Some(f) = [self
12574             .features_extended_dynamic_state3_ext
12575             .as_mut()
12576             .map(|s| &mut s.extended_dynamic_state3_viewport_swizzle)]
12577         .into_iter()
12578         .flatten()
12579         .next()
12580         {
12581             *f = features.extended_dynamic_state3_viewport_swizzle as ash::vk::Bool32;
12582         }
12583         if let Some(f) = [self
12584             .features_extended_dynamic_state3_ext
12585             .as_mut()
12586             .map(|s| &mut s.extended_dynamic_state3_viewport_w_scaling_enable)]
12587         .into_iter()
12588         .flatten()
12589         .next()
12590         {
12591             *f = features.extended_dynamic_state3_viewport_w_scaling_enable as ash::vk::Bool32;
12592         }
12593         if let Some(f) = [self
12594             .features_external_memory_rdma_nv
12595             .as_mut()
12596             .map(|s| &mut s.external_memory_rdma)]
12597         .into_iter()
12598         .flatten()
12599         .next()
12600         {
12601             *f = features.external_memory_rdma as ash::vk::Bool32;
12602         }
12603         if let Some(f) = [&mut self.features_vulkan10.features.fill_mode_non_solid]
12604             .into_iter()
12605             .next()
12606         {
12607             *f = features.fill_mode_non_solid as ash::vk::Bool32;
12608         }
12609         if let Some(f) = [self
12610             .features_4444formats_ext
12611             .as_mut()
12612             .map(|s| &mut s.format_a4b4g4r4)]
12613         .into_iter()
12614         .flatten()
12615         .next()
12616         {
12617             *f = features.format_a4b4g4r4 as ash::vk::Bool32;
12618         }
12619         if let Some(f) = [self
12620             .features_4444formats_ext
12621             .as_mut()
12622             .map(|s| &mut s.format_a4r4g4b4)]
12623         .into_iter()
12624         .flatten()
12625         .next()
12626         {
12627             *f = features.format_a4r4g4b4 as ash::vk::Bool32;
12628         }
12629         if let Some(f) = [self
12630             .features_rgba10x6_formats_ext
12631             .as_mut()
12632             .map(|s| &mut s.format_rgba10x6_without_y_cb_cr_sampler)]
12633         .into_iter()
12634         .flatten()
12635         .next()
12636         {
12637             *f = features.format_rgba10x6_without_y_cb_cr_sampler as ash::vk::Bool32;
12638         }
12639         if let Some(f) = [self
12640             .features_fragment_density_map_ext
12641             .as_mut()
12642             .map(|s| &mut s.fragment_density_map)]
12643         .into_iter()
12644         .flatten()
12645         .next()
12646         {
12647             *f = features.fragment_density_map as ash::vk::Bool32;
12648         }
12649         if let Some(f) = [self
12650             .features_fragment_density_map2_ext
12651             .as_mut()
12652             .map(|s| &mut s.fragment_density_map_deferred)]
12653         .into_iter()
12654         .flatten()
12655         .next()
12656         {
12657             *f = features.fragment_density_map_deferred as ash::vk::Bool32;
12658         }
12659         if let Some(f) = [self
12660             .features_fragment_density_map_ext
12661             .as_mut()
12662             .map(|s| &mut s.fragment_density_map_dynamic)]
12663         .into_iter()
12664         .flatten()
12665         .next()
12666         {
12667             *f = features.fragment_density_map_dynamic as ash::vk::Bool32;
12668         }
12669         if let Some(f) = [self
12670             .features_fragment_density_map_ext
12671             .as_mut()
12672             .map(|s| &mut s.fragment_density_map_non_subsampled_images)]
12673         .into_iter()
12674         .flatten()
12675         .next()
12676         {
12677             *f = features.fragment_density_map_non_subsampled_images as ash::vk::Bool32;
12678         }
12679         if let Some(f) = [self
12680             .features_fragment_density_map_offset_qcom
12681             .as_mut()
12682             .map(|s| &mut s.fragment_density_map_offset)]
12683         .into_iter()
12684         .flatten()
12685         .next()
12686         {
12687             *f = features.fragment_density_map_offset as ash::vk::Bool32;
12688         }
12689         if let Some(f) = [self
12690             .features_fragment_shader_barycentric_khr
12691             .as_mut()
12692             .map(|s| &mut s.fragment_shader_barycentric)]
12693         .into_iter()
12694         .flatten()
12695         .next()
12696         {
12697             *f = features.fragment_shader_barycentric as ash::vk::Bool32;
12698         }
12699         if let Some(f) = [self
12700             .features_fragment_shader_interlock_ext
12701             .as_mut()
12702             .map(|s| &mut s.fragment_shader_pixel_interlock)]
12703         .into_iter()
12704         .flatten()
12705         .next()
12706         {
12707             *f = features.fragment_shader_pixel_interlock as ash::vk::Bool32;
12708         }
12709         if let Some(f) = [self
12710             .features_fragment_shader_interlock_ext
12711             .as_mut()
12712             .map(|s| &mut s.fragment_shader_sample_interlock)]
12713         .into_iter()
12714         .flatten()
12715         .next()
12716         {
12717             *f = features.fragment_shader_sample_interlock as ash::vk::Bool32;
12718         }
12719         if let Some(f) = [self
12720             .features_fragment_shader_interlock_ext
12721             .as_mut()
12722             .map(|s| &mut s.fragment_shader_shading_rate_interlock)]
12723         .into_iter()
12724         .flatten()
12725         .next()
12726         {
12727             *f = features.fragment_shader_shading_rate_interlock as ash::vk::Bool32;
12728         }
12729         if let Some(f) = [self
12730             .features_fragment_shading_rate_enums_nv
12731             .as_mut()
12732             .map(|s| &mut s.fragment_shading_rate_enums)]
12733         .into_iter()
12734         .flatten()
12735         .next()
12736         {
12737             *f = features.fragment_shading_rate_enums as ash::vk::Bool32;
12738         }
12739         if let Some(f) = [&mut self.features_vulkan10.features.fragment_stores_and_atomics]
12740             .into_iter()
12741             .next()
12742         {
12743             *f = features.fragment_stores_and_atomics as ash::vk::Bool32;
12744         }
12745         if let Some(f) = [&mut self.features_vulkan10.features.full_draw_index_uint32]
12746             .into_iter()
12747             .next()
12748         {
12749             *f = features.full_draw_index_uint32 as ash::vk::Bool32;
12750         }
12751         if let Some(f) = [&mut self.features_vulkan10.features.geometry_shader]
12752             .into_iter()
12753             .next()
12754         {
12755             *f = features.geometry_shader as ash::vk::Bool32;
12756         }
12757         if let Some(f) = [self
12758             .features_transform_feedback_ext
12759             .as_mut()
12760             .map(|s| &mut s.geometry_streams)]
12761         .into_iter()
12762         .flatten()
12763         .next()
12764         {
12765             *f = features.geometry_streams as ash::vk::Bool32;
12766         }
12767         if let Some(f) = [self
12768             .features_global_priority_query_khr
12769             .as_mut()
12770             .map(|s| &mut s.global_priority_query)]
12771         .into_iter()
12772         .flatten()
12773         .next()
12774         {
12775             *f = features.global_priority_query as ash::vk::Bool32;
12776         }
12777         if let Some(f) = [self
12778             .features_graphics_pipeline_library_ext
12779             .as_mut()
12780             .map(|s| &mut s.graphics_pipeline_library)]
12781         .into_iter()
12782         .flatten()
12783         .next()
12784         {
12785             *f = features.graphics_pipeline_library as ash::vk::Bool32;
12786         }
12787         if let Some(f) = [
12788             self.features_vulkan12
12789                 .as_mut()
12790                 .map(|s| &mut s.host_query_reset),
12791             self.features_host_query_reset
12792                 .as_mut()
12793                 .map(|s| &mut s.host_query_reset),
12794         ]
12795         .into_iter()
12796         .flatten()
12797         .next()
12798         {
12799             *f = features.host_query_reset as ash::vk::Bool32;
12800         }
12801         if let Some(f) = [self
12802             .features_image2_d_view_of3_d_ext
12803             .as_mut()
12804             .map(|s| &mut s.image2_d_view_of3_d)]
12805         .into_iter()
12806         .flatten()
12807         .next()
12808         {
12809             *f = features.image2_d_view_of3_d as ash::vk::Bool32;
12810         }
12811         if let Some(f) = [self
12812             .features_image_compression_control_ext
12813             .as_mut()
12814             .map(|s| &mut s.image_compression_control)]
12815         .into_iter()
12816         .flatten()
12817         .next()
12818         {
12819             *f = features.image_compression_control as ash::vk::Bool32;
12820         }
12821         if let Some(f) = [self
12822             .features_image_compression_control_swapchain_ext
12823             .as_mut()
12824             .map(|s| &mut s.image_compression_control_swapchain)]
12825         .into_iter()
12826         .flatten()
12827         .next()
12828         {
12829             *f = features.image_compression_control_swapchain as ash::vk::Bool32;
12830         }
12831         if let Some(f) = [&mut self.features_vulkan10.features.image_cube_array]
12832             .into_iter()
12833             .next()
12834         {
12835             *f = features.image_cube_array as ash::vk::Bool32;
12836         }
12837         if let Some(f) = [self
12838             .features_shader_image_footprint_nv
12839             .as_mut()
12840             .map(|s| &mut s.image_footprint)]
12841         .into_iter()
12842         .flatten()
12843         .next()
12844         {
12845             *f = features.image_footprint as ash::vk::Bool32;
12846         }
12847         if let Some(f) = [self
12848             .features_portability_subset_khr
12849             .as_mut()
12850             .map(|s| &mut s.image_view2_d_on3_d_image)]
12851         .into_iter()
12852         .flatten()
12853         .next()
12854         {
12855             *f = features.image_view2_d_on3_d_image as ash::vk::Bool32;
12856         }
12857         if let Some(f) = [self
12858             .features_portability_subset_khr
12859             .as_mut()
12860             .map(|s| &mut s.image_view_format_reinterpretation)]
12861         .into_iter()
12862         .flatten()
12863         .next()
12864         {
12865             *f = features.image_view_format_reinterpretation as ash::vk::Bool32;
12866         }
12867         if let Some(f) = [self
12868             .features_portability_subset_khr
12869             .as_mut()
12870             .map(|s| &mut s.image_view_format_swizzle)]
12871         .into_iter()
12872         .flatten()
12873         .next()
12874         {
12875             *f = features.image_view_format_swizzle as ash::vk::Bool32;
12876         }
12877         if let Some(f) = [
12878             self.features_vulkan12
12879                 .as_mut()
12880                 .map(|s| &mut s.imageless_framebuffer),
12881             self.features_imageless_framebuffer
12882                 .as_mut()
12883                 .map(|s| &mut s.imageless_framebuffer),
12884         ]
12885         .into_iter()
12886         .flatten()
12887         .next()
12888         {
12889             *f = features.imageless_framebuffer as ash::vk::Bool32;
12890         }
12891         if let Some(f) = [&mut self.features_vulkan10.features.independent_blend]
12892             .into_iter()
12893             .next()
12894         {
12895             *f = features.independent_blend as ash::vk::Bool32;
12896         }
12897         if let Some(f) = [self
12898             .features_index_type_uint8_ext
12899             .as_mut()
12900             .map(|s| &mut s.index_type_uint8)]
12901         .into_iter()
12902         .flatten()
12903         .next()
12904         {
12905             *f = features.index_type_uint8 as ash::vk::Bool32;
12906         }
12907         if let Some(f) = [self
12908             .features_copy_memory_indirect_nv
12909             .as_mut()
12910             .map(|s| &mut s.indirect_copy)]
12911         .into_iter()
12912         .flatten()
12913         .next()
12914         {
12915             *f = features.indirect_copy as ash::vk::Bool32;
12916         }
12917         if let Some(f) = [self
12918             .features_conditional_rendering_ext
12919             .as_mut()
12920             .map(|s| &mut s.inherited_conditional_rendering)]
12921         .into_iter()
12922         .flatten()
12923         .next()
12924         {
12925             *f = features.inherited_conditional_rendering as ash::vk::Bool32;
12926         }
12927         if let Some(f) = [&mut self.features_vulkan10.features.inherited_queries]
12928             .into_iter()
12929             .next()
12930         {
12931             *f = features.inherited_queries as ash::vk::Bool32;
12932         }
12933         if let Some(f) = [self
12934             .features_inherited_viewport_scissor_nv
12935             .as_mut()
12936             .map(|s| &mut s.inherited_viewport_scissor2_d)]
12937         .into_iter()
12938         .flatten()
12939         .next()
12940         {
12941             *f = features.inherited_viewport_scissor2_d as ash::vk::Bool32;
12942         }
12943         if let Some(f) = [
12944             self.features_vulkan13
12945                 .as_mut()
12946                 .map(|s| &mut s.inline_uniform_block),
12947             self.features_inline_uniform_block
12948                 .as_mut()
12949                 .map(|s| &mut s.inline_uniform_block),
12950         ]
12951         .into_iter()
12952         .flatten()
12953         .next()
12954         {
12955             *f = features.inline_uniform_block as ash::vk::Bool32;
12956         }
12957         if let Some(f) = [self
12958             .features_invocation_mask_huawei
12959             .as_mut()
12960             .map(|s| &mut s.invocation_mask)]
12961         .into_iter()
12962         .flatten()
12963         .next()
12964         {
12965             *f = features.invocation_mask as ash::vk::Bool32;
12966         }
12967         if let Some(f) = [&mut self.features_vulkan10.features.large_points]
12968             .into_iter()
12969             .next()
12970         {
12971             *f = features.large_points as ash::vk::Bool32;
12972         }
12973         if let Some(f) = [self
12974             .features_legacy_dithering_ext
12975             .as_mut()
12976             .map(|s| &mut s.legacy_dithering)]
12977         .into_iter()
12978         .flatten()
12979         .next()
12980         {
12981             *f = features.legacy_dithering as ash::vk::Bool32;
12982         }
12983         if let Some(f) = [self
12984             .features_linear_color_attachment_nv
12985             .as_mut()
12986             .map(|s| &mut s.linear_color_attachment)]
12987         .into_iter()
12988         .flatten()
12989         .next()
12990         {
12991             *f = features.linear_color_attachment as ash::vk::Bool32;
12992         }
12993         if let Some(f) = [&mut self.features_vulkan10.features.logic_op]
12994             .into_iter()
12995             .next()
12996         {
12997             *f = features.logic_op as ash::vk::Bool32;
12998         }
12999         if let Some(f) = [
13000             self.features_vulkan13.as_mut().map(|s| &mut s.maintenance4),
13001             self.features_maintenance4
13002                 .as_mut()
13003                 .map(|s| &mut s.maintenance4),
13004         ]
13005         .into_iter()
13006         .flatten()
13007         .next()
13008         {
13009             *f = features.maintenance4 as ash::vk::Bool32;
13010         }
13011         if let Some(f) = [self
13012             .features_memory_decompression_nv
13013             .as_mut()
13014             .map(|s| &mut s.memory_decompression)]
13015         .into_iter()
13016         .flatten()
13017         .next()
13018         {
13019             *f = features.memory_decompression as ash::vk::Bool32;
13020         }
13021         if let Some(f) = [self
13022             .features_memory_priority_ext
13023             .as_mut()
13024             .map(|s| &mut s.memory_priority)]
13025         .into_iter()
13026         .flatten()
13027         .next()
13028         {
13029             *f = features.memory_priority as ash::vk::Bool32;
13030         }
13031         if let Some(f) = [
13032             self.features_mesh_shader_ext
13033                 .as_mut()
13034                 .map(|s| &mut s.mesh_shader),
13035             self.features_mesh_shader_nv
13036                 .as_mut()
13037                 .map(|s| &mut s.mesh_shader),
13038         ]
13039         .into_iter()
13040         .flatten()
13041         .next()
13042         {
13043             *f = features.mesh_shader as ash::vk::Bool32;
13044         }
13045         if let Some(f) = [self
13046             .features_mesh_shader_ext
13047             .as_mut()
13048             .map(|s| &mut s.mesh_shader_queries)]
13049         .into_iter()
13050         .flatten()
13051         .next()
13052         {
13053             *f = features.mesh_shader_queries as ash::vk::Bool32;
13054         }
13055         if let Some(f) = [self
13056             .features_opacity_micromap_ext
13057             .as_mut()
13058             .map(|s| &mut s.micromap)]
13059         .into_iter()
13060         .flatten()
13061         .next()
13062         {
13063             *f = features.micromap as ash::vk::Bool32;
13064         }
13065         if let Some(f) = [self
13066             .features_opacity_micromap_ext
13067             .as_mut()
13068             .map(|s| &mut s.micromap_capture_replay)]
13069         .into_iter()
13070         .flatten()
13071         .next()
13072         {
13073             *f = features.micromap_capture_replay as ash::vk::Bool32;
13074         }
13075         if let Some(f) = [self
13076             .features_opacity_micromap_ext
13077             .as_mut()
13078             .map(|s| &mut s.micromap_host_commands)]
13079         .into_iter()
13080         .flatten()
13081         .next()
13082         {
13083             *f = features.micromap_host_commands as ash::vk::Bool32;
13084         }
13085         if let Some(f) = [self
13086             .features_image_view_min_lod_ext
13087             .as_mut()
13088             .map(|s| &mut s.min_lod)]
13089         .into_iter()
13090         .flatten()
13091         .next()
13092         {
13093             *f = features.min_lod as ash::vk::Bool32;
13094         }
13095         if let Some(f) = [self
13096             .features_multi_draw_ext
13097             .as_mut()
13098             .map(|s| &mut s.multi_draw)]
13099         .into_iter()
13100         .flatten()
13101         .next()
13102         {
13103             *f = features.multi_draw as ash::vk::Bool32;
13104         }
13105         if let Some(f) = [&mut self.features_vulkan10.features.multi_draw_indirect]
13106             .into_iter()
13107             .next()
13108         {
13109             *f = features.multi_draw_indirect as ash::vk::Bool32;
13110         }
13111         if let Some(f) = [&mut self.features_vulkan10.features.multi_viewport]
13112             .into_iter()
13113             .next()
13114         {
13115             *f = features.multi_viewport as ash::vk::Bool32;
13116         }
13117         if let Some(f) = [self
13118             .features_portability_subset_khr
13119             .as_mut()
13120             .map(|s| &mut s.multisample_array_image)]
13121         .into_iter()
13122         .flatten()
13123         .next()
13124         {
13125             *f = features.multisample_array_image as ash::vk::Bool32;
13126         }
13127         if let Some(f) = [self
13128             .features_multisampled_render_to_single_sampled_ext
13129             .as_mut()
13130             .map(|s| &mut s.multisampled_render_to_single_sampled)]
13131         .into_iter()
13132         .flatten()
13133         .next()
13134         {
13135             *f = features.multisampled_render_to_single_sampled as ash::vk::Bool32;
13136         }
13137         if let Some(f) = [
13138             self.features_vulkan11.as_mut().map(|s| &mut s.multiview),
13139             self.features_multiview.as_mut().map(|s| &mut s.multiview),
13140         ]
13141         .into_iter()
13142         .flatten()
13143         .next()
13144         {
13145             *f = features.multiview as ash::vk::Bool32;
13146         }
13147         if let Some(f) = [
13148             self.features_vulkan11
13149                 .as_mut()
13150                 .map(|s| &mut s.multiview_geometry_shader),
13151             self.features_multiview
13152                 .as_mut()
13153                 .map(|s| &mut s.multiview_geometry_shader),
13154         ]
13155         .into_iter()
13156         .flatten()
13157         .next()
13158         {
13159             *f = features.multiview_geometry_shader as ash::vk::Bool32;
13160         }
13161         if let Some(f) = [self
13162             .features_mesh_shader_ext
13163             .as_mut()
13164             .map(|s| &mut s.multiview_mesh_shader)]
13165         .into_iter()
13166         .flatten()
13167         .next()
13168         {
13169             *f = features.multiview_mesh_shader as ash::vk::Bool32;
13170         }
13171         if let Some(f) = [self
13172             .features_multiview_per_view_viewports_qcom
13173             .as_mut()
13174             .map(|s| &mut s.multiview_per_view_viewports)]
13175         .into_iter()
13176         .flatten()
13177         .next()
13178         {
13179             *f = features.multiview_per_view_viewports as ash::vk::Bool32;
13180         }
13181         if let Some(f) = [
13182             self.features_vulkan11
13183                 .as_mut()
13184                 .map(|s| &mut s.multiview_tessellation_shader),
13185             self.features_multiview
13186                 .as_mut()
13187                 .map(|s| &mut s.multiview_tessellation_shader),
13188         ]
13189         .into_iter()
13190         .flatten()
13191         .next()
13192         {
13193             *f = features.multiview_tessellation_shader as ash::vk::Bool32;
13194         }
13195         if let Some(f) = [self
13196             .features_portability_subset_khr
13197             .as_mut()
13198             .map(|s| &mut s.mutable_comparison_samplers)]
13199         .into_iter()
13200         .flatten()
13201         .next()
13202         {
13203             *f = features.mutable_comparison_samplers as ash::vk::Bool32;
13204         }
13205         if let Some(f) = [self
13206             .features_mutable_descriptor_type_ext
13207             .as_mut()
13208             .map(|s| &mut s.mutable_descriptor_type)]
13209         .into_iter()
13210         .flatten()
13211         .next()
13212         {
13213             *f = features.mutable_descriptor_type as ash::vk::Bool32;
13214         }
13215         if let Some(f) = [self
13216             .features_fragment_shading_rate_enums_nv
13217             .as_mut()
13218             .map(|s| &mut s.no_invocation_fragment_shading_rates)]
13219         .into_iter()
13220         .flatten()
13221         .next()
13222         {
13223             *f = features.no_invocation_fragment_shading_rates as ash::vk::Bool32;
13224         }
13225         if let Some(f) = [self
13226             .features_non_seamless_cube_map_ext
13227             .as_mut()
13228             .map(|s| &mut s.non_seamless_cube_map)]
13229         .into_iter()
13230         .flatten()
13231         .next()
13232         {
13233             *f = features.non_seamless_cube_map as ash::vk::Bool32;
13234         }
13235         if let Some(f) = [self
13236             .features_robustness2_ext
13237             .as_mut()
13238             .map(|s| &mut s.null_descriptor)]
13239         .into_iter()
13240         .flatten()
13241         .next()
13242         {
13243             *f = features.null_descriptor as ash::vk::Bool32;
13244         }
13245         if let Some(f) = [&mut self.features_vulkan10.features.occlusion_query_precise]
13246             .into_iter()
13247             .next()
13248         {
13249             *f = features.occlusion_query_precise as ash::vk::Bool32;
13250         }
13251         if let Some(f) = [self
13252             .features_optical_flow_nv
13253             .as_mut()
13254             .map(|s| &mut s.optical_flow)]
13255         .into_iter()
13256         .flatten()
13257         .next()
13258         {
13259             *f = features.optical_flow as ash::vk::Bool32;
13260         }
13261         if let Some(f) = [self
13262             .features_pageable_device_local_memory_ext
13263             .as_mut()
13264             .map(|s| &mut s.pageable_device_local_memory)]
13265         .into_iter()
13266         .flatten()
13267         .next()
13268         {
13269             *f = features.pageable_device_local_memory as ash::vk::Bool32;
13270         }
13271         if let Some(f) = [self
13272             .features_performance_query_khr
13273             .as_mut()
13274             .map(|s| &mut s.performance_counter_multiple_query_pools)]
13275         .into_iter()
13276         .flatten()
13277         .next()
13278         {
13279             *f = features.performance_counter_multiple_query_pools as ash::vk::Bool32;
13280         }
13281         if let Some(f) = [self
13282             .features_performance_query_khr
13283             .as_mut()
13284             .map(|s| &mut s.performance_counter_query_pools)]
13285         .into_iter()
13286         .flatten()
13287         .next()
13288         {
13289             *f = features.performance_counter_query_pools as ash::vk::Bool32;
13290         }
13291         if let Some(f) = [
13292             self.features_vulkan13
13293                 .as_mut()
13294                 .map(|s| &mut s.pipeline_creation_cache_control),
13295             self.features_pipeline_creation_cache_control
13296                 .as_mut()
13297                 .map(|s| &mut s.pipeline_creation_cache_control),
13298         ]
13299         .into_iter()
13300         .flatten()
13301         .next()
13302         {
13303             *f = features.pipeline_creation_cache_control as ash::vk::Bool32;
13304         }
13305         if let Some(f) = [self
13306             .features_pipeline_executable_properties_khr
13307             .as_mut()
13308             .map(|s| &mut s.pipeline_executable_info)]
13309         .into_iter()
13310         .flatten()
13311         .next()
13312         {
13313             *f = features.pipeline_executable_info as ash::vk::Bool32;
13314         }
13315         if let Some(f) = [self
13316             .features_fragment_shading_rate_khr
13317             .as_mut()
13318             .map(|s| &mut s.pipeline_fragment_shading_rate)]
13319         .into_iter()
13320         .flatten()
13321         .next()
13322         {
13323             *f = features.pipeline_fragment_shading_rate as ash::vk::Bool32;
13324         }
13325         if let Some(f) = [self
13326             .features_pipeline_properties_ext
13327             .as_mut()
13328             .map(|s| &mut s.pipeline_properties_identifier)]
13329         .into_iter()
13330         .flatten()
13331         .next()
13332         {
13333             *f = features.pipeline_properties_identifier as ash::vk::Bool32;
13334         }
13335         if let Some(f) = [self
13336             .features_pipeline_protected_access_ext
13337             .as_mut()
13338             .map(|s| &mut s.pipeline_protected_access)]
13339         .into_iter()
13340         .flatten()
13341         .next()
13342         {
13343             *f = features.pipeline_protected_access as ash::vk::Bool32;
13344         }
13345         if let Some(f) = [self
13346             .features_pipeline_robustness_ext
13347             .as_mut()
13348             .map(|s| &mut s.pipeline_robustness)]
13349         .into_iter()
13350         .flatten()
13351         .next()
13352         {
13353             *f = features.pipeline_robustness as ash::vk::Bool32;
13354         }
13355         if let Some(f) = [&mut self.features_vulkan10.features.pipeline_statistics_query]
13356             .into_iter()
13357             .next()
13358         {
13359             *f = features.pipeline_statistics_query as ash::vk::Bool32;
13360         }
13361         if let Some(f) = [self
13362             .features_portability_subset_khr
13363             .as_mut()
13364             .map(|s| &mut s.point_polygons)]
13365         .into_iter()
13366         .flatten()
13367         .next()
13368         {
13369             *f = features.point_polygons as ash::vk::Bool32;
13370         }
13371         if let Some(f) = [self
13372             .features_present_barrier_nv
13373             .as_mut()
13374             .map(|s| &mut s.present_barrier)]
13375         .into_iter()
13376         .flatten()
13377         .next()
13378         {
13379             *f = features.present_barrier as ash::vk::Bool32;
13380         }
13381         if let Some(f) = [self
13382             .features_present_id_khr
13383             .as_mut()
13384             .map(|s| &mut s.present_id)]
13385         .into_iter()
13386         .flatten()
13387         .next()
13388         {
13389             *f = features.present_id as ash::vk::Bool32;
13390         }
13391         if let Some(f) = [self
13392             .features_present_wait_khr
13393             .as_mut()
13394             .map(|s| &mut s.present_wait)]
13395         .into_iter()
13396         .flatten()
13397         .next()
13398         {
13399             *f = features.present_wait as ash::vk::Bool32;
13400         }
13401         if let Some(f) = [self
13402             .features_fragment_shading_rate_khr
13403             .as_mut()
13404             .map(|s| &mut s.primitive_fragment_shading_rate)]
13405         .into_iter()
13406         .flatten()
13407         .next()
13408         {
13409             *f = features.primitive_fragment_shading_rate as ash::vk::Bool32;
13410         }
13411         if let Some(f) = [self
13412             .features_mesh_shader_ext
13413             .as_mut()
13414             .map(|s| &mut s.primitive_fragment_shading_rate_mesh_shader)]
13415         .into_iter()
13416         .flatten()
13417         .next()
13418         {
13419             *f = features.primitive_fragment_shading_rate_mesh_shader as ash::vk::Bool32;
13420         }
13421         if let Some(f) = [self
13422             .features_primitive_topology_list_restart_ext
13423             .as_mut()
13424             .map(|s| &mut s.primitive_topology_list_restart)]
13425         .into_iter()
13426         .flatten()
13427         .next()
13428         {
13429             *f = features.primitive_topology_list_restart as ash::vk::Bool32;
13430         }
13431         if let Some(f) = [self
13432             .features_primitive_topology_list_restart_ext
13433             .as_mut()
13434             .map(|s| &mut s.primitive_topology_patch_list_restart)]
13435         .into_iter()
13436         .flatten()
13437         .next()
13438         {
13439             *f = features.primitive_topology_patch_list_restart as ash::vk::Bool32;
13440         }
13441         if let Some(f) = [self
13442             .features_primitives_generated_query_ext
13443             .as_mut()
13444             .map(|s| &mut s.primitives_generated_query)]
13445         .into_iter()
13446         .flatten()
13447         .next()
13448         {
13449             *f = features.primitives_generated_query as ash::vk::Bool32;
13450         }
13451         if let Some(f) = [self
13452             .features_primitives_generated_query_ext
13453             .as_mut()
13454             .map(|s| &mut s.primitives_generated_query_with_non_zero_streams)]
13455         .into_iter()
13456         .flatten()
13457         .next()
13458         {
13459             *f = features.primitives_generated_query_with_non_zero_streams as ash::vk::Bool32;
13460         }
13461         if let Some(f) = [self
13462             .features_primitives_generated_query_ext
13463             .as_mut()
13464             .map(|s| &mut s.primitives_generated_query_with_rasterizer_discard)]
13465         .into_iter()
13466         .flatten()
13467         .next()
13468         {
13469             *f = features.primitives_generated_query_with_rasterizer_discard as ash::vk::Bool32;
13470         }
13471         if let Some(f) = [
13472             self.features_vulkan13.as_mut().map(|s| &mut s.private_data),
13473             self.features_private_data
13474                 .as_mut()
13475                 .map(|s| &mut s.private_data),
13476         ]
13477         .into_iter()
13478         .flatten()
13479         .next()
13480         {
13481             *f = features.private_data as ash::vk::Bool32;
13482         }
13483         if let Some(f) = [
13484             self.features_vulkan11
13485                 .as_mut()
13486                 .map(|s| &mut s.protected_memory),
13487             self.features_protected_memory
13488                 .as_mut()
13489                 .map(|s| &mut s.protected_memory),
13490         ]
13491         .into_iter()
13492         .flatten()
13493         .next()
13494         {
13495             *f = features.protected_memory as ash::vk::Bool32;
13496         }
13497         if let Some(f) = [self
13498             .features_provoking_vertex_ext
13499             .as_mut()
13500             .map(|s| &mut s.provoking_vertex_last)]
13501         .into_iter()
13502         .flatten()
13503         .next()
13504         {
13505             *f = features.provoking_vertex_last as ash::vk::Bool32;
13506         }
13507         if let Some(f) = [self
13508             .features_rasterization_order_attachment_access_ext
13509             .as_mut()
13510             .map(|s| &mut s.rasterization_order_color_attachment_access)]
13511         .into_iter()
13512         .flatten()
13513         .next()
13514         {
13515             *f = features.rasterization_order_color_attachment_access as ash::vk::Bool32;
13516         }
13517         if let Some(f) = [self
13518             .features_rasterization_order_attachment_access_ext
13519             .as_mut()
13520             .map(|s| &mut s.rasterization_order_depth_attachment_access)]
13521         .into_iter()
13522         .flatten()
13523         .next()
13524         {
13525             *f = features.rasterization_order_depth_attachment_access as ash::vk::Bool32;
13526         }
13527         if let Some(f) = [self
13528             .features_rasterization_order_attachment_access_ext
13529             .as_mut()
13530             .map(|s| &mut s.rasterization_order_stencil_attachment_access)]
13531         .into_iter()
13532         .flatten()
13533         .next()
13534         {
13535             *f = features.rasterization_order_stencil_attachment_access as ash::vk::Bool32;
13536         }
13537         if let Some(f) = [self
13538             .features_ray_query_khr
13539             .as_mut()
13540             .map(|s| &mut s.ray_query)]
13541         .into_iter()
13542         .flatten()
13543         .next()
13544         {
13545             *f = features.ray_query as ash::vk::Bool32;
13546         }
13547         if let Some(f) = [self
13548             .features_ray_tracing_invocation_reorder_nv
13549             .as_mut()
13550             .map(|s| &mut s.ray_tracing_invocation_reorder)]
13551         .into_iter()
13552         .flatten()
13553         .next()
13554         {
13555             *f = features.ray_tracing_invocation_reorder as ash::vk::Bool32;
13556         }
13557         if let Some(f) = [self
13558             .features_ray_tracing_maintenance1_khr
13559             .as_mut()
13560             .map(|s| &mut s.ray_tracing_maintenance1)]
13561         .into_iter()
13562         .flatten()
13563         .next()
13564         {
13565             *f = features.ray_tracing_maintenance1 as ash::vk::Bool32;
13566         }
13567         if let Some(f) = [self
13568             .features_ray_tracing_motion_blur_nv
13569             .as_mut()
13570             .map(|s| &mut s.ray_tracing_motion_blur)]
13571         .into_iter()
13572         .flatten()
13573         .next()
13574         {
13575             *f = features.ray_tracing_motion_blur as ash::vk::Bool32;
13576         }
13577         if let Some(f) = [self
13578             .features_ray_tracing_motion_blur_nv
13579             .as_mut()
13580             .map(|s| &mut s.ray_tracing_motion_blur_pipeline_trace_rays_indirect)]
13581         .into_iter()
13582         .flatten()
13583         .next()
13584         {
13585             *f = features.ray_tracing_motion_blur_pipeline_trace_rays_indirect as ash::vk::Bool32;
13586         }
13587         if let Some(f) = [self
13588             .features_ray_tracing_pipeline_khr
13589             .as_mut()
13590             .map(|s| &mut s.ray_tracing_pipeline)]
13591         .into_iter()
13592         .flatten()
13593         .next()
13594         {
13595             *f = features.ray_tracing_pipeline as ash::vk::Bool32;
13596         }
13597         if let Some(f) = [self
13598             .features_ray_tracing_pipeline_khr
13599             .as_mut()
13600             .map(|s| &mut s.ray_tracing_pipeline_shader_group_handle_capture_replay)]
13601         .into_iter()
13602         .flatten()
13603         .next()
13604         {
13605             *f =
13606                 features.ray_tracing_pipeline_shader_group_handle_capture_replay as ash::vk::Bool32;
13607         }
13608         if let Some(f) = [self
13609             .features_ray_tracing_pipeline_khr
13610             .as_mut()
13611             .map(|s| &mut s.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed)]
13612         .into_iter()
13613         .flatten()
13614         .next()
13615         {
13616             *f = features.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
13617                 as ash::vk::Bool32;
13618         }
13619         if let Some(f) = [self
13620             .features_ray_tracing_pipeline_khr
13621             .as_mut()
13622             .map(|s| &mut s.ray_tracing_pipeline_trace_rays_indirect)]
13623         .into_iter()
13624         .flatten()
13625         .next()
13626         {
13627             *f = features.ray_tracing_pipeline_trace_rays_indirect as ash::vk::Bool32;
13628         }
13629         if let Some(f) = [self
13630             .features_ray_tracing_maintenance1_khr
13631             .as_mut()
13632             .map(|s| &mut s.ray_tracing_pipeline_trace_rays_indirect2)]
13633         .into_iter()
13634         .flatten()
13635         .next()
13636         {
13637             *f = features.ray_tracing_pipeline_trace_rays_indirect2 as ash::vk::Bool32;
13638         }
13639         if let Some(f) = [self
13640             .features_ray_tracing_pipeline_khr
13641             .as_mut()
13642             .map(|s| &mut s.ray_traversal_primitive_culling)]
13643         .into_iter()
13644         .flatten()
13645         .next()
13646         {
13647             *f = features.ray_traversal_primitive_culling as ash::vk::Bool32;
13648         }
13649         if let Some(f) = [self
13650             .features_line_rasterization_ext
13651             .as_mut()
13652             .map(|s| &mut s.rectangular_lines)]
13653         .into_iter()
13654         .flatten()
13655         .next()
13656         {
13657             *f = features.rectangular_lines as ash::vk::Bool32;
13658         }
13659         if let Some(f) = [self
13660             .features_address_binding_report_ext
13661             .as_mut()
13662             .map(|s| &mut s.report_address_binding)]
13663         .into_iter()
13664         .flatten()
13665         .next()
13666         {
13667             *f = features.report_address_binding as ash::vk::Bool32;
13668         }
13669         if let Some(f) = [self
13670             .features_representative_fragment_test_nv
13671             .as_mut()
13672             .map(|s| &mut s.representative_fragment_test)]
13673         .into_iter()
13674         .flatten()
13675         .next()
13676         {
13677             *f = features.representative_fragment_test as ash::vk::Bool32;
13678         }
13679         if let Some(f) = [&mut self.features_vulkan10.features.robust_buffer_access]
13680             .into_iter()
13681             .next()
13682         {
13683             *f = features.robust_buffer_access as ash::vk::Bool32;
13684         }
13685         if let Some(f) = [self
13686             .features_robustness2_ext
13687             .as_mut()
13688             .map(|s| &mut s.robust_buffer_access2)]
13689         .into_iter()
13690         .flatten()
13691         .next()
13692         {
13693             *f = features.robust_buffer_access2 as ash::vk::Bool32;
13694         }
13695         if let Some(f) = [
13696             self.features_vulkan13
13697                 .as_mut()
13698                 .map(|s| &mut s.robust_image_access),
13699             self.features_image_robustness
13700                 .as_mut()
13701                 .map(|s| &mut s.robust_image_access),
13702         ]
13703         .into_iter()
13704         .flatten()
13705         .next()
13706         {
13707             *f = features.robust_image_access as ash::vk::Bool32;
13708         }
13709         if let Some(f) = [self
13710             .features_robustness2_ext
13711             .as_mut()
13712             .map(|s| &mut s.robust_image_access2)]
13713         .into_iter()
13714         .flatten()
13715         .next()
13716         {
13717             *f = features.robust_image_access2 as ash::vk::Bool32;
13718         }
13719         if let Some(f) = [
13720             self.features_vulkan12
13721                 .as_mut()
13722                 .map(|s| &mut s.runtime_descriptor_array),
13723             self.features_descriptor_indexing
13724                 .as_mut()
13725                 .map(|s| &mut s.runtime_descriptor_array),
13726         ]
13727         .into_iter()
13728         .flatten()
13729         .next()
13730         {
13731             *f = features.runtime_descriptor_array as ash::vk::Bool32;
13732         }
13733         if let Some(f) = [&mut self.features_vulkan10.features.sample_rate_shading]
13734             .into_iter()
13735             .next()
13736         {
13737             *f = features.sample_rate_shading as ash::vk::Bool32;
13738         }
13739         if let Some(f) = [self
13740             .features_image2_d_view_of3_d_ext
13741             .as_mut()
13742             .map(|s| &mut s.sampler2_d_view_of3_d)]
13743         .into_iter()
13744         .flatten()
13745         .next()
13746         {
13747             *f = features.sampler2_d_view_of3_d as ash::vk::Bool32;
13748         }
13749         if let Some(f) = [&mut self.features_vulkan10.features.sampler_anisotropy]
13750             .into_iter()
13751             .next()
13752         {
13753             *f = features.sampler_anisotropy as ash::vk::Bool32;
13754         }
13755         if let Some(f) = [self
13756             .features_vulkan12
13757             .as_mut()
13758             .map(|s| &mut s.sampler_filter_minmax)]
13759         .into_iter()
13760         .flatten()
13761         .next()
13762         {
13763             *f = features.sampler_filter_minmax as ash::vk::Bool32;
13764         }
13765         if let Some(f) = [self
13766             .features_portability_subset_khr
13767             .as_mut()
13768             .map(|s| &mut s.sampler_mip_lod_bias)]
13769         .into_iter()
13770         .flatten()
13771         .next()
13772         {
13773             *f = features.sampler_mip_lod_bias as ash::vk::Bool32;
13774         }
13775         if let Some(f) = [self
13776             .features_vulkan12
13777             .as_mut()
13778             .map(|s| &mut s.sampler_mirror_clamp_to_edge)]
13779         .into_iter()
13780         .flatten()
13781         .next()
13782         {
13783             *f = features.sampler_mirror_clamp_to_edge as ash::vk::Bool32;
13784         }
13785         if let Some(f) = [
13786             self.features_vulkan11
13787                 .as_mut()
13788                 .map(|s| &mut s.sampler_ycbcr_conversion),
13789             self.features_sampler_ycbcr_conversion
13790                 .as_mut()
13791                 .map(|s| &mut s.sampler_ycbcr_conversion),
13792         ]
13793         .into_iter()
13794         .flatten()
13795         .next()
13796         {
13797             *f = features.sampler_ycbcr_conversion as ash::vk::Bool32;
13798         }
13799         if let Some(f) = [
13800             self.features_vulkan12
13801                 .as_mut()
13802                 .map(|s| &mut s.scalar_block_layout),
13803             self.features_scalar_block_layout
13804                 .as_mut()
13805                 .map(|s| &mut s.scalar_block_layout),
13806         ]
13807         .into_iter()
13808         .flatten()
13809         .next()
13810         {
13811             *f = features.scalar_block_layout as ash::vk::Bool32;
13812         }
13813         if let Some(f) = [
13814             self.features_vulkan12
13815                 .as_mut()
13816                 .map(|s| &mut s.separate_depth_stencil_layouts),
13817             self.features_separate_depth_stencil_layouts
13818                 .as_mut()
13819                 .map(|s| &mut s.separate_depth_stencil_layouts),
13820         ]
13821         .into_iter()
13822         .flatten()
13823         .next()
13824         {
13825             *f = features.separate_depth_stencil_layouts as ash::vk::Bool32;
13826         }
13827         if let Some(f) = [self
13828             .features_portability_subset_khr
13829             .as_mut()
13830             .map(|s| &mut s.separate_stencil_mask_ref)]
13831         .into_iter()
13832         .flatten()
13833         .next()
13834         {
13835             *f = features.separate_stencil_mask_ref as ash::vk::Bool32;
13836         }
13837         if let Some(f) = [self
13838             .features_shader_atomic_float2_ext
13839             .as_mut()
13840             .map(|s| &mut s.shader_buffer_float16_atomic_add)]
13841         .into_iter()
13842         .flatten()
13843         .next()
13844         {
13845             *f = features.shader_buffer_float16_atomic_add as ash::vk::Bool32;
13846         }
13847         if let Some(f) = [self
13848             .features_shader_atomic_float2_ext
13849             .as_mut()
13850             .map(|s| &mut s.shader_buffer_float16_atomic_min_max)]
13851         .into_iter()
13852         .flatten()
13853         .next()
13854         {
13855             *f = features.shader_buffer_float16_atomic_min_max as ash::vk::Bool32;
13856         }
13857         if let Some(f) = [self
13858             .features_shader_atomic_float2_ext
13859             .as_mut()
13860             .map(|s| &mut s.shader_buffer_float16_atomics)]
13861         .into_iter()
13862         .flatten()
13863         .next()
13864         {
13865             *f = features.shader_buffer_float16_atomics as ash::vk::Bool32;
13866         }
13867         if let Some(f) = [self
13868             .features_shader_atomic_float_ext
13869             .as_mut()
13870             .map(|s| &mut s.shader_buffer_float32_atomic_add)]
13871         .into_iter()
13872         .flatten()
13873         .next()
13874         {
13875             *f = features.shader_buffer_float32_atomic_add as ash::vk::Bool32;
13876         }
13877         if let Some(f) = [self
13878             .features_shader_atomic_float2_ext
13879             .as_mut()
13880             .map(|s| &mut s.shader_buffer_float32_atomic_min_max)]
13881         .into_iter()
13882         .flatten()
13883         .next()
13884         {
13885             *f = features.shader_buffer_float32_atomic_min_max as ash::vk::Bool32;
13886         }
13887         if let Some(f) = [self
13888             .features_shader_atomic_float_ext
13889             .as_mut()
13890             .map(|s| &mut s.shader_buffer_float32_atomics)]
13891         .into_iter()
13892         .flatten()
13893         .next()
13894         {
13895             *f = features.shader_buffer_float32_atomics as ash::vk::Bool32;
13896         }
13897         if let Some(f) = [self
13898             .features_shader_atomic_float_ext
13899             .as_mut()
13900             .map(|s| &mut s.shader_buffer_float64_atomic_add)]
13901         .into_iter()
13902         .flatten()
13903         .next()
13904         {
13905             *f = features.shader_buffer_float64_atomic_add as ash::vk::Bool32;
13906         }
13907         if let Some(f) = [self
13908             .features_shader_atomic_float2_ext
13909             .as_mut()
13910             .map(|s| &mut s.shader_buffer_float64_atomic_min_max)]
13911         .into_iter()
13912         .flatten()
13913         .next()
13914         {
13915             *f = features.shader_buffer_float64_atomic_min_max as ash::vk::Bool32;
13916         }
13917         if let Some(f) = [self
13918             .features_shader_atomic_float_ext
13919             .as_mut()
13920             .map(|s| &mut s.shader_buffer_float64_atomics)]
13921         .into_iter()
13922         .flatten()
13923         .next()
13924         {
13925             *f = features.shader_buffer_float64_atomics as ash::vk::Bool32;
13926         }
13927         if let Some(f) = [
13928             self.features_vulkan12
13929                 .as_mut()
13930                 .map(|s| &mut s.shader_buffer_int64_atomics),
13931             self.features_shader_atomic_int64
13932                 .as_mut()
13933                 .map(|s| &mut s.shader_buffer_int64_atomics),
13934         ]
13935         .into_iter()
13936         .flatten()
13937         .next()
13938         {
13939             *f = features.shader_buffer_int64_atomics as ash::vk::Bool32;
13940         }
13941         if let Some(f) = [&mut self.features_vulkan10.features.shader_clip_distance]
13942             .into_iter()
13943             .next()
13944         {
13945             *f = features.shader_clip_distance as ash::vk::Bool32;
13946         }
13947         if let Some(f) = [self
13948             .features_shader_core_builtins_arm
13949             .as_mut()
13950             .map(|s| &mut s.shader_core_builtins)]
13951         .into_iter()
13952         .flatten()
13953         .next()
13954         {
13955             *f = features.shader_core_builtins as ash::vk::Bool32;
13956         }
13957         if let Some(f) = [&mut self.features_vulkan10.features.shader_cull_distance]
13958             .into_iter()
13959             .next()
13960         {
13961             *f = features.shader_cull_distance as ash::vk::Bool32;
13962         }
13963         if let Some(f) = [
13964             self.features_vulkan13
13965                 .as_mut()
13966                 .map(|s| &mut s.shader_demote_to_helper_invocation),
13967             self.features_shader_demote_to_helper_invocation
13968                 .as_mut()
13969                 .map(|s| &mut s.shader_demote_to_helper_invocation),
13970         ]
13971         .into_iter()
13972         .flatten()
13973         .next()
13974         {
13975             *f = features.shader_demote_to_helper_invocation as ash::vk::Bool32;
13976         }
13977         if let Some(f) = [self
13978             .features_shader_clock_khr
13979             .as_mut()
13980             .map(|s| &mut s.shader_device_clock)]
13981         .into_iter()
13982         .flatten()
13983         .next()
13984         {
13985             *f = features.shader_device_clock as ash::vk::Bool32;
13986         }
13987         if let Some(f) = [
13988             self.features_vulkan11
13989                 .as_mut()
13990                 .map(|s| &mut s.shader_draw_parameters),
13991             self.features_shader_draw_parameters
13992                 .as_mut()
13993                 .map(|s| &mut s.shader_draw_parameters),
13994         ]
13995         .into_iter()
13996         .flatten()
13997         .next()
13998         {
13999             *f = features.shader_draw_parameters as ash::vk::Bool32;
14000         }
14001         if let Some(f) = [self
14002             .features_shader_early_and_late_fragment_tests_amd
14003             .as_mut()
14004             .map(|s| &mut s.shader_early_and_late_fragment_tests)]
14005         .into_iter()
14006         .flatten()
14007         .next()
14008         {
14009             *f = features.shader_early_and_late_fragment_tests as ash::vk::Bool32;
14010         }
14011         if let Some(f) = [
14012             self.features_vulkan12
14013                 .as_mut()
14014                 .map(|s| &mut s.shader_float16),
14015             self.features_shader_float16_int8
14016                 .as_mut()
14017                 .map(|s| &mut s.shader_float16),
14018         ]
14019         .into_iter()
14020         .flatten()
14021         .next()
14022         {
14023             *f = features.shader_float16 as ash::vk::Bool32;
14024         }
14025         if let Some(f) = [&mut self.features_vulkan10.features.shader_float64]
14026             .into_iter()
14027             .next()
14028         {
14029             *f = features.shader_float64 as ash::vk::Bool32;
14030         }
14031         if let Some(f) = [self
14032             .features_shader_atomic_float_ext
14033             .as_mut()
14034             .map(|s| &mut s.shader_image_float32_atomic_add)]
14035         .into_iter()
14036         .flatten()
14037         .next()
14038         {
14039             *f = features.shader_image_float32_atomic_add as ash::vk::Bool32;
14040         }
14041         if let Some(f) = [self
14042             .features_shader_atomic_float2_ext
14043             .as_mut()
14044             .map(|s| &mut s.shader_image_float32_atomic_min_max)]
14045         .into_iter()
14046         .flatten()
14047         .next()
14048         {
14049             *f = features.shader_image_float32_atomic_min_max as ash::vk::Bool32;
14050         }
14051         if let Some(f) = [self
14052             .features_shader_atomic_float_ext
14053             .as_mut()
14054             .map(|s| &mut s.shader_image_float32_atomics)]
14055         .into_iter()
14056         .flatten()
14057         .next()
14058         {
14059             *f = features.shader_image_float32_atomics as ash::vk::Bool32;
14060         }
14061         if let Some(f) = [&mut self.features_vulkan10.features.shader_image_gather_extended]
14062             .into_iter()
14063             .next()
14064         {
14065             *f = features.shader_image_gather_extended as ash::vk::Bool32;
14066         }
14067         if let Some(f) = [self
14068             .features_shader_image_atomic_int64_ext
14069             .as_mut()
14070             .map(|s| &mut s.shader_image_int64_atomics)]
14071         .into_iter()
14072         .flatten()
14073         .next()
14074         {
14075             *f = features.shader_image_int64_atomics as ash::vk::Bool32;
14076         }
14077         if let Some(f) = [
14078             self.features_vulkan12
14079                 .as_mut()
14080                 .map(|s| &mut s.shader_input_attachment_array_dynamic_indexing),
14081             self.features_descriptor_indexing
14082                 .as_mut()
14083                 .map(|s| &mut s.shader_input_attachment_array_dynamic_indexing),
14084         ]
14085         .into_iter()
14086         .flatten()
14087         .next()
14088         {
14089             *f = features.shader_input_attachment_array_dynamic_indexing as ash::vk::Bool32;
14090         }
14091         if let Some(f) = [
14092             self.features_vulkan12
14093                 .as_mut()
14094                 .map(|s| &mut s.shader_input_attachment_array_non_uniform_indexing),
14095             self.features_descriptor_indexing
14096                 .as_mut()
14097                 .map(|s| &mut s.shader_input_attachment_array_non_uniform_indexing),
14098         ]
14099         .into_iter()
14100         .flatten()
14101         .next()
14102         {
14103             *f = features.shader_input_attachment_array_non_uniform_indexing as ash::vk::Bool32;
14104         }
14105         if let Some(f) = [&mut self.features_vulkan10.features.shader_int16]
14106             .into_iter()
14107             .next()
14108         {
14109             *f = features.shader_int16 as ash::vk::Bool32;
14110         }
14111         if let Some(f) = [&mut self.features_vulkan10.features.shader_int64]
14112             .into_iter()
14113             .next()
14114         {
14115             *f = features.shader_int64 as ash::vk::Bool32;
14116         }
14117         if let Some(f) = [
14118             self.features_vulkan12.as_mut().map(|s| &mut s.shader_int8),
14119             self.features_shader_float16_int8
14120                 .as_mut()
14121                 .map(|s| &mut s.shader_int8),
14122         ]
14123         .into_iter()
14124         .flatten()
14125         .next()
14126         {
14127             *f = features.shader_int8 as ash::vk::Bool32;
14128         }
14129         if let Some(f) = [
14130             self.features_vulkan13
14131                 .as_mut()
14132                 .map(|s| &mut s.shader_integer_dot_product),
14133             self.features_shader_integer_dot_product
14134                 .as_mut()
14135                 .map(|s| &mut s.shader_integer_dot_product),
14136         ]
14137         .into_iter()
14138         .flatten()
14139         .next()
14140         {
14141             *f = features.shader_integer_dot_product as ash::vk::Bool32;
14142         }
14143         if let Some(f) = [self
14144             .features_shader_integer_functions2_intel
14145             .as_mut()
14146             .map(|s| &mut s.shader_integer_functions2)]
14147         .into_iter()
14148         .flatten()
14149         .next()
14150         {
14151             *f = features.shader_integer_functions2 as ash::vk::Bool32;
14152         }
14153         if let Some(f) = [self
14154             .features_shader_module_identifier_ext
14155             .as_mut()
14156             .map(|s| &mut s.shader_module_identifier)]
14157         .into_iter()
14158         .flatten()
14159         .next()
14160         {
14161             *f = features.shader_module_identifier as ash::vk::Bool32;
14162         }
14163         if let Some(f) = [self
14164             .features_vulkan12
14165             .as_mut()
14166             .map(|s| &mut s.shader_output_layer)]
14167         .into_iter()
14168         .flatten()
14169         .next()
14170         {
14171             *f = features.shader_output_layer as ash::vk::Bool32;
14172         }
14173         if let Some(f) = [self
14174             .features_vulkan12
14175             .as_mut()
14176             .map(|s| &mut s.shader_output_viewport_index)]
14177         .into_iter()
14178         .flatten()
14179         .next()
14180         {
14181             *f = features.shader_output_viewport_index as ash::vk::Bool32;
14182         }
14183         if let Some(f) = [&mut self.features_vulkan10.features.shader_resource_min_lod]
14184             .into_iter()
14185             .next()
14186         {
14187             *f = features.shader_resource_min_lod as ash::vk::Bool32;
14188         }
14189         if let Some(f) = [&mut self.features_vulkan10.features.shader_resource_residency]
14190             .into_iter()
14191             .next()
14192         {
14193             *f = features.shader_resource_residency as ash::vk::Bool32;
14194         }
14195         if let Some(f) = [self
14196             .features_portability_subset_khr
14197             .as_mut()
14198             .map(|s| &mut s.shader_sample_rate_interpolation_functions)]
14199         .into_iter()
14200         .flatten()
14201         .next()
14202         {
14203             *f = features.shader_sample_rate_interpolation_functions as ash::vk::Bool32;
14204         }
14205         if let Some(f) = [&mut self
14206             .features_vulkan10
14207             .features
14208             .shader_sampled_image_array_dynamic_indexing]
14209         .into_iter()
14210         .next()
14211         {
14212             *f = features.shader_sampled_image_array_dynamic_indexing as ash::vk::Bool32;
14213         }
14214         if let Some(f) = [
14215             self.features_vulkan12
14216                 .as_mut()
14217                 .map(|s| &mut s.shader_sampled_image_array_non_uniform_indexing),
14218             self.features_descriptor_indexing
14219                 .as_mut()
14220                 .map(|s| &mut s.shader_sampled_image_array_non_uniform_indexing),
14221         ]
14222         .into_iter()
14223         .flatten()
14224         .next()
14225         {
14226             *f = features.shader_sampled_image_array_non_uniform_indexing as ash::vk::Bool32;
14227         }
14228         if let Some(f) = [self
14229             .features_shader_atomic_float2_ext
14230             .as_mut()
14231             .map(|s| &mut s.shader_shared_float16_atomic_add)]
14232         .into_iter()
14233         .flatten()
14234         .next()
14235         {
14236             *f = features.shader_shared_float16_atomic_add as ash::vk::Bool32;
14237         }
14238         if let Some(f) = [self
14239             .features_shader_atomic_float2_ext
14240             .as_mut()
14241             .map(|s| &mut s.shader_shared_float16_atomic_min_max)]
14242         .into_iter()
14243         .flatten()
14244         .next()
14245         {
14246             *f = features.shader_shared_float16_atomic_min_max as ash::vk::Bool32;
14247         }
14248         if let Some(f) = [self
14249             .features_shader_atomic_float2_ext
14250             .as_mut()
14251             .map(|s| &mut s.shader_shared_float16_atomics)]
14252         .into_iter()
14253         .flatten()
14254         .next()
14255         {
14256             *f = features.shader_shared_float16_atomics as ash::vk::Bool32;
14257         }
14258         if let Some(f) = [self
14259             .features_shader_atomic_float_ext
14260             .as_mut()
14261             .map(|s| &mut s.shader_shared_float32_atomic_add)]
14262         .into_iter()
14263         .flatten()
14264         .next()
14265         {
14266             *f = features.shader_shared_float32_atomic_add as ash::vk::Bool32;
14267         }
14268         if let Some(f) = [self
14269             .features_shader_atomic_float2_ext
14270             .as_mut()
14271             .map(|s| &mut s.shader_shared_float32_atomic_min_max)]
14272         .into_iter()
14273         .flatten()
14274         .next()
14275         {
14276             *f = features.shader_shared_float32_atomic_min_max as ash::vk::Bool32;
14277         }
14278         if let Some(f) = [self
14279             .features_shader_atomic_float_ext
14280             .as_mut()
14281             .map(|s| &mut s.shader_shared_float32_atomics)]
14282         .into_iter()
14283         .flatten()
14284         .next()
14285         {
14286             *f = features.shader_shared_float32_atomics as ash::vk::Bool32;
14287         }
14288         if let Some(f) = [self
14289             .features_shader_atomic_float_ext
14290             .as_mut()
14291             .map(|s| &mut s.shader_shared_float64_atomic_add)]
14292         .into_iter()
14293         .flatten()
14294         .next()
14295         {
14296             *f = features.shader_shared_float64_atomic_add as ash::vk::Bool32;
14297         }
14298         if let Some(f) = [self
14299             .features_shader_atomic_float2_ext
14300             .as_mut()
14301             .map(|s| &mut s.shader_shared_float64_atomic_min_max)]
14302         .into_iter()
14303         .flatten()
14304         .next()
14305         {
14306             *f = features.shader_shared_float64_atomic_min_max as ash::vk::Bool32;
14307         }
14308         if let Some(f) = [self
14309             .features_shader_atomic_float_ext
14310             .as_mut()
14311             .map(|s| &mut s.shader_shared_float64_atomics)]
14312         .into_iter()
14313         .flatten()
14314         .next()
14315         {
14316             *f = features.shader_shared_float64_atomics as ash::vk::Bool32;
14317         }
14318         if let Some(f) = [
14319             self.features_vulkan12
14320                 .as_mut()
14321                 .map(|s| &mut s.shader_shared_int64_atomics),
14322             self.features_shader_atomic_int64
14323                 .as_mut()
14324                 .map(|s| &mut s.shader_shared_int64_atomics),
14325         ]
14326         .into_iter()
14327         .flatten()
14328         .next()
14329         {
14330             *f = features.shader_shared_int64_atomics as ash::vk::Bool32;
14331         }
14332         if let Some(f) = [self
14333             .features_shader_sm_builtins_nv
14334             .as_mut()
14335             .map(|s| &mut s.shader_sm_builtins)]
14336         .into_iter()
14337         .flatten()
14338         .next()
14339         {
14340             *f = features.shader_sm_builtins as ash::vk::Bool32;
14341         }
14342         if let Some(f) = [&mut self
14343             .features_vulkan10
14344             .features
14345             .shader_storage_buffer_array_dynamic_indexing]
14346         .into_iter()
14347         .next()
14348         {
14349             *f = features.shader_storage_buffer_array_dynamic_indexing as ash::vk::Bool32;
14350         }
14351         if let Some(f) = [
14352             self.features_vulkan12
14353                 .as_mut()
14354                 .map(|s| &mut s.shader_storage_buffer_array_non_uniform_indexing),
14355             self.features_descriptor_indexing
14356                 .as_mut()
14357                 .map(|s| &mut s.shader_storage_buffer_array_non_uniform_indexing),
14358         ]
14359         .into_iter()
14360         .flatten()
14361         .next()
14362         {
14363             *f = features.shader_storage_buffer_array_non_uniform_indexing as ash::vk::Bool32;
14364         }
14365         if let Some(f) = [&mut self
14366             .features_vulkan10
14367             .features
14368             .shader_storage_image_array_dynamic_indexing]
14369         .into_iter()
14370         .next()
14371         {
14372             *f = features.shader_storage_image_array_dynamic_indexing as ash::vk::Bool32;
14373         }
14374         if let Some(f) = [
14375             self.features_vulkan12
14376                 .as_mut()
14377                 .map(|s| &mut s.shader_storage_image_array_non_uniform_indexing),
14378             self.features_descriptor_indexing
14379                 .as_mut()
14380                 .map(|s| &mut s.shader_storage_image_array_non_uniform_indexing),
14381         ]
14382         .into_iter()
14383         .flatten()
14384         .next()
14385         {
14386             *f = features.shader_storage_image_array_non_uniform_indexing as ash::vk::Bool32;
14387         }
14388         if let Some(f) = [&mut self
14389             .features_vulkan10
14390             .features
14391             .shader_storage_image_extended_formats]
14392         .into_iter()
14393         .next()
14394         {
14395             *f = features.shader_storage_image_extended_formats as ash::vk::Bool32;
14396         }
14397         if let Some(f) = [&mut self
14398             .features_vulkan10
14399             .features
14400             .shader_storage_image_multisample]
14401         .into_iter()
14402         .next()
14403         {
14404             *f = features.shader_storage_image_multisample as ash::vk::Bool32;
14405         }
14406         if let Some(f) = [&mut self
14407             .features_vulkan10
14408             .features
14409             .shader_storage_image_read_without_format]
14410         .into_iter()
14411         .next()
14412         {
14413             *f = features.shader_storage_image_read_without_format as ash::vk::Bool32;
14414         }
14415         if let Some(f) = [&mut self
14416             .features_vulkan10
14417             .features
14418             .shader_storage_image_write_without_format]
14419         .into_iter()
14420         .next()
14421         {
14422             *f = features.shader_storage_image_write_without_format as ash::vk::Bool32;
14423         }
14424         if let Some(f) = [
14425             self.features_vulkan12
14426                 .as_mut()
14427                 .map(|s| &mut s.shader_storage_texel_buffer_array_dynamic_indexing),
14428             self.features_descriptor_indexing
14429                 .as_mut()
14430                 .map(|s| &mut s.shader_storage_texel_buffer_array_dynamic_indexing),
14431         ]
14432         .into_iter()
14433         .flatten()
14434         .next()
14435         {
14436             *f = features.shader_storage_texel_buffer_array_dynamic_indexing as ash::vk::Bool32;
14437         }
14438         if let Some(f) = [
14439             self.features_vulkan12
14440                 .as_mut()
14441                 .map(|s| &mut s.shader_storage_texel_buffer_array_non_uniform_indexing),
14442             self.features_descriptor_indexing
14443                 .as_mut()
14444                 .map(|s| &mut s.shader_storage_texel_buffer_array_non_uniform_indexing),
14445         ]
14446         .into_iter()
14447         .flatten()
14448         .next()
14449         {
14450             *f = features.shader_storage_texel_buffer_array_non_uniform_indexing as ash::vk::Bool32;
14451         }
14452         if let Some(f) = [self
14453             .features_shader_clock_khr
14454             .as_mut()
14455             .map(|s| &mut s.shader_subgroup_clock)]
14456         .into_iter()
14457         .flatten()
14458         .next()
14459         {
14460             *f = features.shader_subgroup_clock as ash::vk::Bool32;
14461         }
14462         if let Some(f) = [
14463             self.features_vulkan12
14464                 .as_mut()
14465                 .map(|s| &mut s.shader_subgroup_extended_types),
14466             self.features_shader_subgroup_extended_types
14467                 .as_mut()
14468                 .map(|s| &mut s.shader_subgroup_extended_types),
14469         ]
14470         .into_iter()
14471         .flatten()
14472         .next()
14473         {
14474             *f = features.shader_subgroup_extended_types as ash::vk::Bool32;
14475         }
14476         if let Some(f) = [self
14477             .features_shader_subgroup_uniform_control_flow_khr
14478             .as_mut()
14479             .map(|s| &mut s.shader_subgroup_uniform_control_flow)]
14480         .into_iter()
14481         .flatten()
14482         .next()
14483         {
14484             *f = features.shader_subgroup_uniform_control_flow as ash::vk::Bool32;
14485         }
14486         if let Some(f) = [
14487             self.features_vulkan13
14488                 .as_mut()
14489                 .map(|s| &mut s.shader_terminate_invocation),
14490             self.features_shader_terminate_invocation
14491                 .as_mut()
14492                 .map(|s| &mut s.shader_terminate_invocation),
14493         ]
14494         .into_iter()
14495         .flatten()
14496         .next()
14497         {
14498             *f = features.shader_terminate_invocation as ash::vk::Bool32;
14499         }
14500         if let Some(f) = [&mut self
14501             .features_vulkan10
14502             .features
14503             .shader_tessellation_and_geometry_point_size]
14504         .into_iter()
14505         .next()
14506         {
14507             *f = features.shader_tessellation_and_geometry_point_size as ash::vk::Bool32;
14508         }
14509         if let Some(f) = [&mut self
14510             .features_vulkan10
14511             .features
14512             .shader_uniform_buffer_array_dynamic_indexing]
14513         .into_iter()
14514         .next()
14515         {
14516             *f = features.shader_uniform_buffer_array_dynamic_indexing as ash::vk::Bool32;
14517         }
14518         if let Some(f) = [
14519             self.features_vulkan12
14520                 .as_mut()
14521                 .map(|s| &mut s.shader_uniform_buffer_array_non_uniform_indexing),
14522             self.features_descriptor_indexing
14523                 .as_mut()
14524                 .map(|s| &mut s.shader_uniform_buffer_array_non_uniform_indexing),
14525         ]
14526         .into_iter()
14527         .flatten()
14528         .next()
14529         {
14530             *f = features.shader_uniform_buffer_array_non_uniform_indexing as ash::vk::Bool32;
14531         }
14532         if let Some(f) = [
14533             self.features_vulkan12
14534                 .as_mut()
14535                 .map(|s| &mut s.shader_uniform_texel_buffer_array_dynamic_indexing),
14536             self.features_descriptor_indexing
14537                 .as_mut()
14538                 .map(|s| &mut s.shader_uniform_texel_buffer_array_dynamic_indexing),
14539         ]
14540         .into_iter()
14541         .flatten()
14542         .next()
14543         {
14544             *f = features.shader_uniform_texel_buffer_array_dynamic_indexing as ash::vk::Bool32;
14545         }
14546         if let Some(f) = [
14547             self.features_vulkan12
14548                 .as_mut()
14549                 .map(|s| &mut s.shader_uniform_texel_buffer_array_non_uniform_indexing),
14550             self.features_descriptor_indexing
14551                 .as_mut()
14552                 .map(|s| &mut s.shader_uniform_texel_buffer_array_non_uniform_indexing),
14553         ]
14554         .into_iter()
14555         .flatten()
14556         .next()
14557         {
14558             *f = features.shader_uniform_texel_buffer_array_non_uniform_indexing as ash::vk::Bool32;
14559         }
14560         if let Some(f) = [
14561             self.features_vulkan13
14562                 .as_mut()
14563                 .map(|s| &mut s.shader_zero_initialize_workgroup_memory),
14564             self.features_zero_initialize_workgroup_memory
14565                 .as_mut()
14566                 .map(|s| &mut s.shader_zero_initialize_workgroup_memory),
14567         ]
14568         .into_iter()
14569         .flatten()
14570         .next()
14571         {
14572             *f = features.shader_zero_initialize_workgroup_memory as ash::vk::Bool32;
14573         }
14574         if let Some(f) = [self
14575             .features_shading_rate_image_nv
14576             .as_mut()
14577             .map(|s| &mut s.shading_rate_coarse_sample_order)]
14578         .into_iter()
14579         .flatten()
14580         .next()
14581         {
14582             *f = features.shading_rate_coarse_sample_order as ash::vk::Bool32;
14583         }
14584         if let Some(f) = [self
14585             .features_shading_rate_image_nv
14586             .as_mut()
14587             .map(|s| &mut s.shading_rate_image)]
14588         .into_iter()
14589         .flatten()
14590         .next()
14591         {
14592             *f = features.shading_rate_image as ash::vk::Bool32;
14593         }
14594         if let Some(f) = [self
14595             .features_line_rasterization_ext
14596             .as_mut()
14597             .map(|s| &mut s.smooth_lines)]
14598         .into_iter()
14599         .flatten()
14600         .next()
14601         {
14602             *f = features.smooth_lines as ash::vk::Bool32;
14603         }
14604         if let Some(f) = [&mut self.features_vulkan10.features.sparse_binding]
14605             .into_iter()
14606             .next()
14607         {
14608             *f = features.sparse_binding as ash::vk::Bool32;
14609         }
14610         if let Some(f) = [self
14611             .features_shader_atomic_float_ext
14612             .as_mut()
14613             .map(|s| &mut s.sparse_image_float32_atomic_add)]
14614         .into_iter()
14615         .flatten()
14616         .next()
14617         {
14618             *f = features.sparse_image_float32_atomic_add as ash::vk::Bool32;
14619         }
14620         if let Some(f) = [self
14621             .features_shader_atomic_float2_ext
14622             .as_mut()
14623             .map(|s| &mut s.sparse_image_float32_atomic_min_max)]
14624         .into_iter()
14625         .flatten()
14626         .next()
14627         {
14628             *f = features.sparse_image_float32_atomic_min_max as ash::vk::Bool32;
14629         }
14630         if let Some(f) = [self
14631             .features_shader_atomic_float_ext
14632             .as_mut()
14633             .map(|s| &mut s.sparse_image_float32_atomics)]
14634         .into_iter()
14635         .flatten()
14636         .next()
14637         {
14638             *f = features.sparse_image_float32_atomics as ash::vk::Bool32;
14639         }
14640         if let Some(f) = [self
14641             .features_shader_image_atomic_int64_ext
14642             .as_mut()
14643             .map(|s| &mut s.sparse_image_int64_atomics)]
14644         .into_iter()
14645         .flatten()
14646         .next()
14647         {
14648             *f = features.sparse_image_int64_atomics as ash::vk::Bool32;
14649         }
14650         if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency16_samples]
14651             .into_iter()
14652             .next()
14653         {
14654             *f = features.sparse_residency16_samples as ash::vk::Bool32;
14655         }
14656         if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency2_samples]
14657             .into_iter()
14658             .next()
14659         {
14660             *f = features.sparse_residency2_samples as ash::vk::Bool32;
14661         }
14662         if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency4_samples]
14663             .into_iter()
14664             .next()
14665         {
14666             *f = features.sparse_residency4_samples as ash::vk::Bool32;
14667         }
14668         if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency8_samples]
14669             .into_iter()
14670             .next()
14671         {
14672             *f = features.sparse_residency8_samples as ash::vk::Bool32;
14673         }
14674         if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency_aliased]
14675             .into_iter()
14676             .next()
14677         {
14678             *f = features.sparse_residency_aliased as ash::vk::Bool32;
14679         }
14680         if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency_buffer]
14681             .into_iter()
14682             .next()
14683         {
14684             *f = features.sparse_residency_buffer as ash::vk::Bool32;
14685         }
14686         if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency_image2_d]
14687             .into_iter()
14688             .next()
14689         {
14690             *f = features.sparse_residency_image2_d as ash::vk::Bool32;
14691         }
14692         if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency_image3_d]
14693             .into_iter()
14694             .next()
14695         {
14696             *f = features.sparse_residency_image3_d as ash::vk::Bool32;
14697         }
14698         if let Some(f) = [self
14699             .features_line_rasterization_ext
14700             .as_mut()
14701             .map(|s| &mut s.stippled_bresenham_lines)]
14702         .into_iter()
14703         .flatten()
14704         .next()
14705         {
14706             *f = features.stippled_bresenham_lines as ash::vk::Bool32;
14707         }
14708         if let Some(f) = [self
14709             .features_line_rasterization_ext
14710             .as_mut()
14711             .map(|s| &mut s.stippled_rectangular_lines)]
14712         .into_iter()
14713         .flatten()
14714         .next()
14715         {
14716             *f = features.stippled_rectangular_lines as ash::vk::Bool32;
14717         }
14718         if let Some(f) = [self
14719             .features_line_rasterization_ext
14720             .as_mut()
14721             .map(|s| &mut s.stippled_smooth_lines)]
14722         .into_iter()
14723         .flatten()
14724         .next()
14725         {
14726             *f = features.stippled_smooth_lines as ash::vk::Bool32;
14727         }
14728         if let Some(f) = [
14729             self.features_vulkan11
14730                 .as_mut()
14731                 .map(|s| &mut s.storage_buffer16_bit_access),
14732             self.features_16bit_storage
14733                 .as_mut()
14734                 .map(|s| &mut s.storage_buffer16_bit_access),
14735         ]
14736         .into_iter()
14737         .flatten()
14738         .next()
14739         {
14740             *f = features.storage_buffer16_bit_access as ash::vk::Bool32;
14741         }
14742         if let Some(f) = [
14743             self.features_vulkan12
14744                 .as_mut()
14745                 .map(|s| &mut s.storage_buffer8_bit_access),
14746             self.features_8bit_storage
14747                 .as_mut()
14748                 .map(|s| &mut s.storage_buffer8_bit_access),
14749         ]
14750         .into_iter()
14751         .flatten()
14752         .next()
14753         {
14754             *f = features.storage_buffer8_bit_access as ash::vk::Bool32;
14755         }
14756         if let Some(f) = [
14757             self.features_vulkan11
14758                 .as_mut()
14759                 .map(|s| &mut s.storage_input_output16),
14760             self.features_16bit_storage
14761                 .as_mut()
14762                 .map(|s| &mut s.storage_input_output16),
14763         ]
14764         .into_iter()
14765         .flatten()
14766         .next()
14767         {
14768             *f = features.storage_input_output16 as ash::vk::Bool32;
14769         }
14770         if let Some(f) = [
14771             self.features_vulkan11
14772                 .as_mut()
14773                 .map(|s| &mut s.storage_push_constant16),
14774             self.features_16bit_storage
14775                 .as_mut()
14776                 .map(|s| &mut s.storage_push_constant16),
14777         ]
14778         .into_iter()
14779         .flatten()
14780         .next()
14781         {
14782             *f = features.storage_push_constant16 as ash::vk::Bool32;
14783         }
14784         if let Some(f) = [
14785             self.features_vulkan12
14786                 .as_mut()
14787                 .map(|s| &mut s.storage_push_constant8),
14788             self.features_8bit_storage
14789                 .as_mut()
14790                 .map(|s| &mut s.storage_push_constant8),
14791         ]
14792         .into_iter()
14793         .flatten()
14794         .next()
14795         {
14796             *f = features.storage_push_constant8 as ash::vk::Bool32;
14797         }
14798         if let Some(f) = [self
14799             .features_vulkan12
14800             .as_mut()
14801             .map(|s| &mut s.subgroup_broadcast_dynamic_id)]
14802         .into_iter()
14803         .flatten()
14804         .next()
14805         {
14806             *f = features.subgroup_broadcast_dynamic_id as ash::vk::Bool32;
14807         }
14808         if let Some(f) = [
14809             self.features_vulkan13
14810                 .as_mut()
14811                 .map(|s| &mut s.subgroup_size_control),
14812             self.features_subgroup_size_control
14813                 .as_mut()
14814                 .map(|s| &mut s.subgroup_size_control),
14815         ]
14816         .into_iter()
14817         .flatten()
14818         .next()
14819         {
14820             *f = features.subgroup_size_control as ash::vk::Bool32;
14821         }
14822         if let Some(f) = [self
14823             .features_subpass_merge_feedback_ext
14824             .as_mut()
14825             .map(|s| &mut s.subpass_merge_feedback)]
14826         .into_iter()
14827         .flatten()
14828         .next()
14829         {
14830             *f = features.subpass_merge_feedback as ash::vk::Bool32;
14831         }
14832         if let Some(f) = [self
14833             .features_subpass_shading_huawei
14834             .as_mut()
14835             .map(|s| &mut s.subpass_shading)]
14836         .into_iter()
14837         .flatten()
14838         .next()
14839         {
14840             *f = features.subpass_shading as ash::vk::Bool32;
14841         }
14842         if let Some(f) = [self
14843             .features_fragment_shading_rate_enums_nv
14844             .as_mut()
14845             .map(|s| &mut s.supersample_fragment_shading_rates)]
14846         .into_iter()
14847         .flatten()
14848         .next()
14849         {
14850             *f = features.supersample_fragment_shading_rates as ash::vk::Bool32;
14851         }
14852         if let Some(f) = [self
14853             .features_swapchain_maintenance1_ext
14854             .as_mut()
14855             .map(|s| &mut s.swapchain_maintenance1)]
14856         .into_iter()
14857         .flatten()
14858         .next()
14859         {
14860             *f = features.swapchain_maintenance1 as ash::vk::Bool32;
14861         }
14862         if let Some(f) = [
14863             self.features_vulkan13
14864                 .as_mut()
14865                 .map(|s| &mut s.synchronization2),
14866             self.features_synchronization2
14867                 .as_mut()
14868                 .map(|s| &mut s.synchronization2),
14869         ]
14870         .into_iter()
14871         .flatten()
14872         .next()
14873         {
14874             *f = features.synchronization2 as ash::vk::Bool32;
14875         }
14876         if let Some(f) = [
14877             self.features_mesh_shader_ext
14878                 .as_mut()
14879                 .map(|s| &mut s.task_shader),
14880             self.features_mesh_shader_nv
14881                 .as_mut()
14882                 .map(|s| &mut s.task_shader),
14883         ]
14884         .into_iter()
14885         .flatten()
14886         .next()
14887         {
14888             *f = features.task_shader as ash::vk::Bool32;
14889         }
14890         if let Some(f) = [self
14891             .features_portability_subset_khr
14892             .as_mut()
14893             .map(|s| &mut s.tessellation_isolines)]
14894         .into_iter()
14895         .flatten()
14896         .next()
14897         {
14898             *f = features.tessellation_isolines as ash::vk::Bool32;
14899         }
14900         if let Some(f) = [self
14901             .features_portability_subset_khr
14902             .as_mut()
14903             .map(|s| &mut s.tessellation_point_mode)]
14904         .into_iter()
14905         .flatten()
14906         .next()
14907         {
14908             *f = features.tessellation_point_mode as ash::vk::Bool32;
14909         }
14910         if let Some(f) = [&mut self.features_vulkan10.features.tessellation_shader]
14911             .into_iter()
14912             .next()
14913         {
14914             *f = features.tessellation_shader as ash::vk::Bool32;
14915         }
14916         if let Some(f) = [self
14917             .features_texel_buffer_alignment_ext
14918             .as_mut()
14919             .map(|s| &mut s.texel_buffer_alignment)]
14920         .into_iter()
14921         .flatten()
14922         .next()
14923         {
14924             *f = features.texel_buffer_alignment as ash::vk::Bool32;
14925         }
14926         if let Some(f) = [self
14927             .features_image_processing_qcom
14928             .as_mut()
14929             .map(|s| &mut s.texture_block_match)]
14930         .into_iter()
14931         .flatten()
14932         .next()
14933         {
14934             *f = features.texture_block_match as ash::vk::Bool32;
14935         }
14936         if let Some(f) = [self
14937             .features_image_processing_qcom
14938             .as_mut()
14939             .map(|s| &mut s.texture_box_filter)]
14940         .into_iter()
14941         .flatten()
14942         .next()
14943         {
14944             *f = features.texture_box_filter as ash::vk::Bool32;
14945         }
14946         if let Some(f) = [
14947             self.features_vulkan13
14948                 .as_mut()
14949                 .map(|s| &mut s.texture_compression_astc_hdr),
14950             self.features_texture_compression_astchdr
14951                 .as_mut()
14952                 .map(|s| &mut s.texture_compression_astc_hdr),
14953         ]
14954         .into_iter()
14955         .flatten()
14956         .next()
14957         {
14958             *f = features.texture_compression_astc_hdr as ash::vk::Bool32;
14959         }
14960         if let Some(f) = [&mut self.features_vulkan10.features.texture_compression_astc_ldr]
14961             .into_iter()
14962             .next()
14963         {
14964             *f = features.texture_compression_astc_ldr as ash::vk::Bool32;
14965         }
14966         if let Some(f) = [&mut self.features_vulkan10.features.texture_compression_bc]
14967             .into_iter()
14968             .next()
14969         {
14970             *f = features.texture_compression_bc as ash::vk::Bool32;
14971         }
14972         if let Some(f) = [&mut self.features_vulkan10.features.texture_compression_etc2]
14973             .into_iter()
14974             .next()
14975         {
14976             *f = features.texture_compression_etc2 as ash::vk::Bool32;
14977         }
14978         if let Some(f) = [self
14979             .features_image_processing_qcom
14980             .as_mut()
14981             .map(|s| &mut s.texture_sample_weighted)]
14982         .into_iter()
14983         .flatten()
14984         .next()
14985         {
14986             *f = features.texture_sample_weighted as ash::vk::Bool32;
14987         }
14988         if let Some(f) = [self
14989             .features_tile_properties_qcom
14990             .as_mut()
14991             .map(|s| &mut s.tile_properties)]
14992         .into_iter()
14993         .flatten()
14994         .next()
14995         {
14996             *f = features.tile_properties as ash::vk::Bool32;
14997         }
14998         if let Some(f) = [
14999             self.features_vulkan12
15000                 .as_mut()
15001                 .map(|s| &mut s.timeline_semaphore),
15002             self.features_timeline_semaphore
15003                 .as_mut()
15004                 .map(|s| &mut s.timeline_semaphore),
15005         ]
15006         .into_iter()
15007         .flatten()
15008         .next()
15009         {
15010             *f = features.timeline_semaphore as ash::vk::Bool32;
15011         }
15012         if let Some(f) = [self
15013             .features_transform_feedback_ext
15014             .as_mut()
15015             .map(|s| &mut s.transform_feedback)]
15016         .into_iter()
15017         .flatten()
15018         .next()
15019         {
15020             *f = features.transform_feedback as ash::vk::Bool32;
15021         }
15022         if let Some(f) = [self
15023             .features_provoking_vertex_ext
15024             .as_mut()
15025             .map(|s| &mut s.transform_feedback_preserves_provoking_vertex)]
15026         .into_iter()
15027         .flatten()
15028         .next()
15029         {
15030             *f = features.transform_feedback_preserves_provoking_vertex as ash::vk::Bool32;
15031         }
15032         if let Some(f) = [self
15033             .features_portability_subset_khr
15034             .as_mut()
15035             .map(|s| &mut s.triangle_fans)]
15036         .into_iter()
15037         .flatten()
15038         .next()
15039         {
15040             *f = features.triangle_fans as ash::vk::Bool32;
15041         }
15042         if let Some(f) = [
15043             self.features_vulkan11
15044                 .as_mut()
15045                 .map(|s| &mut s.uniform_and_storage_buffer16_bit_access),
15046             self.features_16bit_storage
15047                 .as_mut()
15048                 .map(|s| &mut s.uniform_and_storage_buffer16_bit_access),
15049         ]
15050         .into_iter()
15051         .flatten()
15052         .next()
15053         {
15054             *f = features.uniform_and_storage_buffer16_bit_access as ash::vk::Bool32;
15055         }
15056         if let Some(f) = [
15057             self.features_vulkan12
15058                 .as_mut()
15059                 .map(|s| &mut s.uniform_and_storage_buffer8_bit_access),
15060             self.features_8bit_storage
15061                 .as_mut()
15062                 .map(|s| &mut s.uniform_and_storage_buffer8_bit_access),
15063         ]
15064         .into_iter()
15065         .flatten()
15066         .next()
15067         {
15068             *f = features.uniform_and_storage_buffer8_bit_access as ash::vk::Bool32;
15069         }
15070         if let Some(f) = [
15071             self.features_vulkan12
15072                 .as_mut()
15073                 .map(|s| &mut s.uniform_buffer_standard_layout),
15074             self.features_uniform_buffer_standard_layout
15075                 .as_mut()
15076                 .map(|s| &mut s.uniform_buffer_standard_layout),
15077         ]
15078         .into_iter()
15079         .flatten()
15080         .next()
15081         {
15082             *f = features.uniform_buffer_standard_layout as ash::vk::Bool32;
15083         }
15084         if let Some(f) = [&mut self.features_vulkan10.features.variable_multisample_rate]
15085             .into_iter()
15086             .next()
15087         {
15088             *f = features.variable_multisample_rate as ash::vk::Bool32;
15089         }
15090         if let Some(f) = [
15091             self.features_vulkan11
15092                 .as_mut()
15093                 .map(|s| &mut s.variable_pointers),
15094             self.features_variable_pointers
15095                 .as_mut()
15096                 .map(|s| &mut s.variable_pointers),
15097         ]
15098         .into_iter()
15099         .flatten()
15100         .next()
15101         {
15102             *f = features.variable_pointers as ash::vk::Bool32;
15103         }
15104         if let Some(f) = [
15105             self.features_vulkan11
15106                 .as_mut()
15107                 .map(|s| &mut s.variable_pointers_storage_buffer),
15108             self.features_variable_pointers
15109                 .as_mut()
15110                 .map(|s| &mut s.variable_pointers_storage_buffer),
15111         ]
15112         .into_iter()
15113         .flatten()
15114         .next()
15115         {
15116             *f = features.variable_pointers_storage_buffer as ash::vk::Bool32;
15117         }
15118         if let Some(f) = [self
15119             .features_portability_subset_khr
15120             .as_mut()
15121             .map(|s| &mut s.vertex_attribute_access_beyond_stride)]
15122         .into_iter()
15123         .flatten()
15124         .next()
15125         {
15126             *f = features.vertex_attribute_access_beyond_stride as ash::vk::Bool32;
15127         }
15128         if let Some(f) = [self
15129             .features_vertex_attribute_divisor_ext
15130             .as_mut()
15131             .map(|s| &mut s.vertex_attribute_instance_rate_divisor)]
15132         .into_iter()
15133         .flatten()
15134         .next()
15135         {
15136             *f = features.vertex_attribute_instance_rate_divisor as ash::vk::Bool32;
15137         }
15138         if let Some(f) = [self
15139             .features_vertex_attribute_divisor_ext
15140             .as_mut()
15141             .map(|s| &mut s.vertex_attribute_instance_rate_zero_divisor)]
15142         .into_iter()
15143         .flatten()
15144         .next()
15145         {
15146             *f = features.vertex_attribute_instance_rate_zero_divisor as ash::vk::Bool32;
15147         }
15148         if let Some(f) = [self
15149             .features_vertex_input_dynamic_state_ext
15150             .as_mut()
15151             .map(|s| &mut s.vertex_input_dynamic_state)]
15152         .into_iter()
15153         .flatten()
15154         .next()
15155         {
15156             *f = features.vertex_input_dynamic_state as ash::vk::Bool32;
15157         }
15158         if let Some(f) = [&mut self
15159             .features_vulkan10
15160             .features
15161             .vertex_pipeline_stores_and_atomics]
15162         .into_iter()
15163         .next()
15164         {
15165             *f = features.vertex_pipeline_stores_and_atomics as ash::vk::Bool32;
15166         }
15167         if let Some(f) = [
15168             self.features_vulkan12
15169                 .as_mut()
15170                 .map(|s| &mut s.vulkan_memory_model),
15171             self.features_vulkan_memory_model
15172                 .as_mut()
15173                 .map(|s| &mut s.vulkan_memory_model),
15174         ]
15175         .into_iter()
15176         .flatten()
15177         .next()
15178         {
15179             *f = features.vulkan_memory_model as ash::vk::Bool32;
15180         }
15181         if let Some(f) = [
15182             self.features_vulkan12
15183                 .as_mut()
15184                 .map(|s| &mut s.vulkan_memory_model_availability_visibility_chains),
15185             self.features_vulkan_memory_model
15186                 .as_mut()
15187                 .map(|s| &mut s.vulkan_memory_model_availability_visibility_chains),
15188         ]
15189         .into_iter()
15190         .flatten()
15191         .next()
15192         {
15193             *f = features.vulkan_memory_model_availability_visibility_chains as ash::vk::Bool32;
15194         }
15195         if let Some(f) = [
15196             self.features_vulkan12
15197                 .as_mut()
15198                 .map(|s| &mut s.vulkan_memory_model_device_scope),
15199             self.features_vulkan_memory_model
15200                 .as_mut()
15201                 .map(|s| &mut s.vulkan_memory_model_device_scope),
15202         ]
15203         .into_iter()
15204         .flatten()
15205         .next()
15206         {
15207             *f = features.vulkan_memory_model_device_scope as ash::vk::Bool32;
15208         }
15209         if let Some(f) = [&mut self.features_vulkan10.features.wide_lines]
15210             .into_iter()
15211             .next()
15212         {
15213             *f = features.wide_lines as ash::vk::Bool32;
15214         }
15215         if let Some(f) = [self
15216             .features_workgroup_memory_explicit_layout_khr
15217             .as_mut()
15218             .map(|s| &mut s.workgroup_memory_explicit_layout)]
15219         .into_iter()
15220         .flatten()
15221         .next()
15222         {
15223             *f = features.workgroup_memory_explicit_layout as ash::vk::Bool32;
15224         }
15225         if let Some(f) = [self
15226             .features_workgroup_memory_explicit_layout_khr
15227             .as_mut()
15228             .map(|s| &mut s.workgroup_memory_explicit_layout16_bit_access)]
15229         .into_iter()
15230         .flatten()
15231         .next()
15232         {
15233             *f = features.workgroup_memory_explicit_layout16_bit_access as ash::vk::Bool32;
15234         }
15235         if let Some(f) = [self
15236             .features_workgroup_memory_explicit_layout_khr
15237             .as_mut()
15238             .map(|s| &mut s.workgroup_memory_explicit_layout8_bit_access)]
15239         .into_iter()
15240         .flatten()
15241         .next()
15242         {
15243             *f = features.workgroup_memory_explicit_layout8_bit_access as ash::vk::Bool32;
15244         }
15245         if let Some(f) = [self
15246             .features_workgroup_memory_explicit_layout_khr
15247             .as_mut()
15248             .map(|s| &mut s.workgroup_memory_explicit_layout_scalar_block_layout)]
15249         .into_iter()
15250         .flatten()
15251         .next()
15252         {
15253             *f = features.workgroup_memory_explicit_layout_scalar_block_layout as ash::vk::Bool32;
15254         }
15255         if let Some(f) = [self
15256             .features_ycbcr2_plane444_formats_ext
15257             .as_mut()
15258             .map(|s| &mut s.ycbcr2plane444_formats)]
15259         .into_iter()
15260         .flatten()
15261         .next()
15262         {
15263             *f = features.ycbcr2plane444_formats as ash::vk::Bool32;
15264         }
15265         if let Some(f) = [self
15266             .features_ycbcr_image_arrays_ext
15267             .as_mut()
15268             .map(|s| &mut s.ycbcr_image_arrays)]
15269         .into_iter()
15270         .flatten()
15271         .next()
15272         {
15273             *f = features.ycbcr_image_arrays as ash::vk::Bool32;
15274         }
15275     }
15276 }
15277 impl From<&FeaturesFfi> for Features {
from(features_ffi: &FeaturesFfi) -> Self15278     fn from(features_ffi: &FeaturesFfi) -> Self {
15279         Features {
15280             acceleration_structure: [features_ffi
15281                 .features_acceleration_structure_khr
15282                 .map(|s| s.acceleration_structure)]
15283             .into_iter()
15284             .flatten()
15285             .next()
15286             .unwrap_or(0)
15287                 != 0,
15288             acceleration_structure_capture_replay: [features_ffi
15289                 .features_acceleration_structure_khr
15290                 .map(|s| s.acceleration_structure_capture_replay)]
15291             .into_iter()
15292             .flatten()
15293             .next()
15294             .unwrap_or(0)
15295                 != 0,
15296             acceleration_structure_host_commands: [features_ffi
15297                 .features_acceleration_structure_khr
15298                 .map(|s| s.acceleration_structure_host_commands)]
15299             .into_iter()
15300             .flatten()
15301             .next()
15302             .unwrap_or(0)
15303                 != 0,
15304             acceleration_structure_indirect_build: [features_ffi
15305                 .features_acceleration_structure_khr
15306                 .map(|s| s.acceleration_structure_indirect_build)]
15307             .into_iter()
15308             .flatten()
15309             .next()
15310             .unwrap_or(0)
15311                 != 0,
15312             advanced_blend_coherent_operations: [features_ffi
15313                 .features_blend_operation_advanced_ext
15314                 .map(|s| s.advanced_blend_coherent_operations)]
15315             .into_iter()
15316             .flatten()
15317             .next()
15318             .unwrap_or(0)
15319                 != 0,
15320             alpha_to_one: [features_ffi.features_vulkan10.features.alpha_to_one]
15321                 .into_iter()
15322                 .next()
15323                 .unwrap_or(0)
15324                 != 0,
15325             amigo_profiling: [features_ffi
15326                 .features_amigo_profiling_sec
15327                 .map(|s| s.amigo_profiling)]
15328             .into_iter()
15329             .flatten()
15330             .next()
15331             .unwrap_or(0)
15332                 != 0,
15333             attachment_feedback_loop_layout: [features_ffi
15334                 .features_attachment_feedback_loop_layout_ext
15335                 .map(|s| s.attachment_feedback_loop_layout)]
15336             .into_iter()
15337             .flatten()
15338             .next()
15339             .unwrap_or(0)
15340                 != 0,
15341             attachment_fragment_shading_rate: [features_ffi
15342                 .features_fragment_shading_rate_khr
15343                 .map(|s| s.attachment_fragment_shading_rate)]
15344             .into_iter()
15345             .flatten()
15346             .next()
15347             .unwrap_or(0)
15348                 != 0,
15349             border_color_swizzle: [features_ffi
15350                 .features_border_color_swizzle_ext
15351                 .map(|s| s.border_color_swizzle)]
15352             .into_iter()
15353             .flatten()
15354             .next()
15355             .unwrap_or(0)
15356                 != 0,
15357             border_color_swizzle_from_image: [features_ffi
15358                 .features_border_color_swizzle_ext
15359                 .map(|s| s.border_color_swizzle_from_image)]
15360             .into_iter()
15361             .flatten()
15362             .next()
15363             .unwrap_or(0)
15364                 != 0,
15365             bresenham_lines: [features_ffi
15366                 .features_line_rasterization_ext
15367                 .map(|s| s.bresenham_lines)]
15368             .into_iter()
15369             .flatten()
15370             .next()
15371             .unwrap_or(0)
15372                 != 0,
15373             buffer_device_address: [
15374                 features_ffi
15375                     .features_vulkan12
15376                     .map(|s| s.buffer_device_address),
15377                 features_ffi
15378                     .features_buffer_device_address
15379                     .map(|s| s.buffer_device_address),
15380                 features_ffi
15381                     .features_buffer_device_address_ext
15382                     .map(|s| s.buffer_device_address),
15383             ]
15384             .into_iter()
15385             .flatten()
15386             .next()
15387             .unwrap_or(0)
15388                 != 0,
15389             buffer_device_address_capture_replay: [
15390                 features_ffi
15391                     .features_vulkan12
15392                     .map(|s| s.buffer_device_address_capture_replay),
15393                 features_ffi
15394                     .features_buffer_device_address
15395                     .map(|s| s.buffer_device_address_capture_replay),
15396                 features_ffi
15397                     .features_buffer_device_address_ext
15398                     .map(|s| s.buffer_device_address_capture_replay),
15399             ]
15400             .into_iter()
15401             .flatten()
15402             .next()
15403             .unwrap_or(0)
15404                 != 0,
15405             buffer_device_address_multi_device: [
15406                 features_ffi
15407                     .features_vulkan12
15408                     .map(|s| s.buffer_device_address_multi_device),
15409                 features_ffi
15410                     .features_buffer_device_address
15411                     .map(|s| s.buffer_device_address_multi_device),
15412                 features_ffi
15413                     .features_buffer_device_address_ext
15414                     .map(|s| s.buffer_device_address_multi_device),
15415             ]
15416             .into_iter()
15417             .flatten()
15418             .next()
15419             .unwrap_or(0)
15420                 != 0,
15421             color_write_enable: [features_ffi
15422                 .features_color_write_enable_ext
15423                 .map(|s| s.color_write_enable)]
15424             .into_iter()
15425             .flatten()
15426             .next()
15427             .unwrap_or(0)
15428                 != 0,
15429             compute_derivative_group_linear: [features_ffi
15430                 .features_compute_shader_derivatives_nv
15431                 .map(|s| s.compute_derivative_group_linear)]
15432             .into_iter()
15433             .flatten()
15434             .next()
15435             .unwrap_or(0)
15436                 != 0,
15437             compute_derivative_group_quads: [features_ffi
15438                 .features_compute_shader_derivatives_nv
15439                 .map(|s| s.compute_derivative_group_quads)]
15440             .into_iter()
15441             .flatten()
15442             .next()
15443             .unwrap_or(0)
15444                 != 0,
15445             compute_full_subgroups: [
15446                 features_ffi
15447                     .features_vulkan13
15448                     .map(|s| s.compute_full_subgroups),
15449                 features_ffi
15450                     .features_subgroup_size_control
15451                     .map(|s| s.compute_full_subgroups),
15452             ]
15453             .into_iter()
15454             .flatten()
15455             .next()
15456             .unwrap_or(0)
15457                 != 0,
15458             conditional_rendering: [features_ffi
15459                 .features_conditional_rendering_ext
15460                 .map(|s| s.conditional_rendering)]
15461             .into_iter()
15462             .flatten()
15463             .next()
15464             .unwrap_or(0)
15465                 != 0,
15466             constant_alpha_color_blend_factors: [features_ffi
15467                 .features_portability_subset_khr
15468                 .map(|s| s.constant_alpha_color_blend_factors)]
15469             .into_iter()
15470             .flatten()
15471             .next()
15472             .unwrap_or(0)
15473                 != 0,
15474             cooperative_matrix: [features_ffi
15475                 .features_cooperative_matrix_nv
15476                 .map(|s| s.cooperative_matrix)]
15477             .into_iter()
15478             .flatten()
15479             .next()
15480             .unwrap_or(0)
15481                 != 0,
15482             cooperative_matrix_robust_buffer_access: [features_ffi
15483                 .features_cooperative_matrix_nv
15484                 .map(|s| s.cooperative_matrix_robust_buffer_access)]
15485             .into_iter()
15486             .flatten()
15487             .next()
15488             .unwrap_or(0)
15489                 != 0,
15490             corner_sampled_image: [features_ffi
15491                 .features_corner_sampled_image_nv
15492                 .map(|s| s.corner_sampled_image)]
15493             .into_iter()
15494             .flatten()
15495             .next()
15496             .unwrap_or(0)
15497                 != 0,
15498             coverage_reduction_mode: [features_ffi
15499                 .features_coverage_reduction_mode_nv
15500                 .map(|s| s.coverage_reduction_mode)]
15501             .into_iter()
15502             .flatten()
15503             .next()
15504             .unwrap_or(0)
15505                 != 0,
15506             custom_border_color_without_format: [features_ffi
15507                 .features_custom_border_color_ext
15508                 .map(|s| s.custom_border_color_without_format)]
15509             .into_iter()
15510             .flatten()
15511             .next()
15512             .unwrap_or(0)
15513                 != 0,
15514             custom_border_colors: [features_ffi
15515                 .features_custom_border_color_ext
15516                 .map(|s| s.custom_border_colors)]
15517             .into_iter()
15518             .flatten()
15519             .next()
15520             .unwrap_or(0)
15521                 != 0,
15522             decode_mode_shared_exponent: [features_ffi
15523                 .features_astc_decode_ext
15524                 .map(|s| s.decode_mode_shared_exponent)]
15525             .into_iter()
15526             .flatten()
15527             .next()
15528             .unwrap_or(0)
15529                 != 0,
15530             dedicated_allocation_image_aliasing: [features_ffi
15531                 .features_dedicated_allocation_image_aliasing_nv
15532                 .map(|s| s.dedicated_allocation_image_aliasing)]
15533             .into_iter()
15534             .flatten()
15535             .next()
15536             .unwrap_or(0)
15537                 != 0,
15538             depth_bias_clamp: [features_ffi.features_vulkan10.features.depth_bias_clamp]
15539                 .into_iter()
15540                 .next()
15541                 .unwrap_or(0)
15542                 != 0,
15543             depth_bounds: [features_ffi.features_vulkan10.features.depth_bounds]
15544                 .into_iter()
15545                 .next()
15546                 .unwrap_or(0)
15547                 != 0,
15548             depth_clamp: [features_ffi.features_vulkan10.features.depth_clamp]
15549                 .into_iter()
15550                 .next()
15551                 .unwrap_or(0)
15552                 != 0,
15553             depth_clamp_zero_one: [features_ffi
15554                 .features_depth_clamp_zero_one_ext
15555                 .map(|s| s.depth_clamp_zero_one)]
15556             .into_iter()
15557             .flatten()
15558             .next()
15559             .unwrap_or(0)
15560                 != 0,
15561             depth_clip_control: [features_ffi
15562                 .features_depth_clip_control_ext
15563                 .map(|s| s.depth_clip_control)]
15564             .into_iter()
15565             .flatten()
15566             .next()
15567             .unwrap_or(0)
15568                 != 0,
15569             depth_clip_enable: [features_ffi
15570                 .features_depth_clip_enable_ext
15571                 .map(|s| s.depth_clip_enable)]
15572             .into_iter()
15573             .flatten()
15574             .next()
15575             .unwrap_or(0)
15576                 != 0,
15577             descriptor_binding_acceleration_structure_update_after_bind: [features_ffi
15578                 .features_acceleration_structure_khr
15579                 .map(|s| s.descriptor_binding_acceleration_structure_update_after_bind)]
15580             .into_iter()
15581             .flatten()
15582             .next()
15583             .unwrap_or(0)
15584                 != 0,
15585             descriptor_binding_inline_uniform_block_update_after_bind: [
15586                 features_ffi
15587                     .features_vulkan13
15588                     .map(|s| s.descriptor_binding_inline_uniform_block_update_after_bind),
15589                 features_ffi
15590                     .features_inline_uniform_block
15591                     .map(|s| s.descriptor_binding_inline_uniform_block_update_after_bind),
15592             ]
15593             .into_iter()
15594             .flatten()
15595             .next()
15596             .unwrap_or(0)
15597                 != 0,
15598             descriptor_binding_partially_bound: [
15599                 features_ffi
15600                     .features_vulkan12
15601                     .map(|s| s.descriptor_binding_partially_bound),
15602                 features_ffi
15603                     .features_descriptor_indexing
15604                     .map(|s| s.descriptor_binding_partially_bound),
15605             ]
15606             .into_iter()
15607             .flatten()
15608             .next()
15609             .unwrap_or(0)
15610                 != 0,
15611             descriptor_binding_sampled_image_update_after_bind: [
15612                 features_ffi
15613                     .features_vulkan12
15614                     .map(|s| s.descriptor_binding_sampled_image_update_after_bind),
15615                 features_ffi
15616                     .features_descriptor_indexing
15617                     .map(|s| s.descriptor_binding_sampled_image_update_after_bind),
15618             ]
15619             .into_iter()
15620             .flatten()
15621             .next()
15622             .unwrap_or(0)
15623                 != 0,
15624             descriptor_binding_storage_buffer_update_after_bind: [
15625                 features_ffi
15626                     .features_vulkan12
15627                     .map(|s| s.descriptor_binding_storage_buffer_update_after_bind),
15628                 features_ffi
15629                     .features_descriptor_indexing
15630                     .map(|s| s.descriptor_binding_storage_buffer_update_after_bind),
15631             ]
15632             .into_iter()
15633             .flatten()
15634             .next()
15635             .unwrap_or(0)
15636                 != 0,
15637             descriptor_binding_storage_image_update_after_bind: [
15638                 features_ffi
15639                     .features_vulkan12
15640                     .map(|s| s.descriptor_binding_storage_image_update_after_bind),
15641                 features_ffi
15642                     .features_descriptor_indexing
15643                     .map(|s| s.descriptor_binding_storage_image_update_after_bind),
15644             ]
15645             .into_iter()
15646             .flatten()
15647             .next()
15648             .unwrap_or(0)
15649                 != 0,
15650             descriptor_binding_storage_texel_buffer_update_after_bind: [
15651                 features_ffi
15652                     .features_vulkan12
15653                     .map(|s| s.descriptor_binding_storage_texel_buffer_update_after_bind),
15654                 features_ffi
15655                     .features_descriptor_indexing
15656                     .map(|s| s.descriptor_binding_storage_texel_buffer_update_after_bind),
15657             ]
15658             .into_iter()
15659             .flatten()
15660             .next()
15661             .unwrap_or(0)
15662                 != 0,
15663             descriptor_binding_uniform_buffer_update_after_bind: [
15664                 features_ffi
15665                     .features_vulkan12
15666                     .map(|s| s.descriptor_binding_uniform_buffer_update_after_bind),
15667                 features_ffi
15668                     .features_descriptor_indexing
15669                     .map(|s| s.descriptor_binding_uniform_buffer_update_after_bind),
15670             ]
15671             .into_iter()
15672             .flatten()
15673             .next()
15674             .unwrap_or(0)
15675                 != 0,
15676             descriptor_binding_uniform_texel_buffer_update_after_bind: [
15677                 features_ffi
15678                     .features_vulkan12
15679                     .map(|s| s.descriptor_binding_uniform_texel_buffer_update_after_bind),
15680                 features_ffi
15681                     .features_descriptor_indexing
15682                     .map(|s| s.descriptor_binding_uniform_texel_buffer_update_after_bind),
15683             ]
15684             .into_iter()
15685             .flatten()
15686             .next()
15687             .unwrap_or(0)
15688                 != 0,
15689             descriptor_binding_update_unused_while_pending: [
15690                 features_ffi
15691                     .features_vulkan12
15692                     .map(|s| s.descriptor_binding_update_unused_while_pending),
15693                 features_ffi
15694                     .features_descriptor_indexing
15695                     .map(|s| s.descriptor_binding_update_unused_while_pending),
15696             ]
15697             .into_iter()
15698             .flatten()
15699             .next()
15700             .unwrap_or(0)
15701                 != 0,
15702             descriptor_binding_variable_descriptor_count: [
15703                 features_ffi
15704                     .features_vulkan12
15705                     .map(|s| s.descriptor_binding_variable_descriptor_count),
15706                 features_ffi
15707                     .features_descriptor_indexing
15708                     .map(|s| s.descriptor_binding_variable_descriptor_count),
15709             ]
15710             .into_iter()
15711             .flatten()
15712             .next()
15713             .unwrap_or(0)
15714                 != 0,
15715             descriptor_buffer: [features_ffi
15716                 .features_descriptor_buffer_ext
15717                 .map(|s| s.descriptor_buffer)]
15718             .into_iter()
15719             .flatten()
15720             .next()
15721             .unwrap_or(0)
15722                 != 0,
15723             descriptor_buffer_capture_replay: [features_ffi
15724                 .features_descriptor_buffer_ext
15725                 .map(|s| s.descriptor_buffer_capture_replay)]
15726             .into_iter()
15727             .flatten()
15728             .next()
15729             .unwrap_or(0)
15730                 != 0,
15731             descriptor_buffer_image_layout_ignored: [features_ffi
15732                 .features_descriptor_buffer_ext
15733                 .map(|s| s.descriptor_buffer_image_layout_ignored)]
15734             .into_iter()
15735             .flatten()
15736             .next()
15737             .unwrap_or(0)
15738                 != 0,
15739             descriptor_buffer_push_descriptors: [features_ffi
15740                 .features_descriptor_buffer_ext
15741                 .map(|s| s.descriptor_buffer_push_descriptors)]
15742             .into_iter()
15743             .flatten()
15744             .next()
15745             .unwrap_or(0)
15746                 != 0,
15747             descriptor_indexing: [features_ffi
15748                 .features_vulkan12
15749                 .map(|s| s.descriptor_indexing)]
15750             .into_iter()
15751             .flatten()
15752             .next()
15753             .unwrap_or(0)
15754                 != 0,
15755             descriptor_set_host_mapping: [features_ffi
15756                 .features_descriptor_set_host_mapping_valve
15757                 .map(|s| s.descriptor_set_host_mapping)]
15758             .into_iter()
15759             .flatten()
15760             .next()
15761             .unwrap_or(0)
15762                 != 0,
15763             device_coherent_memory: [features_ffi
15764                 .features_coherent_memory_amd
15765                 .map(|s| s.device_coherent_memory)]
15766             .into_iter()
15767             .flatten()
15768             .next()
15769             .unwrap_or(0)
15770                 != 0,
15771             device_fault: [features_ffi.features_fault_ext.map(|s| s.device_fault)]
15772                 .into_iter()
15773                 .flatten()
15774                 .next()
15775                 .unwrap_or(0)
15776                 != 0,
15777             device_fault_vendor_binary: [features_ffi
15778                 .features_fault_ext
15779                 .map(|s| s.device_fault_vendor_binary)]
15780             .into_iter()
15781             .flatten()
15782             .next()
15783             .unwrap_or(0)
15784                 != 0,
15785             device_generated_commands: [features_ffi
15786                 .features_device_generated_commands_nv
15787                 .map(|s| s.device_generated_commands)]
15788             .into_iter()
15789             .flatten()
15790             .next()
15791             .unwrap_or(0)
15792                 != 0,
15793             device_memory_report: [features_ffi
15794                 .features_device_memory_report_ext
15795                 .map(|s| s.device_memory_report)]
15796             .into_iter()
15797             .flatten()
15798             .next()
15799             .unwrap_or(0)
15800                 != 0,
15801             diagnostics_config: [features_ffi
15802                 .features_diagnostics_config_nv
15803                 .map(|s| s.diagnostics_config)]
15804             .into_iter()
15805             .flatten()
15806             .next()
15807             .unwrap_or(0)
15808                 != 0,
15809             draw_indirect_count: [features_ffi
15810                 .features_vulkan12
15811                 .map(|s| s.draw_indirect_count)]
15812             .into_iter()
15813             .flatten()
15814             .next()
15815             .unwrap_or(0)
15816                 != 0,
15817             draw_indirect_first_instance: [features_ffi
15818                 .features_vulkan10
15819                 .features
15820                 .draw_indirect_first_instance]
15821             .into_iter()
15822             .next()
15823             .unwrap_or(0)
15824                 != 0,
15825             dual_src_blend: [features_ffi.features_vulkan10.features.dual_src_blend]
15826                 .into_iter()
15827                 .next()
15828                 .unwrap_or(0)
15829                 != 0,
15830             dynamic_rendering: [
15831                 features_ffi.features_vulkan13.map(|s| s.dynamic_rendering),
15832                 features_ffi
15833                     .features_dynamic_rendering
15834                     .map(|s| s.dynamic_rendering),
15835             ]
15836             .into_iter()
15837             .flatten()
15838             .next()
15839             .unwrap_or(0)
15840                 != 0,
15841             events: [features_ffi
15842                 .features_portability_subset_khr
15843                 .map(|s| s.events)]
15844             .into_iter()
15845             .flatten()
15846             .next()
15847             .unwrap_or(0)
15848                 != 0,
15849             exclusive_scissor: [features_ffi
15850                 .features_exclusive_scissor_nv
15851                 .map(|s| s.exclusive_scissor)]
15852             .into_iter()
15853             .flatten()
15854             .next()
15855             .unwrap_or(0)
15856                 != 0,
15857             extended_dynamic_state: [features_ffi
15858                 .features_extended_dynamic_state_ext
15859                 .map(|s| s.extended_dynamic_state)]
15860             .into_iter()
15861             .flatten()
15862             .next()
15863             .unwrap_or(0)
15864                 != 0,
15865             extended_dynamic_state2: [features_ffi
15866                 .features_extended_dynamic_state2_ext
15867                 .map(|s| s.extended_dynamic_state2)]
15868             .into_iter()
15869             .flatten()
15870             .next()
15871             .unwrap_or(0)
15872                 != 0,
15873             extended_dynamic_state2_logic_op: [features_ffi
15874                 .features_extended_dynamic_state2_ext
15875                 .map(|s| s.extended_dynamic_state2_logic_op)]
15876             .into_iter()
15877             .flatten()
15878             .next()
15879             .unwrap_or(0)
15880                 != 0,
15881             extended_dynamic_state2_patch_control_points: [features_ffi
15882                 .features_extended_dynamic_state2_ext
15883                 .map(|s| s.extended_dynamic_state2_patch_control_points)]
15884             .into_iter()
15885             .flatten()
15886             .next()
15887             .unwrap_or(0)
15888                 != 0,
15889             extended_dynamic_state3_alpha_to_coverage_enable: [features_ffi
15890                 .features_extended_dynamic_state3_ext
15891                 .map(|s| s.extended_dynamic_state3_alpha_to_coverage_enable)]
15892             .into_iter()
15893             .flatten()
15894             .next()
15895             .unwrap_or(0)
15896                 != 0,
15897             extended_dynamic_state3_alpha_to_one_enable: [features_ffi
15898                 .features_extended_dynamic_state3_ext
15899                 .map(|s| s.extended_dynamic_state3_alpha_to_one_enable)]
15900             .into_iter()
15901             .flatten()
15902             .next()
15903             .unwrap_or(0)
15904                 != 0,
15905             extended_dynamic_state3_color_blend_advanced: [features_ffi
15906                 .features_extended_dynamic_state3_ext
15907                 .map(|s| s.extended_dynamic_state3_color_blend_advanced)]
15908             .into_iter()
15909             .flatten()
15910             .next()
15911             .unwrap_or(0)
15912                 != 0,
15913             extended_dynamic_state3_color_blend_enable: [features_ffi
15914                 .features_extended_dynamic_state3_ext
15915                 .map(|s| s.extended_dynamic_state3_color_blend_enable)]
15916             .into_iter()
15917             .flatten()
15918             .next()
15919             .unwrap_or(0)
15920                 != 0,
15921             extended_dynamic_state3_color_blend_equation: [features_ffi
15922                 .features_extended_dynamic_state3_ext
15923                 .map(|s| s.extended_dynamic_state3_color_blend_equation)]
15924             .into_iter()
15925             .flatten()
15926             .next()
15927             .unwrap_or(0)
15928                 != 0,
15929             extended_dynamic_state3_color_write_mask: [features_ffi
15930                 .features_extended_dynamic_state3_ext
15931                 .map(|s| s.extended_dynamic_state3_color_write_mask)]
15932             .into_iter()
15933             .flatten()
15934             .next()
15935             .unwrap_or(0)
15936                 != 0,
15937             extended_dynamic_state3_conservative_rasterization_mode: [features_ffi
15938                 .features_extended_dynamic_state3_ext
15939                 .map(|s| s.extended_dynamic_state3_conservative_rasterization_mode)]
15940             .into_iter()
15941             .flatten()
15942             .next()
15943             .unwrap_or(0)
15944                 != 0,
15945             extended_dynamic_state3_coverage_modulation_mode: [features_ffi
15946                 .features_extended_dynamic_state3_ext
15947                 .map(|s| s.extended_dynamic_state3_coverage_modulation_mode)]
15948             .into_iter()
15949             .flatten()
15950             .next()
15951             .unwrap_or(0)
15952                 != 0,
15953             extended_dynamic_state3_coverage_modulation_table: [features_ffi
15954                 .features_extended_dynamic_state3_ext
15955                 .map(|s| s.extended_dynamic_state3_coverage_modulation_table)]
15956             .into_iter()
15957             .flatten()
15958             .next()
15959             .unwrap_or(0)
15960                 != 0,
15961             extended_dynamic_state3_coverage_modulation_table_enable: [features_ffi
15962                 .features_extended_dynamic_state3_ext
15963                 .map(|s| s.extended_dynamic_state3_coverage_modulation_table_enable)]
15964             .into_iter()
15965             .flatten()
15966             .next()
15967             .unwrap_or(0)
15968                 != 0,
15969             extended_dynamic_state3_coverage_reduction_mode: [features_ffi
15970                 .features_extended_dynamic_state3_ext
15971                 .map(|s| s.extended_dynamic_state3_coverage_reduction_mode)]
15972             .into_iter()
15973             .flatten()
15974             .next()
15975             .unwrap_or(0)
15976                 != 0,
15977             extended_dynamic_state3_coverage_to_color_enable: [features_ffi
15978                 .features_extended_dynamic_state3_ext
15979                 .map(|s| s.extended_dynamic_state3_coverage_to_color_enable)]
15980             .into_iter()
15981             .flatten()
15982             .next()
15983             .unwrap_or(0)
15984                 != 0,
15985             extended_dynamic_state3_coverage_to_color_location: [features_ffi
15986                 .features_extended_dynamic_state3_ext
15987                 .map(|s| s.extended_dynamic_state3_coverage_to_color_location)]
15988             .into_iter()
15989             .flatten()
15990             .next()
15991             .unwrap_or(0)
15992                 != 0,
15993             extended_dynamic_state3_depth_clamp_enable: [features_ffi
15994                 .features_extended_dynamic_state3_ext
15995                 .map(|s| s.extended_dynamic_state3_depth_clamp_enable)]
15996             .into_iter()
15997             .flatten()
15998             .next()
15999             .unwrap_or(0)
16000                 != 0,
16001             extended_dynamic_state3_depth_clip_enable: [features_ffi
16002                 .features_extended_dynamic_state3_ext
16003                 .map(|s| s.extended_dynamic_state3_depth_clip_enable)]
16004             .into_iter()
16005             .flatten()
16006             .next()
16007             .unwrap_or(0)
16008                 != 0,
16009             extended_dynamic_state3_depth_clip_negative_one_to_one: [features_ffi
16010                 .features_extended_dynamic_state3_ext
16011                 .map(|s| s.extended_dynamic_state3_depth_clip_negative_one_to_one)]
16012             .into_iter()
16013             .flatten()
16014             .next()
16015             .unwrap_or(0)
16016                 != 0,
16017             extended_dynamic_state3_extra_primitive_overestimation_size: [features_ffi
16018                 .features_extended_dynamic_state3_ext
16019                 .map(|s| s.extended_dynamic_state3_extra_primitive_overestimation_size)]
16020             .into_iter()
16021             .flatten()
16022             .next()
16023             .unwrap_or(0)
16024                 != 0,
16025             extended_dynamic_state3_line_rasterization_mode: [features_ffi
16026                 .features_extended_dynamic_state3_ext
16027                 .map(|s| s.extended_dynamic_state3_line_rasterization_mode)]
16028             .into_iter()
16029             .flatten()
16030             .next()
16031             .unwrap_or(0)
16032                 != 0,
16033             extended_dynamic_state3_line_stipple_enable: [features_ffi
16034                 .features_extended_dynamic_state3_ext
16035                 .map(|s| s.extended_dynamic_state3_line_stipple_enable)]
16036             .into_iter()
16037             .flatten()
16038             .next()
16039             .unwrap_or(0)
16040                 != 0,
16041             extended_dynamic_state3_logic_op_enable: [features_ffi
16042                 .features_extended_dynamic_state3_ext
16043                 .map(|s| s.extended_dynamic_state3_logic_op_enable)]
16044             .into_iter()
16045             .flatten()
16046             .next()
16047             .unwrap_or(0)
16048                 != 0,
16049             extended_dynamic_state3_polygon_mode: [features_ffi
16050                 .features_extended_dynamic_state3_ext
16051                 .map(|s| s.extended_dynamic_state3_polygon_mode)]
16052             .into_iter()
16053             .flatten()
16054             .next()
16055             .unwrap_or(0)
16056                 != 0,
16057             extended_dynamic_state3_provoking_vertex_mode: [features_ffi
16058                 .features_extended_dynamic_state3_ext
16059                 .map(|s| s.extended_dynamic_state3_provoking_vertex_mode)]
16060             .into_iter()
16061             .flatten()
16062             .next()
16063             .unwrap_or(0)
16064                 != 0,
16065             extended_dynamic_state3_rasterization_samples: [features_ffi
16066                 .features_extended_dynamic_state3_ext
16067                 .map(|s| s.extended_dynamic_state3_rasterization_samples)]
16068             .into_iter()
16069             .flatten()
16070             .next()
16071             .unwrap_or(0)
16072                 != 0,
16073             extended_dynamic_state3_rasterization_stream: [features_ffi
16074                 .features_extended_dynamic_state3_ext
16075                 .map(|s| s.extended_dynamic_state3_rasterization_stream)]
16076             .into_iter()
16077             .flatten()
16078             .next()
16079             .unwrap_or(0)
16080                 != 0,
16081             extended_dynamic_state3_representative_fragment_test_enable: [features_ffi
16082                 .features_extended_dynamic_state3_ext
16083                 .map(|s| s.extended_dynamic_state3_representative_fragment_test_enable)]
16084             .into_iter()
16085             .flatten()
16086             .next()
16087             .unwrap_or(0)
16088                 != 0,
16089             extended_dynamic_state3_sample_locations_enable: [features_ffi
16090                 .features_extended_dynamic_state3_ext
16091                 .map(|s| s.extended_dynamic_state3_sample_locations_enable)]
16092             .into_iter()
16093             .flatten()
16094             .next()
16095             .unwrap_or(0)
16096                 != 0,
16097             extended_dynamic_state3_sample_mask: [features_ffi
16098                 .features_extended_dynamic_state3_ext
16099                 .map(|s| s.extended_dynamic_state3_sample_mask)]
16100             .into_iter()
16101             .flatten()
16102             .next()
16103             .unwrap_or(0)
16104                 != 0,
16105             extended_dynamic_state3_shading_rate_image_enable: [features_ffi
16106                 .features_extended_dynamic_state3_ext
16107                 .map(|s| s.extended_dynamic_state3_shading_rate_image_enable)]
16108             .into_iter()
16109             .flatten()
16110             .next()
16111             .unwrap_or(0)
16112                 != 0,
16113             extended_dynamic_state3_tessellation_domain_origin: [features_ffi
16114                 .features_extended_dynamic_state3_ext
16115                 .map(|s| s.extended_dynamic_state3_tessellation_domain_origin)]
16116             .into_iter()
16117             .flatten()
16118             .next()
16119             .unwrap_or(0)
16120                 != 0,
16121             extended_dynamic_state3_viewport_swizzle: [features_ffi
16122                 .features_extended_dynamic_state3_ext
16123                 .map(|s| s.extended_dynamic_state3_viewport_swizzle)]
16124             .into_iter()
16125             .flatten()
16126             .next()
16127             .unwrap_or(0)
16128                 != 0,
16129             extended_dynamic_state3_viewport_w_scaling_enable: [features_ffi
16130                 .features_extended_dynamic_state3_ext
16131                 .map(|s| s.extended_dynamic_state3_viewport_w_scaling_enable)]
16132             .into_iter()
16133             .flatten()
16134             .next()
16135             .unwrap_or(0)
16136                 != 0,
16137             external_memory_rdma: [features_ffi
16138                 .features_external_memory_rdma_nv
16139                 .map(|s| s.external_memory_rdma)]
16140             .into_iter()
16141             .flatten()
16142             .next()
16143             .unwrap_or(0)
16144                 != 0,
16145             fill_mode_non_solid: [features_ffi.features_vulkan10.features.fill_mode_non_solid]
16146                 .into_iter()
16147                 .next()
16148                 .unwrap_or(0)
16149                 != 0,
16150             format_a4b4g4r4: [features_ffi
16151                 .features_4444formats_ext
16152                 .map(|s| s.format_a4b4g4r4)]
16153             .into_iter()
16154             .flatten()
16155             .next()
16156             .unwrap_or(0)
16157                 != 0,
16158             format_a4r4g4b4: [features_ffi
16159                 .features_4444formats_ext
16160                 .map(|s| s.format_a4r4g4b4)]
16161             .into_iter()
16162             .flatten()
16163             .next()
16164             .unwrap_or(0)
16165                 != 0,
16166             format_rgba10x6_without_y_cb_cr_sampler: [features_ffi
16167                 .features_rgba10x6_formats_ext
16168                 .map(|s| s.format_rgba10x6_without_y_cb_cr_sampler)]
16169             .into_iter()
16170             .flatten()
16171             .next()
16172             .unwrap_or(0)
16173                 != 0,
16174             fragment_density_map: [features_ffi
16175                 .features_fragment_density_map_ext
16176                 .map(|s| s.fragment_density_map)]
16177             .into_iter()
16178             .flatten()
16179             .next()
16180             .unwrap_or(0)
16181                 != 0,
16182             fragment_density_map_deferred: [features_ffi
16183                 .features_fragment_density_map2_ext
16184                 .map(|s| s.fragment_density_map_deferred)]
16185             .into_iter()
16186             .flatten()
16187             .next()
16188             .unwrap_or(0)
16189                 != 0,
16190             fragment_density_map_dynamic: [features_ffi
16191                 .features_fragment_density_map_ext
16192                 .map(|s| s.fragment_density_map_dynamic)]
16193             .into_iter()
16194             .flatten()
16195             .next()
16196             .unwrap_or(0)
16197                 != 0,
16198             fragment_density_map_non_subsampled_images: [features_ffi
16199                 .features_fragment_density_map_ext
16200                 .map(|s| s.fragment_density_map_non_subsampled_images)]
16201             .into_iter()
16202             .flatten()
16203             .next()
16204             .unwrap_or(0)
16205                 != 0,
16206             fragment_density_map_offset: [features_ffi
16207                 .features_fragment_density_map_offset_qcom
16208                 .map(|s| s.fragment_density_map_offset)]
16209             .into_iter()
16210             .flatten()
16211             .next()
16212             .unwrap_or(0)
16213                 != 0,
16214             fragment_shader_barycentric: [features_ffi
16215                 .features_fragment_shader_barycentric_khr
16216                 .map(|s| s.fragment_shader_barycentric)]
16217             .into_iter()
16218             .flatten()
16219             .next()
16220             .unwrap_or(0)
16221                 != 0,
16222             fragment_shader_pixel_interlock: [features_ffi
16223                 .features_fragment_shader_interlock_ext
16224                 .map(|s| s.fragment_shader_pixel_interlock)]
16225             .into_iter()
16226             .flatten()
16227             .next()
16228             .unwrap_or(0)
16229                 != 0,
16230             fragment_shader_sample_interlock: [features_ffi
16231                 .features_fragment_shader_interlock_ext
16232                 .map(|s| s.fragment_shader_sample_interlock)]
16233             .into_iter()
16234             .flatten()
16235             .next()
16236             .unwrap_or(0)
16237                 != 0,
16238             fragment_shader_shading_rate_interlock: [features_ffi
16239                 .features_fragment_shader_interlock_ext
16240                 .map(|s| s.fragment_shader_shading_rate_interlock)]
16241             .into_iter()
16242             .flatten()
16243             .next()
16244             .unwrap_or(0)
16245                 != 0,
16246             fragment_shading_rate_enums: [features_ffi
16247                 .features_fragment_shading_rate_enums_nv
16248                 .map(|s| s.fragment_shading_rate_enums)]
16249             .into_iter()
16250             .flatten()
16251             .next()
16252             .unwrap_or(0)
16253                 != 0,
16254             fragment_stores_and_atomics: [features_ffi
16255                 .features_vulkan10
16256                 .features
16257                 .fragment_stores_and_atomics]
16258             .into_iter()
16259             .next()
16260             .unwrap_or(0)
16261                 != 0,
16262             full_draw_index_uint32: [features_ffi
16263                 .features_vulkan10
16264                 .features
16265                 .full_draw_index_uint32]
16266             .into_iter()
16267             .next()
16268             .unwrap_or(0)
16269                 != 0,
16270             geometry_shader: [features_ffi.features_vulkan10.features.geometry_shader]
16271                 .into_iter()
16272                 .next()
16273                 .unwrap_or(0)
16274                 != 0,
16275             geometry_streams: [features_ffi
16276                 .features_transform_feedback_ext
16277                 .map(|s| s.geometry_streams)]
16278             .into_iter()
16279             .flatten()
16280             .next()
16281             .unwrap_or(0)
16282                 != 0,
16283             global_priority_query: [features_ffi
16284                 .features_global_priority_query_khr
16285                 .map(|s| s.global_priority_query)]
16286             .into_iter()
16287             .flatten()
16288             .next()
16289             .unwrap_or(0)
16290                 != 0,
16291             graphics_pipeline_library: [features_ffi
16292                 .features_graphics_pipeline_library_ext
16293                 .map(|s| s.graphics_pipeline_library)]
16294             .into_iter()
16295             .flatten()
16296             .next()
16297             .unwrap_or(0)
16298                 != 0,
16299             host_query_reset: [
16300                 features_ffi.features_vulkan12.map(|s| s.host_query_reset),
16301                 features_ffi
16302                     .features_host_query_reset
16303                     .map(|s| s.host_query_reset),
16304             ]
16305             .into_iter()
16306             .flatten()
16307             .next()
16308             .unwrap_or(0)
16309                 != 0,
16310             image2_d_view_of3_d: [features_ffi
16311                 .features_image2_d_view_of3_d_ext
16312                 .map(|s| s.image2_d_view_of3_d)]
16313             .into_iter()
16314             .flatten()
16315             .next()
16316             .unwrap_or(0)
16317                 != 0,
16318             image_compression_control: [features_ffi
16319                 .features_image_compression_control_ext
16320                 .map(|s| s.image_compression_control)]
16321             .into_iter()
16322             .flatten()
16323             .next()
16324             .unwrap_or(0)
16325                 != 0,
16326             image_compression_control_swapchain: [features_ffi
16327                 .features_image_compression_control_swapchain_ext
16328                 .map(|s| s.image_compression_control_swapchain)]
16329             .into_iter()
16330             .flatten()
16331             .next()
16332             .unwrap_or(0)
16333                 != 0,
16334             image_cube_array: [features_ffi.features_vulkan10.features.image_cube_array]
16335                 .into_iter()
16336                 .next()
16337                 .unwrap_or(0)
16338                 != 0,
16339             image_footprint: [features_ffi
16340                 .features_shader_image_footprint_nv
16341                 .map(|s| s.image_footprint)]
16342             .into_iter()
16343             .flatten()
16344             .next()
16345             .unwrap_or(0)
16346                 != 0,
16347             image_view2_d_on3_d_image: [features_ffi
16348                 .features_portability_subset_khr
16349                 .map(|s| s.image_view2_d_on3_d_image)]
16350             .into_iter()
16351             .flatten()
16352             .next()
16353             .unwrap_or(0)
16354                 != 0,
16355             image_view_format_reinterpretation: [features_ffi
16356                 .features_portability_subset_khr
16357                 .map(|s| s.image_view_format_reinterpretation)]
16358             .into_iter()
16359             .flatten()
16360             .next()
16361             .unwrap_or(0)
16362                 != 0,
16363             image_view_format_swizzle: [features_ffi
16364                 .features_portability_subset_khr
16365                 .map(|s| s.image_view_format_swizzle)]
16366             .into_iter()
16367             .flatten()
16368             .next()
16369             .unwrap_or(0)
16370                 != 0,
16371             imageless_framebuffer: [
16372                 features_ffi
16373                     .features_vulkan12
16374                     .map(|s| s.imageless_framebuffer),
16375                 features_ffi
16376                     .features_imageless_framebuffer
16377                     .map(|s| s.imageless_framebuffer),
16378             ]
16379             .into_iter()
16380             .flatten()
16381             .next()
16382             .unwrap_or(0)
16383                 != 0,
16384             independent_blend: [features_ffi.features_vulkan10.features.independent_blend]
16385                 .into_iter()
16386                 .next()
16387                 .unwrap_or(0)
16388                 != 0,
16389             index_type_uint8: [features_ffi
16390                 .features_index_type_uint8_ext
16391                 .map(|s| s.index_type_uint8)]
16392             .into_iter()
16393             .flatten()
16394             .next()
16395             .unwrap_or(0)
16396                 != 0,
16397             indirect_copy: [features_ffi
16398                 .features_copy_memory_indirect_nv
16399                 .map(|s| s.indirect_copy)]
16400             .into_iter()
16401             .flatten()
16402             .next()
16403             .unwrap_or(0)
16404                 != 0,
16405             inherited_conditional_rendering: [features_ffi
16406                 .features_conditional_rendering_ext
16407                 .map(|s| s.inherited_conditional_rendering)]
16408             .into_iter()
16409             .flatten()
16410             .next()
16411             .unwrap_or(0)
16412                 != 0,
16413             inherited_queries: [features_ffi.features_vulkan10.features.inherited_queries]
16414                 .into_iter()
16415                 .next()
16416                 .unwrap_or(0)
16417                 != 0,
16418             inherited_viewport_scissor2_d: [features_ffi
16419                 .features_inherited_viewport_scissor_nv
16420                 .map(|s| s.inherited_viewport_scissor2_d)]
16421             .into_iter()
16422             .flatten()
16423             .next()
16424             .unwrap_or(0)
16425                 != 0,
16426             inline_uniform_block: [
16427                 features_ffi
16428                     .features_vulkan13
16429                     .map(|s| s.inline_uniform_block),
16430                 features_ffi
16431                     .features_inline_uniform_block
16432                     .map(|s| s.inline_uniform_block),
16433             ]
16434             .into_iter()
16435             .flatten()
16436             .next()
16437             .unwrap_or(0)
16438                 != 0,
16439             invocation_mask: [features_ffi
16440                 .features_invocation_mask_huawei
16441                 .map(|s| s.invocation_mask)]
16442             .into_iter()
16443             .flatten()
16444             .next()
16445             .unwrap_or(0)
16446                 != 0,
16447             large_points: [features_ffi.features_vulkan10.features.large_points]
16448                 .into_iter()
16449                 .next()
16450                 .unwrap_or(0)
16451                 != 0,
16452             legacy_dithering: [features_ffi
16453                 .features_legacy_dithering_ext
16454                 .map(|s| s.legacy_dithering)]
16455             .into_iter()
16456             .flatten()
16457             .next()
16458             .unwrap_or(0)
16459                 != 0,
16460             linear_color_attachment: [features_ffi
16461                 .features_linear_color_attachment_nv
16462                 .map(|s| s.linear_color_attachment)]
16463             .into_iter()
16464             .flatten()
16465             .next()
16466             .unwrap_or(0)
16467                 != 0,
16468             logic_op: [features_ffi.features_vulkan10.features.logic_op]
16469                 .into_iter()
16470                 .next()
16471                 .unwrap_or(0)
16472                 != 0,
16473             maintenance4: [
16474                 features_ffi.features_vulkan13.map(|s| s.maintenance4),
16475                 features_ffi.features_maintenance4.map(|s| s.maintenance4),
16476             ]
16477             .into_iter()
16478             .flatten()
16479             .next()
16480             .unwrap_or(0)
16481                 != 0,
16482             memory_decompression: [features_ffi
16483                 .features_memory_decompression_nv
16484                 .map(|s| s.memory_decompression)]
16485             .into_iter()
16486             .flatten()
16487             .next()
16488             .unwrap_or(0)
16489                 != 0,
16490             memory_priority: [features_ffi
16491                 .features_memory_priority_ext
16492                 .map(|s| s.memory_priority)]
16493             .into_iter()
16494             .flatten()
16495             .next()
16496             .unwrap_or(0)
16497                 != 0,
16498             mesh_shader: [
16499                 features_ffi.features_mesh_shader_ext.map(|s| s.mesh_shader),
16500                 features_ffi.features_mesh_shader_nv.map(|s| s.mesh_shader),
16501             ]
16502             .into_iter()
16503             .flatten()
16504             .next()
16505             .unwrap_or(0)
16506                 != 0,
16507             mesh_shader_queries: [features_ffi
16508                 .features_mesh_shader_ext
16509                 .map(|s| s.mesh_shader_queries)]
16510             .into_iter()
16511             .flatten()
16512             .next()
16513             .unwrap_or(0)
16514                 != 0,
16515             micromap: [features_ffi
16516                 .features_opacity_micromap_ext
16517                 .map(|s| s.micromap)]
16518             .into_iter()
16519             .flatten()
16520             .next()
16521             .unwrap_or(0)
16522                 != 0,
16523             micromap_capture_replay: [features_ffi
16524                 .features_opacity_micromap_ext
16525                 .map(|s| s.micromap_capture_replay)]
16526             .into_iter()
16527             .flatten()
16528             .next()
16529             .unwrap_or(0)
16530                 != 0,
16531             micromap_host_commands: [features_ffi
16532                 .features_opacity_micromap_ext
16533                 .map(|s| s.micromap_host_commands)]
16534             .into_iter()
16535             .flatten()
16536             .next()
16537             .unwrap_or(0)
16538                 != 0,
16539             min_lod: [features_ffi
16540                 .features_image_view_min_lod_ext
16541                 .map(|s| s.min_lod)]
16542             .into_iter()
16543             .flatten()
16544             .next()
16545             .unwrap_or(0)
16546                 != 0,
16547             multi_draw: [features_ffi.features_multi_draw_ext.map(|s| s.multi_draw)]
16548                 .into_iter()
16549                 .flatten()
16550                 .next()
16551                 .unwrap_or(0)
16552                 != 0,
16553             multi_draw_indirect: [features_ffi.features_vulkan10.features.multi_draw_indirect]
16554                 .into_iter()
16555                 .next()
16556                 .unwrap_or(0)
16557                 != 0,
16558             multi_viewport: [features_ffi.features_vulkan10.features.multi_viewport]
16559                 .into_iter()
16560                 .next()
16561                 .unwrap_or(0)
16562                 != 0,
16563             multisample_array_image: [features_ffi
16564                 .features_portability_subset_khr
16565                 .map(|s| s.multisample_array_image)]
16566             .into_iter()
16567             .flatten()
16568             .next()
16569             .unwrap_or(0)
16570                 != 0,
16571             multisampled_render_to_single_sampled: [features_ffi
16572                 .features_multisampled_render_to_single_sampled_ext
16573                 .map(|s| s.multisampled_render_to_single_sampled)]
16574             .into_iter()
16575             .flatten()
16576             .next()
16577             .unwrap_or(0)
16578                 != 0,
16579             multiview: [
16580                 features_ffi.features_vulkan11.map(|s| s.multiview),
16581                 features_ffi.features_multiview.map(|s| s.multiview),
16582             ]
16583             .into_iter()
16584             .flatten()
16585             .next()
16586             .unwrap_or(0)
16587                 != 0,
16588             multiview_geometry_shader: [
16589                 features_ffi
16590                     .features_vulkan11
16591                     .map(|s| s.multiview_geometry_shader),
16592                 features_ffi
16593                     .features_multiview
16594                     .map(|s| s.multiview_geometry_shader),
16595             ]
16596             .into_iter()
16597             .flatten()
16598             .next()
16599             .unwrap_or(0)
16600                 != 0,
16601             multiview_mesh_shader: [features_ffi
16602                 .features_mesh_shader_ext
16603                 .map(|s| s.multiview_mesh_shader)]
16604             .into_iter()
16605             .flatten()
16606             .next()
16607             .unwrap_or(0)
16608                 != 0,
16609             multiview_per_view_viewports: [features_ffi
16610                 .features_multiview_per_view_viewports_qcom
16611                 .map(|s| s.multiview_per_view_viewports)]
16612             .into_iter()
16613             .flatten()
16614             .next()
16615             .unwrap_or(0)
16616                 != 0,
16617             multiview_tessellation_shader: [
16618                 features_ffi
16619                     .features_vulkan11
16620                     .map(|s| s.multiview_tessellation_shader),
16621                 features_ffi
16622                     .features_multiview
16623                     .map(|s| s.multiview_tessellation_shader),
16624             ]
16625             .into_iter()
16626             .flatten()
16627             .next()
16628             .unwrap_or(0)
16629                 != 0,
16630             mutable_comparison_samplers: [features_ffi
16631                 .features_portability_subset_khr
16632                 .map(|s| s.mutable_comparison_samplers)]
16633             .into_iter()
16634             .flatten()
16635             .next()
16636             .unwrap_or(0)
16637                 != 0,
16638             mutable_descriptor_type: [features_ffi
16639                 .features_mutable_descriptor_type_ext
16640                 .map(|s| s.mutable_descriptor_type)]
16641             .into_iter()
16642             .flatten()
16643             .next()
16644             .unwrap_or(0)
16645                 != 0,
16646             no_invocation_fragment_shading_rates: [features_ffi
16647                 .features_fragment_shading_rate_enums_nv
16648                 .map(|s| s.no_invocation_fragment_shading_rates)]
16649             .into_iter()
16650             .flatten()
16651             .next()
16652             .unwrap_or(0)
16653                 != 0,
16654             non_seamless_cube_map: [features_ffi
16655                 .features_non_seamless_cube_map_ext
16656                 .map(|s| s.non_seamless_cube_map)]
16657             .into_iter()
16658             .flatten()
16659             .next()
16660             .unwrap_or(0)
16661                 != 0,
16662             null_descriptor: [features_ffi
16663                 .features_robustness2_ext
16664                 .map(|s| s.null_descriptor)]
16665             .into_iter()
16666             .flatten()
16667             .next()
16668             .unwrap_or(0)
16669                 != 0,
16670             occlusion_query_precise: [features_ffi
16671                 .features_vulkan10
16672                 .features
16673                 .occlusion_query_precise]
16674             .into_iter()
16675             .next()
16676             .unwrap_or(0)
16677                 != 0,
16678             optical_flow: [features_ffi
16679                 .features_optical_flow_nv
16680                 .map(|s| s.optical_flow)]
16681             .into_iter()
16682             .flatten()
16683             .next()
16684             .unwrap_or(0)
16685                 != 0,
16686             pageable_device_local_memory: [features_ffi
16687                 .features_pageable_device_local_memory_ext
16688                 .map(|s| s.pageable_device_local_memory)]
16689             .into_iter()
16690             .flatten()
16691             .next()
16692             .unwrap_or(0)
16693                 != 0,
16694             performance_counter_multiple_query_pools: [features_ffi
16695                 .features_performance_query_khr
16696                 .map(|s| s.performance_counter_multiple_query_pools)]
16697             .into_iter()
16698             .flatten()
16699             .next()
16700             .unwrap_or(0)
16701                 != 0,
16702             performance_counter_query_pools: [features_ffi
16703                 .features_performance_query_khr
16704                 .map(|s| s.performance_counter_query_pools)]
16705             .into_iter()
16706             .flatten()
16707             .next()
16708             .unwrap_or(0)
16709                 != 0,
16710             pipeline_creation_cache_control: [
16711                 features_ffi
16712                     .features_vulkan13
16713                     .map(|s| s.pipeline_creation_cache_control),
16714                 features_ffi
16715                     .features_pipeline_creation_cache_control
16716                     .map(|s| s.pipeline_creation_cache_control),
16717             ]
16718             .into_iter()
16719             .flatten()
16720             .next()
16721             .unwrap_or(0)
16722                 != 0,
16723             pipeline_executable_info: [features_ffi
16724                 .features_pipeline_executable_properties_khr
16725                 .map(|s| s.pipeline_executable_info)]
16726             .into_iter()
16727             .flatten()
16728             .next()
16729             .unwrap_or(0)
16730                 != 0,
16731             pipeline_fragment_shading_rate: [features_ffi
16732                 .features_fragment_shading_rate_khr
16733                 .map(|s| s.pipeline_fragment_shading_rate)]
16734             .into_iter()
16735             .flatten()
16736             .next()
16737             .unwrap_or(0)
16738                 != 0,
16739             pipeline_properties_identifier: [features_ffi
16740                 .features_pipeline_properties_ext
16741                 .map(|s| s.pipeline_properties_identifier)]
16742             .into_iter()
16743             .flatten()
16744             .next()
16745             .unwrap_or(0)
16746                 != 0,
16747             pipeline_protected_access: [features_ffi
16748                 .features_pipeline_protected_access_ext
16749                 .map(|s| s.pipeline_protected_access)]
16750             .into_iter()
16751             .flatten()
16752             .next()
16753             .unwrap_or(0)
16754                 != 0,
16755             pipeline_robustness: [features_ffi
16756                 .features_pipeline_robustness_ext
16757                 .map(|s| s.pipeline_robustness)]
16758             .into_iter()
16759             .flatten()
16760             .next()
16761             .unwrap_or(0)
16762                 != 0,
16763             pipeline_statistics_query: [features_ffi
16764                 .features_vulkan10
16765                 .features
16766                 .pipeline_statistics_query]
16767             .into_iter()
16768             .next()
16769             .unwrap_or(0)
16770                 != 0,
16771             point_polygons: [features_ffi
16772                 .features_portability_subset_khr
16773                 .map(|s| s.point_polygons)]
16774             .into_iter()
16775             .flatten()
16776             .next()
16777             .unwrap_or(0)
16778                 != 0,
16779             present_barrier: [features_ffi
16780                 .features_present_barrier_nv
16781                 .map(|s| s.present_barrier)]
16782             .into_iter()
16783             .flatten()
16784             .next()
16785             .unwrap_or(0)
16786                 != 0,
16787             present_id: [features_ffi.features_present_id_khr.map(|s| s.present_id)]
16788                 .into_iter()
16789                 .flatten()
16790                 .next()
16791                 .unwrap_or(0)
16792                 != 0,
16793             present_wait: [features_ffi
16794                 .features_present_wait_khr
16795                 .map(|s| s.present_wait)]
16796             .into_iter()
16797             .flatten()
16798             .next()
16799             .unwrap_or(0)
16800                 != 0,
16801             primitive_fragment_shading_rate: [features_ffi
16802                 .features_fragment_shading_rate_khr
16803                 .map(|s| s.primitive_fragment_shading_rate)]
16804             .into_iter()
16805             .flatten()
16806             .next()
16807             .unwrap_or(0)
16808                 != 0,
16809             primitive_fragment_shading_rate_mesh_shader: [features_ffi
16810                 .features_mesh_shader_ext
16811                 .map(|s| s.primitive_fragment_shading_rate_mesh_shader)]
16812             .into_iter()
16813             .flatten()
16814             .next()
16815             .unwrap_or(0)
16816                 != 0,
16817             primitive_topology_list_restart: [features_ffi
16818                 .features_primitive_topology_list_restart_ext
16819                 .map(|s| s.primitive_topology_list_restart)]
16820             .into_iter()
16821             .flatten()
16822             .next()
16823             .unwrap_or(0)
16824                 != 0,
16825             primitive_topology_patch_list_restart: [features_ffi
16826                 .features_primitive_topology_list_restart_ext
16827                 .map(|s| s.primitive_topology_patch_list_restart)]
16828             .into_iter()
16829             .flatten()
16830             .next()
16831             .unwrap_or(0)
16832                 != 0,
16833             primitives_generated_query: [features_ffi
16834                 .features_primitives_generated_query_ext
16835                 .map(|s| s.primitives_generated_query)]
16836             .into_iter()
16837             .flatten()
16838             .next()
16839             .unwrap_or(0)
16840                 != 0,
16841             primitives_generated_query_with_non_zero_streams: [features_ffi
16842                 .features_primitives_generated_query_ext
16843                 .map(|s| s.primitives_generated_query_with_non_zero_streams)]
16844             .into_iter()
16845             .flatten()
16846             .next()
16847             .unwrap_or(0)
16848                 != 0,
16849             primitives_generated_query_with_rasterizer_discard: [features_ffi
16850                 .features_primitives_generated_query_ext
16851                 .map(|s| s.primitives_generated_query_with_rasterizer_discard)]
16852             .into_iter()
16853             .flatten()
16854             .next()
16855             .unwrap_or(0)
16856                 != 0,
16857             private_data: [
16858                 features_ffi.features_vulkan13.map(|s| s.private_data),
16859                 features_ffi.features_private_data.map(|s| s.private_data),
16860             ]
16861             .into_iter()
16862             .flatten()
16863             .next()
16864             .unwrap_or(0)
16865                 != 0,
16866             protected_memory: [
16867                 features_ffi.features_vulkan11.map(|s| s.protected_memory),
16868                 features_ffi
16869                     .features_protected_memory
16870                     .map(|s| s.protected_memory),
16871             ]
16872             .into_iter()
16873             .flatten()
16874             .next()
16875             .unwrap_or(0)
16876                 != 0,
16877             provoking_vertex_last: [features_ffi
16878                 .features_provoking_vertex_ext
16879                 .map(|s| s.provoking_vertex_last)]
16880             .into_iter()
16881             .flatten()
16882             .next()
16883             .unwrap_or(0)
16884                 != 0,
16885             rasterization_order_color_attachment_access: [features_ffi
16886                 .features_rasterization_order_attachment_access_ext
16887                 .map(|s| s.rasterization_order_color_attachment_access)]
16888             .into_iter()
16889             .flatten()
16890             .next()
16891             .unwrap_or(0)
16892                 != 0,
16893             rasterization_order_depth_attachment_access: [features_ffi
16894                 .features_rasterization_order_attachment_access_ext
16895                 .map(|s| s.rasterization_order_depth_attachment_access)]
16896             .into_iter()
16897             .flatten()
16898             .next()
16899             .unwrap_or(0)
16900                 != 0,
16901             rasterization_order_stencil_attachment_access: [features_ffi
16902                 .features_rasterization_order_attachment_access_ext
16903                 .map(|s| s.rasterization_order_stencil_attachment_access)]
16904             .into_iter()
16905             .flatten()
16906             .next()
16907             .unwrap_or(0)
16908                 != 0,
16909             ray_query: [features_ffi.features_ray_query_khr.map(|s| s.ray_query)]
16910                 .into_iter()
16911                 .flatten()
16912                 .next()
16913                 .unwrap_or(0)
16914                 != 0,
16915             ray_tracing_invocation_reorder: [features_ffi
16916                 .features_ray_tracing_invocation_reorder_nv
16917                 .map(|s| s.ray_tracing_invocation_reorder)]
16918             .into_iter()
16919             .flatten()
16920             .next()
16921             .unwrap_or(0)
16922                 != 0,
16923             ray_tracing_maintenance1: [features_ffi
16924                 .features_ray_tracing_maintenance1_khr
16925                 .map(|s| s.ray_tracing_maintenance1)]
16926             .into_iter()
16927             .flatten()
16928             .next()
16929             .unwrap_or(0)
16930                 != 0,
16931             ray_tracing_motion_blur: [features_ffi
16932                 .features_ray_tracing_motion_blur_nv
16933                 .map(|s| s.ray_tracing_motion_blur)]
16934             .into_iter()
16935             .flatten()
16936             .next()
16937             .unwrap_or(0)
16938                 != 0,
16939             ray_tracing_motion_blur_pipeline_trace_rays_indirect: [features_ffi
16940                 .features_ray_tracing_motion_blur_nv
16941                 .map(|s| s.ray_tracing_motion_blur_pipeline_trace_rays_indirect)]
16942             .into_iter()
16943             .flatten()
16944             .next()
16945             .unwrap_or(0)
16946                 != 0,
16947             ray_tracing_pipeline: [features_ffi
16948                 .features_ray_tracing_pipeline_khr
16949                 .map(|s| s.ray_tracing_pipeline)]
16950             .into_iter()
16951             .flatten()
16952             .next()
16953             .unwrap_or(0)
16954                 != 0,
16955             ray_tracing_pipeline_shader_group_handle_capture_replay: [features_ffi
16956                 .features_ray_tracing_pipeline_khr
16957                 .map(|s| s.ray_tracing_pipeline_shader_group_handle_capture_replay)]
16958             .into_iter()
16959             .flatten()
16960             .next()
16961             .unwrap_or(0)
16962                 != 0,
16963             ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: [features_ffi
16964                 .features_ray_tracing_pipeline_khr
16965                 .map(|s| s.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed)]
16966             .into_iter()
16967             .flatten()
16968             .next()
16969             .unwrap_or(0)
16970                 != 0,
16971             ray_tracing_pipeline_trace_rays_indirect: [features_ffi
16972                 .features_ray_tracing_pipeline_khr
16973                 .map(|s| s.ray_tracing_pipeline_trace_rays_indirect)]
16974             .into_iter()
16975             .flatten()
16976             .next()
16977             .unwrap_or(0)
16978                 != 0,
16979             ray_tracing_pipeline_trace_rays_indirect2: [features_ffi
16980                 .features_ray_tracing_maintenance1_khr
16981                 .map(|s| s.ray_tracing_pipeline_trace_rays_indirect2)]
16982             .into_iter()
16983             .flatten()
16984             .next()
16985             .unwrap_or(0)
16986                 != 0,
16987             ray_traversal_primitive_culling: [features_ffi
16988                 .features_ray_tracing_pipeline_khr
16989                 .map(|s| s.ray_traversal_primitive_culling)]
16990             .into_iter()
16991             .flatten()
16992             .next()
16993             .unwrap_or(0)
16994                 != 0,
16995             rectangular_lines: [features_ffi
16996                 .features_line_rasterization_ext
16997                 .map(|s| s.rectangular_lines)]
16998             .into_iter()
16999             .flatten()
17000             .next()
17001             .unwrap_or(0)
17002                 != 0,
17003             report_address_binding: [features_ffi
17004                 .features_address_binding_report_ext
17005                 .map(|s| s.report_address_binding)]
17006             .into_iter()
17007             .flatten()
17008             .next()
17009             .unwrap_or(0)
17010                 != 0,
17011             representative_fragment_test: [features_ffi
17012                 .features_representative_fragment_test_nv
17013                 .map(|s| s.representative_fragment_test)]
17014             .into_iter()
17015             .flatten()
17016             .next()
17017             .unwrap_or(0)
17018                 != 0,
17019             robust_buffer_access: [features_ffi.features_vulkan10.features.robust_buffer_access]
17020                 .into_iter()
17021                 .next()
17022                 .unwrap_or(0)
17023                 != 0,
17024             robust_buffer_access2: [features_ffi
17025                 .features_robustness2_ext
17026                 .map(|s| s.robust_buffer_access2)]
17027             .into_iter()
17028             .flatten()
17029             .next()
17030             .unwrap_or(0)
17031                 != 0,
17032             robust_image_access: [
17033                 features_ffi
17034                     .features_vulkan13
17035                     .map(|s| s.robust_image_access),
17036                 features_ffi
17037                     .features_image_robustness
17038                     .map(|s| s.robust_image_access),
17039             ]
17040             .into_iter()
17041             .flatten()
17042             .next()
17043             .unwrap_or(0)
17044                 != 0,
17045             robust_image_access2: [features_ffi
17046                 .features_robustness2_ext
17047                 .map(|s| s.robust_image_access2)]
17048             .into_iter()
17049             .flatten()
17050             .next()
17051             .unwrap_or(0)
17052                 != 0,
17053             runtime_descriptor_array: [
17054                 features_ffi
17055                     .features_vulkan12
17056                     .map(|s| s.runtime_descriptor_array),
17057                 features_ffi
17058                     .features_descriptor_indexing
17059                     .map(|s| s.runtime_descriptor_array),
17060             ]
17061             .into_iter()
17062             .flatten()
17063             .next()
17064             .unwrap_or(0)
17065                 != 0,
17066             sample_rate_shading: [features_ffi.features_vulkan10.features.sample_rate_shading]
17067                 .into_iter()
17068                 .next()
17069                 .unwrap_or(0)
17070                 != 0,
17071             sampler2_d_view_of3_d: [features_ffi
17072                 .features_image2_d_view_of3_d_ext
17073                 .map(|s| s.sampler2_d_view_of3_d)]
17074             .into_iter()
17075             .flatten()
17076             .next()
17077             .unwrap_or(0)
17078                 != 0,
17079             sampler_anisotropy: [features_ffi.features_vulkan10.features.sampler_anisotropy]
17080                 .into_iter()
17081                 .next()
17082                 .unwrap_or(0)
17083                 != 0,
17084             sampler_filter_minmax: [features_ffi
17085                 .features_vulkan12
17086                 .map(|s| s.sampler_filter_minmax)]
17087             .into_iter()
17088             .flatten()
17089             .next()
17090             .unwrap_or(0)
17091                 != 0,
17092             sampler_mip_lod_bias: [features_ffi
17093                 .features_portability_subset_khr
17094                 .map(|s| s.sampler_mip_lod_bias)]
17095             .into_iter()
17096             .flatten()
17097             .next()
17098             .unwrap_or(0)
17099                 != 0,
17100             sampler_mirror_clamp_to_edge: [features_ffi
17101                 .features_vulkan12
17102                 .map(|s| s.sampler_mirror_clamp_to_edge)]
17103             .into_iter()
17104             .flatten()
17105             .next()
17106             .unwrap_or(0)
17107                 != 0,
17108             sampler_ycbcr_conversion: [
17109                 features_ffi
17110                     .features_vulkan11
17111                     .map(|s| s.sampler_ycbcr_conversion),
17112                 features_ffi
17113                     .features_sampler_ycbcr_conversion
17114                     .map(|s| s.sampler_ycbcr_conversion),
17115             ]
17116             .into_iter()
17117             .flatten()
17118             .next()
17119             .unwrap_or(0)
17120                 != 0,
17121             scalar_block_layout: [
17122                 features_ffi
17123                     .features_vulkan12
17124                     .map(|s| s.scalar_block_layout),
17125                 features_ffi
17126                     .features_scalar_block_layout
17127                     .map(|s| s.scalar_block_layout),
17128             ]
17129             .into_iter()
17130             .flatten()
17131             .next()
17132             .unwrap_or(0)
17133                 != 0,
17134             separate_depth_stencil_layouts: [
17135                 features_ffi
17136                     .features_vulkan12
17137                     .map(|s| s.separate_depth_stencil_layouts),
17138                 features_ffi
17139                     .features_separate_depth_stencil_layouts
17140                     .map(|s| s.separate_depth_stencil_layouts),
17141             ]
17142             .into_iter()
17143             .flatten()
17144             .next()
17145             .unwrap_or(0)
17146                 != 0,
17147             separate_stencil_mask_ref: [features_ffi
17148                 .features_portability_subset_khr
17149                 .map(|s| s.separate_stencil_mask_ref)]
17150             .into_iter()
17151             .flatten()
17152             .next()
17153             .unwrap_or(0)
17154                 != 0,
17155             shader_buffer_float16_atomic_add: [features_ffi
17156                 .features_shader_atomic_float2_ext
17157                 .map(|s| s.shader_buffer_float16_atomic_add)]
17158             .into_iter()
17159             .flatten()
17160             .next()
17161             .unwrap_or(0)
17162                 != 0,
17163             shader_buffer_float16_atomic_min_max: [features_ffi
17164                 .features_shader_atomic_float2_ext
17165                 .map(|s| s.shader_buffer_float16_atomic_min_max)]
17166             .into_iter()
17167             .flatten()
17168             .next()
17169             .unwrap_or(0)
17170                 != 0,
17171             shader_buffer_float16_atomics: [features_ffi
17172                 .features_shader_atomic_float2_ext
17173                 .map(|s| s.shader_buffer_float16_atomics)]
17174             .into_iter()
17175             .flatten()
17176             .next()
17177             .unwrap_or(0)
17178                 != 0,
17179             shader_buffer_float32_atomic_add: [features_ffi
17180                 .features_shader_atomic_float_ext
17181                 .map(|s| s.shader_buffer_float32_atomic_add)]
17182             .into_iter()
17183             .flatten()
17184             .next()
17185             .unwrap_or(0)
17186                 != 0,
17187             shader_buffer_float32_atomic_min_max: [features_ffi
17188                 .features_shader_atomic_float2_ext
17189                 .map(|s| s.shader_buffer_float32_atomic_min_max)]
17190             .into_iter()
17191             .flatten()
17192             .next()
17193             .unwrap_or(0)
17194                 != 0,
17195             shader_buffer_float32_atomics: [features_ffi
17196                 .features_shader_atomic_float_ext
17197                 .map(|s| s.shader_buffer_float32_atomics)]
17198             .into_iter()
17199             .flatten()
17200             .next()
17201             .unwrap_or(0)
17202                 != 0,
17203             shader_buffer_float64_atomic_add: [features_ffi
17204                 .features_shader_atomic_float_ext
17205                 .map(|s| s.shader_buffer_float64_atomic_add)]
17206             .into_iter()
17207             .flatten()
17208             .next()
17209             .unwrap_or(0)
17210                 != 0,
17211             shader_buffer_float64_atomic_min_max: [features_ffi
17212                 .features_shader_atomic_float2_ext
17213                 .map(|s| s.shader_buffer_float64_atomic_min_max)]
17214             .into_iter()
17215             .flatten()
17216             .next()
17217             .unwrap_or(0)
17218                 != 0,
17219             shader_buffer_float64_atomics: [features_ffi
17220                 .features_shader_atomic_float_ext
17221                 .map(|s| s.shader_buffer_float64_atomics)]
17222             .into_iter()
17223             .flatten()
17224             .next()
17225             .unwrap_or(0)
17226                 != 0,
17227             shader_buffer_int64_atomics: [
17228                 features_ffi
17229                     .features_vulkan12
17230                     .map(|s| s.shader_buffer_int64_atomics),
17231                 features_ffi
17232                     .features_shader_atomic_int64
17233                     .map(|s| s.shader_buffer_int64_atomics),
17234             ]
17235             .into_iter()
17236             .flatten()
17237             .next()
17238             .unwrap_or(0)
17239                 != 0,
17240             shader_clip_distance: [features_ffi.features_vulkan10.features.shader_clip_distance]
17241                 .into_iter()
17242                 .next()
17243                 .unwrap_or(0)
17244                 != 0,
17245             shader_core_builtins: [features_ffi
17246                 .features_shader_core_builtins_arm
17247                 .map(|s| s.shader_core_builtins)]
17248             .into_iter()
17249             .flatten()
17250             .next()
17251             .unwrap_or(0)
17252                 != 0,
17253             shader_cull_distance: [features_ffi.features_vulkan10.features.shader_cull_distance]
17254                 .into_iter()
17255                 .next()
17256                 .unwrap_or(0)
17257                 != 0,
17258             shader_demote_to_helper_invocation: [
17259                 features_ffi
17260                     .features_vulkan13
17261                     .map(|s| s.shader_demote_to_helper_invocation),
17262                 features_ffi
17263                     .features_shader_demote_to_helper_invocation
17264                     .map(|s| s.shader_demote_to_helper_invocation),
17265             ]
17266             .into_iter()
17267             .flatten()
17268             .next()
17269             .unwrap_or(0)
17270                 != 0,
17271             shader_device_clock: [features_ffi
17272                 .features_shader_clock_khr
17273                 .map(|s| s.shader_device_clock)]
17274             .into_iter()
17275             .flatten()
17276             .next()
17277             .unwrap_or(0)
17278                 != 0,
17279             shader_draw_parameters: [
17280                 features_ffi
17281                     .features_vulkan11
17282                     .map(|s| s.shader_draw_parameters),
17283                 features_ffi
17284                     .features_shader_draw_parameters
17285                     .map(|s| s.shader_draw_parameters),
17286             ]
17287             .into_iter()
17288             .flatten()
17289             .next()
17290             .unwrap_or(0)
17291                 != 0,
17292             shader_early_and_late_fragment_tests: [features_ffi
17293                 .features_shader_early_and_late_fragment_tests_amd
17294                 .map(|s| s.shader_early_and_late_fragment_tests)]
17295             .into_iter()
17296             .flatten()
17297             .next()
17298             .unwrap_or(0)
17299                 != 0,
17300             shader_float16: [
17301                 features_ffi.features_vulkan12.map(|s| s.shader_float16),
17302                 features_ffi
17303                     .features_shader_float16_int8
17304                     .map(|s| s.shader_float16),
17305             ]
17306             .into_iter()
17307             .flatten()
17308             .next()
17309             .unwrap_or(0)
17310                 != 0,
17311             shader_float64: [features_ffi.features_vulkan10.features.shader_float64]
17312                 .into_iter()
17313                 .next()
17314                 .unwrap_or(0)
17315                 != 0,
17316             shader_image_float32_atomic_add: [features_ffi
17317                 .features_shader_atomic_float_ext
17318                 .map(|s| s.shader_image_float32_atomic_add)]
17319             .into_iter()
17320             .flatten()
17321             .next()
17322             .unwrap_or(0)
17323                 != 0,
17324             shader_image_float32_atomic_min_max: [features_ffi
17325                 .features_shader_atomic_float2_ext
17326                 .map(|s| s.shader_image_float32_atomic_min_max)]
17327             .into_iter()
17328             .flatten()
17329             .next()
17330             .unwrap_or(0)
17331                 != 0,
17332             shader_image_float32_atomics: [features_ffi
17333                 .features_shader_atomic_float_ext
17334                 .map(|s| s.shader_image_float32_atomics)]
17335             .into_iter()
17336             .flatten()
17337             .next()
17338             .unwrap_or(0)
17339                 != 0,
17340             shader_image_gather_extended: [features_ffi
17341                 .features_vulkan10
17342                 .features
17343                 .shader_image_gather_extended]
17344             .into_iter()
17345             .next()
17346             .unwrap_or(0)
17347                 != 0,
17348             shader_image_int64_atomics: [features_ffi
17349                 .features_shader_image_atomic_int64_ext
17350                 .map(|s| s.shader_image_int64_atomics)]
17351             .into_iter()
17352             .flatten()
17353             .next()
17354             .unwrap_or(0)
17355                 != 0,
17356             shader_input_attachment_array_dynamic_indexing: [
17357                 features_ffi
17358                     .features_vulkan12
17359                     .map(|s| s.shader_input_attachment_array_dynamic_indexing),
17360                 features_ffi
17361                     .features_descriptor_indexing
17362                     .map(|s| s.shader_input_attachment_array_dynamic_indexing),
17363             ]
17364             .into_iter()
17365             .flatten()
17366             .next()
17367             .unwrap_or(0)
17368                 != 0,
17369             shader_input_attachment_array_non_uniform_indexing: [
17370                 features_ffi
17371                     .features_vulkan12
17372                     .map(|s| s.shader_input_attachment_array_non_uniform_indexing),
17373                 features_ffi
17374                     .features_descriptor_indexing
17375                     .map(|s| s.shader_input_attachment_array_non_uniform_indexing),
17376             ]
17377             .into_iter()
17378             .flatten()
17379             .next()
17380             .unwrap_or(0)
17381                 != 0,
17382             shader_int16: [features_ffi.features_vulkan10.features.shader_int16]
17383                 .into_iter()
17384                 .next()
17385                 .unwrap_or(0)
17386                 != 0,
17387             shader_int64: [features_ffi.features_vulkan10.features.shader_int64]
17388                 .into_iter()
17389                 .next()
17390                 .unwrap_or(0)
17391                 != 0,
17392             shader_int8: [
17393                 features_ffi.features_vulkan12.map(|s| s.shader_int8),
17394                 features_ffi
17395                     .features_shader_float16_int8
17396                     .map(|s| s.shader_int8),
17397             ]
17398             .into_iter()
17399             .flatten()
17400             .next()
17401             .unwrap_or(0)
17402                 != 0,
17403             shader_integer_dot_product: [
17404                 features_ffi
17405                     .features_vulkan13
17406                     .map(|s| s.shader_integer_dot_product),
17407                 features_ffi
17408                     .features_shader_integer_dot_product
17409                     .map(|s| s.shader_integer_dot_product),
17410             ]
17411             .into_iter()
17412             .flatten()
17413             .next()
17414             .unwrap_or(0)
17415                 != 0,
17416             shader_integer_functions2: [features_ffi
17417                 .features_shader_integer_functions2_intel
17418                 .map(|s| s.shader_integer_functions2)]
17419             .into_iter()
17420             .flatten()
17421             .next()
17422             .unwrap_or(0)
17423                 != 0,
17424             shader_module_identifier: [features_ffi
17425                 .features_shader_module_identifier_ext
17426                 .map(|s| s.shader_module_identifier)]
17427             .into_iter()
17428             .flatten()
17429             .next()
17430             .unwrap_or(0)
17431                 != 0,
17432             shader_output_layer: [features_ffi
17433                 .features_vulkan12
17434                 .map(|s| s.shader_output_layer)]
17435             .into_iter()
17436             .flatten()
17437             .next()
17438             .unwrap_or(0)
17439                 != 0,
17440             shader_output_viewport_index: [features_ffi
17441                 .features_vulkan12
17442                 .map(|s| s.shader_output_viewport_index)]
17443             .into_iter()
17444             .flatten()
17445             .next()
17446             .unwrap_or(0)
17447                 != 0,
17448             shader_resource_min_lod: [features_ffi
17449                 .features_vulkan10
17450                 .features
17451                 .shader_resource_min_lod]
17452             .into_iter()
17453             .next()
17454             .unwrap_or(0)
17455                 != 0,
17456             shader_resource_residency: [features_ffi
17457                 .features_vulkan10
17458                 .features
17459                 .shader_resource_residency]
17460             .into_iter()
17461             .next()
17462             .unwrap_or(0)
17463                 != 0,
17464             shader_sample_rate_interpolation_functions: [features_ffi
17465                 .features_portability_subset_khr
17466                 .map(|s| s.shader_sample_rate_interpolation_functions)]
17467             .into_iter()
17468             .flatten()
17469             .next()
17470             .unwrap_or(0)
17471                 != 0,
17472             shader_sampled_image_array_dynamic_indexing: [features_ffi
17473                 .features_vulkan10
17474                 .features
17475                 .shader_sampled_image_array_dynamic_indexing]
17476             .into_iter()
17477             .next()
17478             .unwrap_or(0)
17479                 != 0,
17480             shader_sampled_image_array_non_uniform_indexing: [
17481                 features_ffi
17482                     .features_vulkan12
17483                     .map(|s| s.shader_sampled_image_array_non_uniform_indexing),
17484                 features_ffi
17485                     .features_descriptor_indexing
17486                     .map(|s| s.shader_sampled_image_array_non_uniform_indexing),
17487             ]
17488             .into_iter()
17489             .flatten()
17490             .next()
17491             .unwrap_or(0)
17492                 != 0,
17493             shader_shared_float16_atomic_add: [features_ffi
17494                 .features_shader_atomic_float2_ext
17495                 .map(|s| s.shader_shared_float16_atomic_add)]
17496             .into_iter()
17497             .flatten()
17498             .next()
17499             .unwrap_or(0)
17500                 != 0,
17501             shader_shared_float16_atomic_min_max: [features_ffi
17502                 .features_shader_atomic_float2_ext
17503                 .map(|s| s.shader_shared_float16_atomic_min_max)]
17504             .into_iter()
17505             .flatten()
17506             .next()
17507             .unwrap_or(0)
17508                 != 0,
17509             shader_shared_float16_atomics: [features_ffi
17510                 .features_shader_atomic_float2_ext
17511                 .map(|s| s.shader_shared_float16_atomics)]
17512             .into_iter()
17513             .flatten()
17514             .next()
17515             .unwrap_or(0)
17516                 != 0,
17517             shader_shared_float32_atomic_add: [features_ffi
17518                 .features_shader_atomic_float_ext
17519                 .map(|s| s.shader_shared_float32_atomic_add)]
17520             .into_iter()
17521             .flatten()
17522             .next()
17523             .unwrap_or(0)
17524                 != 0,
17525             shader_shared_float32_atomic_min_max: [features_ffi
17526                 .features_shader_atomic_float2_ext
17527                 .map(|s| s.shader_shared_float32_atomic_min_max)]
17528             .into_iter()
17529             .flatten()
17530             .next()
17531             .unwrap_or(0)
17532                 != 0,
17533             shader_shared_float32_atomics: [features_ffi
17534                 .features_shader_atomic_float_ext
17535                 .map(|s| s.shader_shared_float32_atomics)]
17536             .into_iter()
17537             .flatten()
17538             .next()
17539             .unwrap_or(0)
17540                 != 0,
17541             shader_shared_float64_atomic_add: [features_ffi
17542                 .features_shader_atomic_float_ext
17543                 .map(|s| s.shader_shared_float64_atomic_add)]
17544             .into_iter()
17545             .flatten()
17546             .next()
17547             .unwrap_or(0)
17548                 != 0,
17549             shader_shared_float64_atomic_min_max: [features_ffi
17550                 .features_shader_atomic_float2_ext
17551                 .map(|s| s.shader_shared_float64_atomic_min_max)]
17552             .into_iter()
17553             .flatten()
17554             .next()
17555             .unwrap_or(0)
17556                 != 0,
17557             shader_shared_float64_atomics: [features_ffi
17558                 .features_shader_atomic_float_ext
17559                 .map(|s| s.shader_shared_float64_atomics)]
17560             .into_iter()
17561             .flatten()
17562             .next()
17563             .unwrap_or(0)
17564                 != 0,
17565             shader_shared_int64_atomics: [
17566                 features_ffi
17567                     .features_vulkan12
17568                     .map(|s| s.shader_shared_int64_atomics),
17569                 features_ffi
17570                     .features_shader_atomic_int64
17571                     .map(|s| s.shader_shared_int64_atomics),
17572             ]
17573             .into_iter()
17574             .flatten()
17575             .next()
17576             .unwrap_or(0)
17577                 != 0,
17578             shader_sm_builtins: [features_ffi
17579                 .features_shader_sm_builtins_nv
17580                 .map(|s| s.shader_sm_builtins)]
17581             .into_iter()
17582             .flatten()
17583             .next()
17584             .unwrap_or(0)
17585                 != 0,
17586             shader_storage_buffer_array_dynamic_indexing: [features_ffi
17587                 .features_vulkan10
17588                 .features
17589                 .shader_storage_buffer_array_dynamic_indexing]
17590             .into_iter()
17591             .next()
17592             .unwrap_or(0)
17593                 != 0,
17594             shader_storage_buffer_array_non_uniform_indexing: [
17595                 features_ffi
17596                     .features_vulkan12
17597                     .map(|s| s.shader_storage_buffer_array_non_uniform_indexing),
17598                 features_ffi
17599                     .features_descriptor_indexing
17600                     .map(|s| s.shader_storage_buffer_array_non_uniform_indexing),
17601             ]
17602             .into_iter()
17603             .flatten()
17604             .next()
17605             .unwrap_or(0)
17606                 != 0,
17607             shader_storage_image_array_dynamic_indexing: [features_ffi
17608                 .features_vulkan10
17609                 .features
17610                 .shader_storage_image_array_dynamic_indexing]
17611             .into_iter()
17612             .next()
17613             .unwrap_or(0)
17614                 != 0,
17615             shader_storage_image_array_non_uniform_indexing: [
17616                 features_ffi
17617                     .features_vulkan12
17618                     .map(|s| s.shader_storage_image_array_non_uniform_indexing),
17619                 features_ffi
17620                     .features_descriptor_indexing
17621                     .map(|s| s.shader_storage_image_array_non_uniform_indexing),
17622             ]
17623             .into_iter()
17624             .flatten()
17625             .next()
17626             .unwrap_or(0)
17627                 != 0,
17628             shader_storage_image_extended_formats: [features_ffi
17629                 .features_vulkan10
17630                 .features
17631                 .shader_storage_image_extended_formats]
17632             .into_iter()
17633             .next()
17634             .unwrap_or(0)
17635                 != 0,
17636             shader_storage_image_multisample: [features_ffi
17637                 .features_vulkan10
17638                 .features
17639                 .shader_storage_image_multisample]
17640             .into_iter()
17641             .next()
17642             .unwrap_or(0)
17643                 != 0,
17644             shader_storage_image_read_without_format: [features_ffi
17645                 .features_vulkan10
17646                 .features
17647                 .shader_storage_image_read_without_format]
17648             .into_iter()
17649             .next()
17650             .unwrap_or(0)
17651                 != 0,
17652             shader_storage_image_write_without_format: [features_ffi
17653                 .features_vulkan10
17654                 .features
17655                 .shader_storage_image_write_without_format]
17656             .into_iter()
17657             .next()
17658             .unwrap_or(0)
17659                 != 0,
17660             shader_storage_texel_buffer_array_dynamic_indexing: [
17661                 features_ffi
17662                     .features_vulkan12
17663                     .map(|s| s.shader_storage_texel_buffer_array_dynamic_indexing),
17664                 features_ffi
17665                     .features_descriptor_indexing
17666                     .map(|s| s.shader_storage_texel_buffer_array_dynamic_indexing),
17667             ]
17668             .into_iter()
17669             .flatten()
17670             .next()
17671             .unwrap_or(0)
17672                 != 0,
17673             shader_storage_texel_buffer_array_non_uniform_indexing: [
17674                 features_ffi
17675                     .features_vulkan12
17676                     .map(|s| s.shader_storage_texel_buffer_array_non_uniform_indexing),
17677                 features_ffi
17678                     .features_descriptor_indexing
17679                     .map(|s| s.shader_storage_texel_buffer_array_non_uniform_indexing),
17680             ]
17681             .into_iter()
17682             .flatten()
17683             .next()
17684             .unwrap_or(0)
17685                 != 0,
17686             shader_subgroup_clock: [features_ffi
17687                 .features_shader_clock_khr
17688                 .map(|s| s.shader_subgroup_clock)]
17689             .into_iter()
17690             .flatten()
17691             .next()
17692             .unwrap_or(0)
17693                 != 0,
17694             shader_subgroup_extended_types: [
17695                 features_ffi
17696                     .features_vulkan12
17697                     .map(|s| s.shader_subgroup_extended_types),
17698                 features_ffi
17699                     .features_shader_subgroup_extended_types
17700                     .map(|s| s.shader_subgroup_extended_types),
17701             ]
17702             .into_iter()
17703             .flatten()
17704             .next()
17705             .unwrap_or(0)
17706                 != 0,
17707             shader_subgroup_uniform_control_flow: [features_ffi
17708                 .features_shader_subgroup_uniform_control_flow_khr
17709                 .map(|s| s.shader_subgroup_uniform_control_flow)]
17710             .into_iter()
17711             .flatten()
17712             .next()
17713             .unwrap_or(0)
17714                 != 0,
17715             shader_terminate_invocation: [
17716                 features_ffi
17717                     .features_vulkan13
17718                     .map(|s| s.shader_terminate_invocation),
17719                 features_ffi
17720                     .features_shader_terminate_invocation
17721                     .map(|s| s.shader_terminate_invocation),
17722             ]
17723             .into_iter()
17724             .flatten()
17725             .next()
17726             .unwrap_or(0)
17727                 != 0,
17728             shader_tessellation_and_geometry_point_size: [features_ffi
17729                 .features_vulkan10
17730                 .features
17731                 .shader_tessellation_and_geometry_point_size]
17732             .into_iter()
17733             .next()
17734             .unwrap_or(0)
17735                 != 0,
17736             shader_uniform_buffer_array_dynamic_indexing: [features_ffi
17737                 .features_vulkan10
17738                 .features
17739                 .shader_uniform_buffer_array_dynamic_indexing]
17740             .into_iter()
17741             .next()
17742             .unwrap_or(0)
17743                 != 0,
17744             shader_uniform_buffer_array_non_uniform_indexing: [
17745                 features_ffi
17746                     .features_vulkan12
17747                     .map(|s| s.shader_uniform_buffer_array_non_uniform_indexing),
17748                 features_ffi
17749                     .features_descriptor_indexing
17750                     .map(|s| s.shader_uniform_buffer_array_non_uniform_indexing),
17751             ]
17752             .into_iter()
17753             .flatten()
17754             .next()
17755             .unwrap_or(0)
17756                 != 0,
17757             shader_uniform_texel_buffer_array_dynamic_indexing: [
17758                 features_ffi
17759                     .features_vulkan12
17760                     .map(|s| s.shader_uniform_texel_buffer_array_dynamic_indexing),
17761                 features_ffi
17762                     .features_descriptor_indexing
17763                     .map(|s| s.shader_uniform_texel_buffer_array_dynamic_indexing),
17764             ]
17765             .into_iter()
17766             .flatten()
17767             .next()
17768             .unwrap_or(0)
17769                 != 0,
17770             shader_uniform_texel_buffer_array_non_uniform_indexing: [
17771                 features_ffi
17772                     .features_vulkan12
17773                     .map(|s| s.shader_uniform_texel_buffer_array_non_uniform_indexing),
17774                 features_ffi
17775                     .features_descriptor_indexing
17776                     .map(|s| s.shader_uniform_texel_buffer_array_non_uniform_indexing),
17777             ]
17778             .into_iter()
17779             .flatten()
17780             .next()
17781             .unwrap_or(0)
17782                 != 0,
17783             shader_zero_initialize_workgroup_memory: [
17784                 features_ffi
17785                     .features_vulkan13
17786                     .map(|s| s.shader_zero_initialize_workgroup_memory),
17787                 features_ffi
17788                     .features_zero_initialize_workgroup_memory
17789                     .map(|s| s.shader_zero_initialize_workgroup_memory),
17790             ]
17791             .into_iter()
17792             .flatten()
17793             .next()
17794             .unwrap_or(0)
17795                 != 0,
17796             shading_rate_coarse_sample_order: [features_ffi
17797                 .features_shading_rate_image_nv
17798                 .map(|s| s.shading_rate_coarse_sample_order)]
17799             .into_iter()
17800             .flatten()
17801             .next()
17802             .unwrap_or(0)
17803                 != 0,
17804             shading_rate_image: [features_ffi
17805                 .features_shading_rate_image_nv
17806                 .map(|s| s.shading_rate_image)]
17807             .into_iter()
17808             .flatten()
17809             .next()
17810             .unwrap_or(0)
17811                 != 0,
17812             smooth_lines: [features_ffi
17813                 .features_line_rasterization_ext
17814                 .map(|s| s.smooth_lines)]
17815             .into_iter()
17816             .flatten()
17817             .next()
17818             .unwrap_or(0)
17819                 != 0,
17820             sparse_binding: [features_ffi.features_vulkan10.features.sparse_binding]
17821                 .into_iter()
17822                 .next()
17823                 .unwrap_or(0)
17824                 != 0,
17825             sparse_image_float32_atomic_add: [features_ffi
17826                 .features_shader_atomic_float_ext
17827                 .map(|s| s.sparse_image_float32_atomic_add)]
17828             .into_iter()
17829             .flatten()
17830             .next()
17831             .unwrap_or(0)
17832                 != 0,
17833             sparse_image_float32_atomic_min_max: [features_ffi
17834                 .features_shader_atomic_float2_ext
17835                 .map(|s| s.sparse_image_float32_atomic_min_max)]
17836             .into_iter()
17837             .flatten()
17838             .next()
17839             .unwrap_or(0)
17840                 != 0,
17841             sparse_image_float32_atomics: [features_ffi
17842                 .features_shader_atomic_float_ext
17843                 .map(|s| s.sparse_image_float32_atomics)]
17844             .into_iter()
17845             .flatten()
17846             .next()
17847             .unwrap_or(0)
17848                 != 0,
17849             sparse_image_int64_atomics: [features_ffi
17850                 .features_shader_image_atomic_int64_ext
17851                 .map(|s| s.sparse_image_int64_atomics)]
17852             .into_iter()
17853             .flatten()
17854             .next()
17855             .unwrap_or(0)
17856                 != 0,
17857             sparse_residency16_samples: [features_ffi
17858                 .features_vulkan10
17859                 .features
17860                 .sparse_residency16_samples]
17861             .into_iter()
17862             .next()
17863             .unwrap_or(0)
17864                 != 0,
17865             sparse_residency2_samples: [features_ffi
17866                 .features_vulkan10
17867                 .features
17868                 .sparse_residency2_samples]
17869             .into_iter()
17870             .next()
17871             .unwrap_or(0)
17872                 != 0,
17873             sparse_residency4_samples: [features_ffi
17874                 .features_vulkan10
17875                 .features
17876                 .sparse_residency4_samples]
17877             .into_iter()
17878             .next()
17879             .unwrap_or(0)
17880                 != 0,
17881             sparse_residency8_samples: [features_ffi
17882                 .features_vulkan10
17883                 .features
17884                 .sparse_residency8_samples]
17885             .into_iter()
17886             .next()
17887             .unwrap_or(0)
17888                 != 0,
17889             sparse_residency_aliased: [features_ffi
17890                 .features_vulkan10
17891                 .features
17892                 .sparse_residency_aliased]
17893             .into_iter()
17894             .next()
17895             .unwrap_or(0)
17896                 != 0,
17897             sparse_residency_buffer: [features_ffi
17898                 .features_vulkan10
17899                 .features
17900                 .sparse_residency_buffer]
17901             .into_iter()
17902             .next()
17903             .unwrap_or(0)
17904                 != 0,
17905             sparse_residency_image2_d: [features_ffi
17906                 .features_vulkan10
17907                 .features
17908                 .sparse_residency_image2_d]
17909             .into_iter()
17910             .next()
17911             .unwrap_or(0)
17912                 != 0,
17913             sparse_residency_image3_d: [features_ffi
17914                 .features_vulkan10
17915                 .features
17916                 .sparse_residency_image3_d]
17917             .into_iter()
17918             .next()
17919             .unwrap_or(0)
17920                 != 0,
17921             stippled_bresenham_lines: [features_ffi
17922                 .features_line_rasterization_ext
17923                 .map(|s| s.stippled_bresenham_lines)]
17924             .into_iter()
17925             .flatten()
17926             .next()
17927             .unwrap_or(0)
17928                 != 0,
17929             stippled_rectangular_lines: [features_ffi
17930                 .features_line_rasterization_ext
17931                 .map(|s| s.stippled_rectangular_lines)]
17932             .into_iter()
17933             .flatten()
17934             .next()
17935             .unwrap_or(0)
17936                 != 0,
17937             stippled_smooth_lines: [features_ffi
17938                 .features_line_rasterization_ext
17939                 .map(|s| s.stippled_smooth_lines)]
17940             .into_iter()
17941             .flatten()
17942             .next()
17943             .unwrap_or(0)
17944                 != 0,
17945             storage_buffer16_bit_access: [
17946                 features_ffi
17947                     .features_vulkan11
17948                     .map(|s| s.storage_buffer16_bit_access),
17949                 features_ffi
17950                     .features_16bit_storage
17951                     .map(|s| s.storage_buffer16_bit_access),
17952             ]
17953             .into_iter()
17954             .flatten()
17955             .next()
17956             .unwrap_or(0)
17957                 != 0,
17958             storage_buffer8_bit_access: [
17959                 features_ffi
17960                     .features_vulkan12
17961                     .map(|s| s.storage_buffer8_bit_access),
17962                 features_ffi
17963                     .features_8bit_storage
17964                     .map(|s| s.storage_buffer8_bit_access),
17965             ]
17966             .into_iter()
17967             .flatten()
17968             .next()
17969             .unwrap_or(0)
17970                 != 0,
17971             storage_input_output16: [
17972                 features_ffi
17973                     .features_vulkan11
17974                     .map(|s| s.storage_input_output16),
17975                 features_ffi
17976                     .features_16bit_storage
17977                     .map(|s| s.storage_input_output16),
17978             ]
17979             .into_iter()
17980             .flatten()
17981             .next()
17982             .unwrap_or(0)
17983                 != 0,
17984             storage_push_constant16: [
17985                 features_ffi
17986                     .features_vulkan11
17987                     .map(|s| s.storage_push_constant16),
17988                 features_ffi
17989                     .features_16bit_storage
17990                     .map(|s| s.storage_push_constant16),
17991             ]
17992             .into_iter()
17993             .flatten()
17994             .next()
17995             .unwrap_or(0)
17996                 != 0,
17997             storage_push_constant8: [
17998                 features_ffi
17999                     .features_vulkan12
18000                     .map(|s| s.storage_push_constant8),
18001                 features_ffi
18002                     .features_8bit_storage
18003                     .map(|s| s.storage_push_constant8),
18004             ]
18005             .into_iter()
18006             .flatten()
18007             .next()
18008             .unwrap_or(0)
18009                 != 0,
18010             subgroup_broadcast_dynamic_id: [features_ffi
18011                 .features_vulkan12
18012                 .map(|s| s.subgroup_broadcast_dynamic_id)]
18013             .into_iter()
18014             .flatten()
18015             .next()
18016             .unwrap_or(0)
18017                 != 0,
18018             subgroup_size_control: [
18019                 features_ffi
18020                     .features_vulkan13
18021                     .map(|s| s.subgroup_size_control),
18022                 features_ffi
18023                     .features_subgroup_size_control
18024                     .map(|s| s.subgroup_size_control),
18025             ]
18026             .into_iter()
18027             .flatten()
18028             .next()
18029             .unwrap_or(0)
18030                 != 0,
18031             subpass_merge_feedback: [features_ffi
18032                 .features_subpass_merge_feedback_ext
18033                 .map(|s| s.subpass_merge_feedback)]
18034             .into_iter()
18035             .flatten()
18036             .next()
18037             .unwrap_or(0)
18038                 != 0,
18039             subpass_shading: [features_ffi
18040                 .features_subpass_shading_huawei
18041                 .map(|s| s.subpass_shading)]
18042             .into_iter()
18043             .flatten()
18044             .next()
18045             .unwrap_or(0)
18046                 != 0,
18047             supersample_fragment_shading_rates: [features_ffi
18048                 .features_fragment_shading_rate_enums_nv
18049                 .map(|s| s.supersample_fragment_shading_rates)]
18050             .into_iter()
18051             .flatten()
18052             .next()
18053             .unwrap_or(0)
18054                 != 0,
18055             swapchain_maintenance1: [features_ffi
18056                 .features_swapchain_maintenance1_ext
18057                 .map(|s| s.swapchain_maintenance1)]
18058             .into_iter()
18059             .flatten()
18060             .next()
18061             .unwrap_or(0)
18062                 != 0,
18063             synchronization2: [
18064                 features_ffi.features_vulkan13.map(|s| s.synchronization2),
18065                 features_ffi
18066                     .features_synchronization2
18067                     .map(|s| s.synchronization2),
18068             ]
18069             .into_iter()
18070             .flatten()
18071             .next()
18072             .unwrap_or(0)
18073                 != 0,
18074             task_shader: [
18075                 features_ffi.features_mesh_shader_ext.map(|s| s.task_shader),
18076                 features_ffi.features_mesh_shader_nv.map(|s| s.task_shader),
18077             ]
18078             .into_iter()
18079             .flatten()
18080             .next()
18081             .unwrap_or(0)
18082                 != 0,
18083             tessellation_isolines: [features_ffi
18084                 .features_portability_subset_khr
18085                 .map(|s| s.tessellation_isolines)]
18086             .into_iter()
18087             .flatten()
18088             .next()
18089             .unwrap_or(0)
18090                 != 0,
18091             tessellation_point_mode: [features_ffi
18092                 .features_portability_subset_khr
18093                 .map(|s| s.tessellation_point_mode)]
18094             .into_iter()
18095             .flatten()
18096             .next()
18097             .unwrap_or(0)
18098                 != 0,
18099             tessellation_shader: [features_ffi.features_vulkan10.features.tessellation_shader]
18100                 .into_iter()
18101                 .next()
18102                 .unwrap_or(0)
18103                 != 0,
18104             texel_buffer_alignment: [features_ffi
18105                 .features_texel_buffer_alignment_ext
18106                 .map(|s| s.texel_buffer_alignment)]
18107             .into_iter()
18108             .flatten()
18109             .next()
18110             .unwrap_or(0)
18111                 != 0,
18112             texture_block_match: [features_ffi
18113                 .features_image_processing_qcom
18114                 .map(|s| s.texture_block_match)]
18115             .into_iter()
18116             .flatten()
18117             .next()
18118             .unwrap_or(0)
18119                 != 0,
18120             texture_box_filter: [features_ffi
18121                 .features_image_processing_qcom
18122                 .map(|s| s.texture_box_filter)]
18123             .into_iter()
18124             .flatten()
18125             .next()
18126             .unwrap_or(0)
18127                 != 0,
18128             texture_compression_astc_hdr: [
18129                 features_ffi
18130                     .features_vulkan13
18131                     .map(|s| s.texture_compression_astc_hdr),
18132                 features_ffi
18133                     .features_texture_compression_astchdr
18134                     .map(|s| s.texture_compression_astc_hdr),
18135             ]
18136             .into_iter()
18137             .flatten()
18138             .next()
18139             .unwrap_or(0)
18140                 != 0,
18141             texture_compression_astc_ldr: [features_ffi
18142                 .features_vulkan10
18143                 .features
18144                 .texture_compression_astc_ldr]
18145             .into_iter()
18146             .next()
18147             .unwrap_or(0)
18148                 != 0,
18149             texture_compression_bc: [features_ffi
18150                 .features_vulkan10
18151                 .features
18152                 .texture_compression_bc]
18153             .into_iter()
18154             .next()
18155             .unwrap_or(0)
18156                 != 0,
18157             texture_compression_etc2: [features_ffi
18158                 .features_vulkan10
18159                 .features
18160                 .texture_compression_etc2]
18161             .into_iter()
18162             .next()
18163             .unwrap_or(0)
18164                 != 0,
18165             texture_sample_weighted: [features_ffi
18166                 .features_image_processing_qcom
18167                 .map(|s| s.texture_sample_weighted)]
18168             .into_iter()
18169             .flatten()
18170             .next()
18171             .unwrap_or(0)
18172                 != 0,
18173             tile_properties: [features_ffi
18174                 .features_tile_properties_qcom
18175                 .map(|s| s.tile_properties)]
18176             .into_iter()
18177             .flatten()
18178             .next()
18179             .unwrap_or(0)
18180                 != 0,
18181             timeline_semaphore: [
18182                 features_ffi.features_vulkan12.map(|s| s.timeline_semaphore),
18183                 features_ffi
18184                     .features_timeline_semaphore
18185                     .map(|s| s.timeline_semaphore),
18186             ]
18187             .into_iter()
18188             .flatten()
18189             .next()
18190             .unwrap_or(0)
18191                 != 0,
18192             transform_feedback: [features_ffi
18193                 .features_transform_feedback_ext
18194                 .map(|s| s.transform_feedback)]
18195             .into_iter()
18196             .flatten()
18197             .next()
18198             .unwrap_or(0)
18199                 != 0,
18200             transform_feedback_preserves_provoking_vertex: [features_ffi
18201                 .features_provoking_vertex_ext
18202                 .map(|s| s.transform_feedback_preserves_provoking_vertex)]
18203             .into_iter()
18204             .flatten()
18205             .next()
18206             .unwrap_or(0)
18207                 != 0,
18208             triangle_fans: [features_ffi
18209                 .features_portability_subset_khr
18210                 .map(|s| s.triangle_fans)]
18211             .into_iter()
18212             .flatten()
18213             .next()
18214             .unwrap_or(0)
18215                 != 0,
18216             uniform_and_storage_buffer16_bit_access: [
18217                 features_ffi
18218                     .features_vulkan11
18219                     .map(|s| s.uniform_and_storage_buffer16_bit_access),
18220                 features_ffi
18221                     .features_16bit_storage
18222                     .map(|s| s.uniform_and_storage_buffer16_bit_access),
18223             ]
18224             .into_iter()
18225             .flatten()
18226             .next()
18227             .unwrap_or(0)
18228                 != 0,
18229             uniform_and_storage_buffer8_bit_access: [
18230                 features_ffi
18231                     .features_vulkan12
18232                     .map(|s| s.uniform_and_storage_buffer8_bit_access),
18233                 features_ffi
18234                     .features_8bit_storage
18235                     .map(|s| s.uniform_and_storage_buffer8_bit_access),
18236             ]
18237             .into_iter()
18238             .flatten()
18239             .next()
18240             .unwrap_or(0)
18241                 != 0,
18242             uniform_buffer_standard_layout: [
18243                 features_ffi
18244                     .features_vulkan12
18245                     .map(|s| s.uniform_buffer_standard_layout),
18246                 features_ffi
18247                     .features_uniform_buffer_standard_layout
18248                     .map(|s| s.uniform_buffer_standard_layout),
18249             ]
18250             .into_iter()
18251             .flatten()
18252             .next()
18253             .unwrap_or(0)
18254                 != 0,
18255             variable_multisample_rate: [features_ffi
18256                 .features_vulkan10
18257                 .features
18258                 .variable_multisample_rate]
18259             .into_iter()
18260             .next()
18261             .unwrap_or(0)
18262                 != 0,
18263             variable_pointers: [
18264                 features_ffi.features_vulkan11.map(|s| s.variable_pointers),
18265                 features_ffi
18266                     .features_variable_pointers
18267                     .map(|s| s.variable_pointers),
18268             ]
18269             .into_iter()
18270             .flatten()
18271             .next()
18272             .unwrap_or(0)
18273                 != 0,
18274             variable_pointers_storage_buffer: [
18275                 features_ffi
18276                     .features_vulkan11
18277                     .map(|s| s.variable_pointers_storage_buffer),
18278                 features_ffi
18279                     .features_variable_pointers
18280                     .map(|s| s.variable_pointers_storage_buffer),
18281             ]
18282             .into_iter()
18283             .flatten()
18284             .next()
18285             .unwrap_or(0)
18286                 != 0,
18287             vertex_attribute_access_beyond_stride: [features_ffi
18288                 .features_portability_subset_khr
18289                 .map(|s| s.vertex_attribute_access_beyond_stride)]
18290             .into_iter()
18291             .flatten()
18292             .next()
18293             .unwrap_or(0)
18294                 != 0,
18295             vertex_attribute_instance_rate_divisor: [features_ffi
18296                 .features_vertex_attribute_divisor_ext
18297                 .map(|s| s.vertex_attribute_instance_rate_divisor)]
18298             .into_iter()
18299             .flatten()
18300             .next()
18301             .unwrap_or(0)
18302                 != 0,
18303             vertex_attribute_instance_rate_zero_divisor: [features_ffi
18304                 .features_vertex_attribute_divisor_ext
18305                 .map(|s| s.vertex_attribute_instance_rate_zero_divisor)]
18306             .into_iter()
18307             .flatten()
18308             .next()
18309             .unwrap_or(0)
18310                 != 0,
18311             vertex_input_dynamic_state: [features_ffi
18312                 .features_vertex_input_dynamic_state_ext
18313                 .map(|s| s.vertex_input_dynamic_state)]
18314             .into_iter()
18315             .flatten()
18316             .next()
18317             .unwrap_or(0)
18318                 != 0,
18319             vertex_pipeline_stores_and_atomics: [features_ffi
18320                 .features_vulkan10
18321                 .features
18322                 .vertex_pipeline_stores_and_atomics]
18323             .into_iter()
18324             .next()
18325             .unwrap_or(0)
18326                 != 0,
18327             vulkan_memory_model: [
18328                 features_ffi
18329                     .features_vulkan12
18330                     .map(|s| s.vulkan_memory_model),
18331                 features_ffi
18332                     .features_vulkan_memory_model
18333                     .map(|s| s.vulkan_memory_model),
18334             ]
18335             .into_iter()
18336             .flatten()
18337             .next()
18338             .unwrap_or(0)
18339                 != 0,
18340             vulkan_memory_model_availability_visibility_chains: [
18341                 features_ffi
18342                     .features_vulkan12
18343                     .map(|s| s.vulkan_memory_model_availability_visibility_chains),
18344                 features_ffi
18345                     .features_vulkan_memory_model
18346                     .map(|s| s.vulkan_memory_model_availability_visibility_chains),
18347             ]
18348             .into_iter()
18349             .flatten()
18350             .next()
18351             .unwrap_or(0)
18352                 != 0,
18353             vulkan_memory_model_device_scope: [
18354                 features_ffi
18355                     .features_vulkan12
18356                     .map(|s| s.vulkan_memory_model_device_scope),
18357                 features_ffi
18358                     .features_vulkan_memory_model
18359                     .map(|s| s.vulkan_memory_model_device_scope),
18360             ]
18361             .into_iter()
18362             .flatten()
18363             .next()
18364             .unwrap_or(0)
18365                 != 0,
18366             wide_lines: [features_ffi.features_vulkan10.features.wide_lines]
18367                 .into_iter()
18368                 .next()
18369                 .unwrap_or(0)
18370                 != 0,
18371             workgroup_memory_explicit_layout: [features_ffi
18372                 .features_workgroup_memory_explicit_layout_khr
18373                 .map(|s| s.workgroup_memory_explicit_layout)]
18374             .into_iter()
18375             .flatten()
18376             .next()
18377             .unwrap_or(0)
18378                 != 0,
18379             workgroup_memory_explicit_layout16_bit_access: [features_ffi
18380                 .features_workgroup_memory_explicit_layout_khr
18381                 .map(|s| s.workgroup_memory_explicit_layout16_bit_access)]
18382             .into_iter()
18383             .flatten()
18384             .next()
18385             .unwrap_or(0)
18386                 != 0,
18387             workgroup_memory_explicit_layout8_bit_access: [features_ffi
18388                 .features_workgroup_memory_explicit_layout_khr
18389                 .map(|s| s.workgroup_memory_explicit_layout8_bit_access)]
18390             .into_iter()
18391             .flatten()
18392             .next()
18393             .unwrap_or(0)
18394                 != 0,
18395             workgroup_memory_explicit_layout_scalar_block_layout: [features_ffi
18396                 .features_workgroup_memory_explicit_layout_khr
18397                 .map(|s| s.workgroup_memory_explicit_layout_scalar_block_layout)]
18398             .into_iter()
18399             .flatten()
18400             .next()
18401             .unwrap_or(0)
18402                 != 0,
18403             ycbcr2plane444_formats: [features_ffi
18404                 .features_ycbcr2_plane444_formats_ext
18405                 .map(|s| s.ycbcr2plane444_formats)]
18406             .into_iter()
18407             .flatten()
18408             .next()
18409             .unwrap_or(0)
18410                 != 0,
18411             ycbcr_image_arrays: [features_ffi
18412                 .features_ycbcr_image_arrays_ext
18413                 .map(|s| s.ycbcr_image_arrays)]
18414             .into_iter()
18415             .flatten()
18416             .next()
18417             .unwrap_or(0)
18418                 != 0,
18419             _ne: crate::NonExhaustive(()),
18420         }
18421     }
18422 }
18423 impl IntoIterator for Features {
18424     type Item = (&'static str, bool);
18425     type IntoIter = std::array::IntoIter<Self::Item, 363usize>;
18426     #[inline]
into_iter(self) -> Self::IntoIter18427     fn into_iter(self) -> Self::IntoIter {
18428         [
18429             ("accelerationStructure", self.acceleration_structure),
18430             (
18431                 "accelerationStructureCaptureReplay",
18432                 self.acceleration_structure_capture_replay,
18433             ),
18434             (
18435                 "accelerationStructureHostCommands",
18436                 self.acceleration_structure_host_commands,
18437             ),
18438             (
18439                 "accelerationStructureIndirectBuild",
18440                 self.acceleration_structure_indirect_build,
18441             ),
18442             (
18443                 "advancedBlendCoherentOperations",
18444                 self.advanced_blend_coherent_operations,
18445             ),
18446             ("alphaToOne", self.alpha_to_one),
18447             ("amigoProfiling", self.amigo_profiling),
18448             (
18449                 "attachmentFeedbackLoopLayout",
18450                 self.attachment_feedback_loop_layout,
18451             ),
18452             (
18453                 "attachmentFragmentShadingRate",
18454                 self.attachment_fragment_shading_rate,
18455             ),
18456             ("borderColorSwizzle", self.border_color_swizzle),
18457             (
18458                 "borderColorSwizzleFromImage",
18459                 self.border_color_swizzle_from_image,
18460             ),
18461             ("bresenhamLines", self.bresenham_lines),
18462             ("bufferDeviceAddress", self.buffer_device_address),
18463             (
18464                 "bufferDeviceAddressCaptureReplay",
18465                 self.buffer_device_address_capture_replay,
18466             ),
18467             (
18468                 "bufferDeviceAddressMultiDevice",
18469                 self.buffer_device_address_multi_device,
18470             ),
18471             ("colorWriteEnable", self.color_write_enable),
18472             (
18473                 "computeDerivativeGroupLinear",
18474                 self.compute_derivative_group_linear,
18475             ),
18476             (
18477                 "computeDerivativeGroupQuads",
18478                 self.compute_derivative_group_quads,
18479             ),
18480             ("computeFullSubgroups", self.compute_full_subgroups),
18481             ("conditionalRendering", self.conditional_rendering),
18482             (
18483                 "constantAlphaColorBlendFactors",
18484                 self.constant_alpha_color_blend_factors,
18485             ),
18486             ("cooperativeMatrix", self.cooperative_matrix),
18487             (
18488                 "cooperativeMatrixRobustBufferAccess",
18489                 self.cooperative_matrix_robust_buffer_access,
18490             ),
18491             ("cornerSampledImage", self.corner_sampled_image),
18492             ("coverageReductionMode", self.coverage_reduction_mode),
18493             (
18494                 "customBorderColorWithoutFormat",
18495                 self.custom_border_color_without_format,
18496             ),
18497             ("customBorderColors", self.custom_border_colors),
18498             ("decodeModeSharedExponent", self.decode_mode_shared_exponent),
18499             (
18500                 "dedicatedAllocationImageAliasing",
18501                 self.dedicated_allocation_image_aliasing,
18502             ),
18503             ("depthBiasClamp", self.depth_bias_clamp),
18504             ("depthBounds", self.depth_bounds),
18505             ("depthClamp", self.depth_clamp),
18506             ("depthClampZeroOne", self.depth_clamp_zero_one),
18507             ("depthClipControl", self.depth_clip_control),
18508             ("depthClipEnable", self.depth_clip_enable),
18509             (
18510                 "descriptorBindingAccelerationStructureUpdateAfterBind",
18511                 self.descriptor_binding_acceleration_structure_update_after_bind,
18512             ),
18513             (
18514                 "descriptorBindingInlineUniformBlockUpdateAfterBind",
18515                 self.descriptor_binding_inline_uniform_block_update_after_bind,
18516             ),
18517             (
18518                 "descriptorBindingPartiallyBound",
18519                 self.descriptor_binding_partially_bound,
18520             ),
18521             (
18522                 "descriptorBindingSampledImageUpdateAfterBind",
18523                 self.descriptor_binding_sampled_image_update_after_bind,
18524             ),
18525             (
18526                 "descriptorBindingStorageBufferUpdateAfterBind",
18527                 self.descriptor_binding_storage_buffer_update_after_bind,
18528             ),
18529             (
18530                 "descriptorBindingStorageImageUpdateAfterBind",
18531                 self.descriptor_binding_storage_image_update_after_bind,
18532             ),
18533             (
18534                 "descriptorBindingStorageTexelBufferUpdateAfterBind",
18535                 self.descriptor_binding_storage_texel_buffer_update_after_bind,
18536             ),
18537             (
18538                 "descriptorBindingUniformBufferUpdateAfterBind",
18539                 self.descriptor_binding_uniform_buffer_update_after_bind,
18540             ),
18541             (
18542                 "descriptorBindingUniformTexelBufferUpdateAfterBind",
18543                 self.descriptor_binding_uniform_texel_buffer_update_after_bind,
18544             ),
18545             (
18546                 "descriptorBindingUpdateUnusedWhilePending",
18547                 self.descriptor_binding_update_unused_while_pending,
18548             ),
18549             (
18550                 "descriptorBindingVariableDescriptorCount",
18551                 self.descriptor_binding_variable_descriptor_count,
18552             ),
18553             ("descriptorBuffer", self.descriptor_buffer),
18554             (
18555                 "descriptorBufferCaptureReplay",
18556                 self.descriptor_buffer_capture_replay,
18557             ),
18558             (
18559                 "descriptorBufferImageLayoutIgnored",
18560                 self.descriptor_buffer_image_layout_ignored,
18561             ),
18562             (
18563                 "descriptorBufferPushDescriptors",
18564                 self.descriptor_buffer_push_descriptors,
18565             ),
18566             ("descriptorIndexing", self.descriptor_indexing),
18567             ("descriptorSetHostMapping", self.descriptor_set_host_mapping),
18568             ("deviceCoherentMemory", self.device_coherent_memory),
18569             ("deviceFault", self.device_fault),
18570             ("deviceFaultVendorBinary", self.device_fault_vendor_binary),
18571             ("deviceGeneratedCommands", self.device_generated_commands),
18572             ("deviceMemoryReport", self.device_memory_report),
18573             ("diagnosticsConfig", self.diagnostics_config),
18574             ("drawIndirectCount", self.draw_indirect_count),
18575             (
18576                 "drawIndirectFirstInstance",
18577                 self.draw_indirect_first_instance,
18578             ),
18579             ("dualSrcBlend", self.dual_src_blend),
18580             ("dynamicRendering", self.dynamic_rendering),
18581             ("events", self.events),
18582             ("exclusiveScissor", self.exclusive_scissor),
18583             ("extendedDynamicState", self.extended_dynamic_state),
18584             ("extendedDynamicState2", self.extended_dynamic_state2),
18585             (
18586                 "extendedDynamicState2LogicOp",
18587                 self.extended_dynamic_state2_logic_op,
18588             ),
18589             (
18590                 "extendedDynamicState2PatchControlPoints",
18591                 self.extended_dynamic_state2_patch_control_points,
18592             ),
18593             (
18594                 "extendedDynamicState3AlphaToCoverageEnable",
18595                 self.extended_dynamic_state3_alpha_to_coverage_enable,
18596             ),
18597             (
18598                 "extendedDynamicState3AlphaToOneEnable",
18599                 self.extended_dynamic_state3_alpha_to_one_enable,
18600             ),
18601             (
18602                 "extendedDynamicState3ColorBlendAdvanced",
18603                 self.extended_dynamic_state3_color_blend_advanced,
18604             ),
18605             (
18606                 "extendedDynamicState3ColorBlendEnable",
18607                 self.extended_dynamic_state3_color_blend_enable,
18608             ),
18609             (
18610                 "extendedDynamicState3ColorBlendEquation",
18611                 self.extended_dynamic_state3_color_blend_equation,
18612             ),
18613             (
18614                 "extendedDynamicState3ColorWriteMask",
18615                 self.extended_dynamic_state3_color_write_mask,
18616             ),
18617             (
18618                 "extendedDynamicState3ConservativeRasterizationMode",
18619                 self.extended_dynamic_state3_conservative_rasterization_mode,
18620             ),
18621             (
18622                 "extendedDynamicState3CoverageModulationMode",
18623                 self.extended_dynamic_state3_coverage_modulation_mode,
18624             ),
18625             (
18626                 "extendedDynamicState3CoverageModulationTable",
18627                 self.extended_dynamic_state3_coverage_modulation_table,
18628             ),
18629             (
18630                 "extendedDynamicState3CoverageModulationTableEnable",
18631                 self.extended_dynamic_state3_coverage_modulation_table_enable,
18632             ),
18633             (
18634                 "extendedDynamicState3CoverageReductionMode",
18635                 self.extended_dynamic_state3_coverage_reduction_mode,
18636             ),
18637             (
18638                 "extendedDynamicState3CoverageToColorEnable",
18639                 self.extended_dynamic_state3_coverage_to_color_enable,
18640             ),
18641             (
18642                 "extendedDynamicState3CoverageToColorLocation",
18643                 self.extended_dynamic_state3_coverage_to_color_location,
18644             ),
18645             (
18646                 "extendedDynamicState3DepthClampEnable",
18647                 self.extended_dynamic_state3_depth_clamp_enable,
18648             ),
18649             (
18650                 "extendedDynamicState3DepthClipEnable",
18651                 self.extended_dynamic_state3_depth_clip_enable,
18652             ),
18653             (
18654                 "extendedDynamicState3DepthClipNegativeOneToOne",
18655                 self.extended_dynamic_state3_depth_clip_negative_one_to_one,
18656             ),
18657             (
18658                 "extendedDynamicState3ExtraPrimitiveOverestimationSize",
18659                 self.extended_dynamic_state3_extra_primitive_overestimation_size,
18660             ),
18661             (
18662                 "extendedDynamicState3LineRasterizationMode",
18663                 self.extended_dynamic_state3_line_rasterization_mode,
18664             ),
18665             (
18666                 "extendedDynamicState3LineStippleEnable",
18667                 self.extended_dynamic_state3_line_stipple_enable,
18668             ),
18669             (
18670                 "extendedDynamicState3LogicOpEnable",
18671                 self.extended_dynamic_state3_logic_op_enable,
18672             ),
18673             (
18674                 "extendedDynamicState3PolygonMode",
18675                 self.extended_dynamic_state3_polygon_mode,
18676             ),
18677             (
18678                 "extendedDynamicState3ProvokingVertexMode",
18679                 self.extended_dynamic_state3_provoking_vertex_mode,
18680             ),
18681             (
18682                 "extendedDynamicState3RasterizationSamples",
18683                 self.extended_dynamic_state3_rasterization_samples,
18684             ),
18685             (
18686                 "extendedDynamicState3RasterizationStream",
18687                 self.extended_dynamic_state3_rasterization_stream,
18688             ),
18689             (
18690                 "extendedDynamicState3RepresentativeFragmentTestEnable",
18691                 self.extended_dynamic_state3_representative_fragment_test_enable,
18692             ),
18693             (
18694                 "extendedDynamicState3SampleLocationsEnable",
18695                 self.extended_dynamic_state3_sample_locations_enable,
18696             ),
18697             (
18698                 "extendedDynamicState3SampleMask",
18699                 self.extended_dynamic_state3_sample_mask,
18700             ),
18701             (
18702                 "extendedDynamicState3ShadingRateImageEnable",
18703                 self.extended_dynamic_state3_shading_rate_image_enable,
18704             ),
18705             (
18706                 "extendedDynamicState3TessellationDomainOrigin",
18707                 self.extended_dynamic_state3_tessellation_domain_origin,
18708             ),
18709             (
18710                 "extendedDynamicState3ViewportSwizzle",
18711                 self.extended_dynamic_state3_viewport_swizzle,
18712             ),
18713             (
18714                 "extendedDynamicState3ViewportWScalingEnable",
18715                 self.extended_dynamic_state3_viewport_w_scaling_enable,
18716             ),
18717             ("externalMemoryRDMA", self.external_memory_rdma),
18718             ("fillModeNonSolid", self.fill_mode_non_solid),
18719             ("formatA4B4G4R4", self.format_a4b4g4r4),
18720             ("formatA4R4G4B4", self.format_a4r4g4b4),
18721             (
18722                 "formatRgba10x6WithoutYCbCrSampler",
18723                 self.format_rgba10x6_without_y_cb_cr_sampler,
18724             ),
18725             ("fragmentDensityMap", self.fragment_density_map),
18726             (
18727                 "fragmentDensityMapDeferred",
18728                 self.fragment_density_map_deferred,
18729             ),
18730             (
18731                 "fragmentDensityMapDynamic",
18732                 self.fragment_density_map_dynamic,
18733             ),
18734             (
18735                 "fragmentDensityMapNonSubsampledImages",
18736                 self.fragment_density_map_non_subsampled_images,
18737             ),
18738             ("fragmentDensityMapOffset", self.fragment_density_map_offset),
18739             (
18740                 "fragmentShaderBarycentric",
18741                 self.fragment_shader_barycentric,
18742             ),
18743             (
18744                 "fragmentShaderPixelInterlock",
18745                 self.fragment_shader_pixel_interlock,
18746             ),
18747             (
18748                 "fragmentShaderSampleInterlock",
18749                 self.fragment_shader_sample_interlock,
18750             ),
18751             (
18752                 "fragmentShaderShadingRateInterlock",
18753                 self.fragment_shader_shading_rate_interlock,
18754             ),
18755             ("fragmentShadingRateEnums", self.fragment_shading_rate_enums),
18756             ("fragmentStoresAndAtomics", self.fragment_stores_and_atomics),
18757             ("fullDrawIndexUint32", self.full_draw_index_uint32),
18758             ("geometryShader", self.geometry_shader),
18759             ("geometryStreams", self.geometry_streams),
18760             ("globalPriorityQuery", self.global_priority_query),
18761             ("graphicsPipelineLibrary", self.graphics_pipeline_library),
18762             ("hostQueryReset", self.host_query_reset),
18763             ("image2DViewOf3D", self.image2_d_view_of3_d),
18764             ("imageCompressionControl", self.image_compression_control),
18765             (
18766                 "imageCompressionControlSwapchain",
18767                 self.image_compression_control_swapchain,
18768             ),
18769             ("imageCubeArray", self.image_cube_array),
18770             ("imageFootprint", self.image_footprint),
18771             ("imageView2DOn3DImage", self.image_view2_d_on3_d_image),
18772             (
18773                 "imageViewFormatReinterpretation",
18774                 self.image_view_format_reinterpretation,
18775             ),
18776             ("imageViewFormatSwizzle", self.image_view_format_swizzle),
18777             ("imagelessFramebuffer", self.imageless_framebuffer),
18778             ("independentBlend", self.independent_blend),
18779             ("indexTypeUint8", self.index_type_uint8),
18780             ("indirectCopy", self.indirect_copy),
18781             (
18782                 "inheritedConditionalRendering",
18783                 self.inherited_conditional_rendering,
18784             ),
18785             ("inheritedQueries", self.inherited_queries),
18786             (
18787                 "inheritedViewportScissor2D",
18788                 self.inherited_viewport_scissor2_d,
18789             ),
18790             ("inlineUniformBlock", self.inline_uniform_block),
18791             ("invocationMask", self.invocation_mask),
18792             ("largePoints", self.large_points),
18793             ("legacyDithering", self.legacy_dithering),
18794             ("linearColorAttachment", self.linear_color_attachment),
18795             ("logicOp", self.logic_op),
18796             ("maintenance4", self.maintenance4),
18797             ("memoryDecompression", self.memory_decompression),
18798             ("memoryPriority", self.memory_priority),
18799             ("meshShader", self.mesh_shader),
18800             ("meshShaderQueries", self.mesh_shader_queries),
18801             ("micromap", self.micromap),
18802             ("micromapCaptureReplay", self.micromap_capture_replay),
18803             ("micromapHostCommands", self.micromap_host_commands),
18804             ("minLod", self.min_lod),
18805             ("multiDraw", self.multi_draw),
18806             ("multiDrawIndirect", self.multi_draw_indirect),
18807             ("multiViewport", self.multi_viewport),
18808             ("multisampleArrayImage", self.multisample_array_image),
18809             (
18810                 "multisampledRenderToSingleSampled",
18811                 self.multisampled_render_to_single_sampled,
18812             ),
18813             ("multiview", self.multiview),
18814             ("multiviewGeometryShader", self.multiview_geometry_shader),
18815             ("multiviewMeshShader", self.multiview_mesh_shader),
18816             (
18817                 "multiviewPerViewViewports",
18818                 self.multiview_per_view_viewports,
18819             ),
18820             (
18821                 "multiviewTessellationShader",
18822                 self.multiview_tessellation_shader,
18823             ),
18824             (
18825                 "mutableComparisonSamplers",
18826                 self.mutable_comparison_samplers,
18827             ),
18828             ("mutableDescriptorType", self.mutable_descriptor_type),
18829             (
18830                 "noInvocationFragmentShadingRates",
18831                 self.no_invocation_fragment_shading_rates,
18832             ),
18833             ("nonSeamlessCubeMap", self.non_seamless_cube_map),
18834             ("nullDescriptor", self.null_descriptor),
18835             ("occlusionQueryPrecise", self.occlusion_query_precise),
18836             ("opticalFlow", self.optical_flow),
18837             (
18838                 "pageableDeviceLocalMemory",
18839                 self.pageable_device_local_memory,
18840             ),
18841             (
18842                 "performanceCounterMultipleQueryPools",
18843                 self.performance_counter_multiple_query_pools,
18844             ),
18845             (
18846                 "performanceCounterQueryPools",
18847                 self.performance_counter_query_pools,
18848             ),
18849             (
18850                 "pipelineCreationCacheControl",
18851                 self.pipeline_creation_cache_control,
18852             ),
18853             ("pipelineExecutableInfo", self.pipeline_executable_info),
18854             (
18855                 "pipelineFragmentShadingRate",
18856                 self.pipeline_fragment_shading_rate,
18857             ),
18858             (
18859                 "pipelinePropertiesIdentifier",
18860                 self.pipeline_properties_identifier,
18861             ),
18862             ("pipelineProtectedAccess", self.pipeline_protected_access),
18863             ("pipelineRobustness", self.pipeline_robustness),
18864             ("pipelineStatisticsQuery", self.pipeline_statistics_query),
18865             ("pointPolygons", self.point_polygons),
18866             ("presentBarrier", self.present_barrier),
18867             ("presentId", self.present_id),
18868             ("presentWait", self.present_wait),
18869             (
18870                 "primitiveFragmentShadingRate",
18871                 self.primitive_fragment_shading_rate,
18872             ),
18873             (
18874                 "primitiveFragmentShadingRateMeshShader",
18875                 self.primitive_fragment_shading_rate_mesh_shader,
18876             ),
18877             (
18878                 "primitiveTopologyListRestart",
18879                 self.primitive_topology_list_restart,
18880             ),
18881             (
18882                 "primitiveTopologyPatchListRestart",
18883                 self.primitive_topology_patch_list_restart,
18884             ),
18885             ("primitivesGeneratedQuery", self.primitives_generated_query),
18886             (
18887                 "primitivesGeneratedQueryWithNonZeroStreams",
18888                 self.primitives_generated_query_with_non_zero_streams,
18889             ),
18890             (
18891                 "primitivesGeneratedQueryWithRasterizerDiscard",
18892                 self.primitives_generated_query_with_rasterizer_discard,
18893             ),
18894             ("privateData", self.private_data),
18895             ("protectedMemory", self.protected_memory),
18896             ("provokingVertexLast", self.provoking_vertex_last),
18897             (
18898                 "rasterizationOrderColorAttachmentAccess",
18899                 self.rasterization_order_color_attachment_access,
18900             ),
18901             (
18902                 "rasterizationOrderDepthAttachmentAccess",
18903                 self.rasterization_order_depth_attachment_access,
18904             ),
18905             (
18906                 "rasterizationOrderStencilAttachmentAccess",
18907                 self.rasterization_order_stencil_attachment_access,
18908             ),
18909             ("rayQuery", self.ray_query),
18910             (
18911                 "rayTracingInvocationReorder",
18912                 self.ray_tracing_invocation_reorder,
18913             ),
18914             ("rayTracingMaintenance1", self.ray_tracing_maintenance1),
18915             ("rayTracingMotionBlur", self.ray_tracing_motion_blur),
18916             (
18917                 "rayTracingMotionBlurPipelineTraceRaysIndirect",
18918                 self.ray_tracing_motion_blur_pipeline_trace_rays_indirect,
18919             ),
18920             ("rayTracingPipeline", self.ray_tracing_pipeline),
18921             (
18922                 "rayTracingPipelineShaderGroupHandleCaptureReplay",
18923                 self.ray_tracing_pipeline_shader_group_handle_capture_replay,
18924             ),
18925             (
18926                 "rayTracingPipelineShaderGroupHandleCaptureReplayMixed",
18927                 self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed,
18928             ),
18929             (
18930                 "rayTracingPipelineTraceRaysIndirect",
18931                 self.ray_tracing_pipeline_trace_rays_indirect,
18932             ),
18933             (
18934                 "rayTracingPipelineTraceRaysIndirect2",
18935                 self.ray_tracing_pipeline_trace_rays_indirect2,
18936             ),
18937             (
18938                 "rayTraversalPrimitiveCulling",
18939                 self.ray_traversal_primitive_culling,
18940             ),
18941             ("rectangularLines", self.rectangular_lines),
18942             ("reportAddressBinding", self.report_address_binding),
18943             (
18944                 "representativeFragmentTest",
18945                 self.representative_fragment_test,
18946             ),
18947             ("robustBufferAccess", self.robust_buffer_access),
18948             ("robustBufferAccess2", self.robust_buffer_access2),
18949             ("robustImageAccess", self.robust_image_access),
18950             ("robustImageAccess2", self.robust_image_access2),
18951             ("runtimeDescriptorArray", self.runtime_descriptor_array),
18952             ("sampleRateShading", self.sample_rate_shading),
18953             ("sampler2DViewOf3D", self.sampler2_d_view_of3_d),
18954             ("samplerAnisotropy", self.sampler_anisotropy),
18955             ("samplerFilterMinmax", self.sampler_filter_minmax),
18956             ("samplerMipLodBias", self.sampler_mip_lod_bias),
18957             (
18958                 "samplerMirrorClampToEdge",
18959                 self.sampler_mirror_clamp_to_edge,
18960             ),
18961             ("samplerYcbcrConversion", self.sampler_ycbcr_conversion),
18962             ("scalarBlockLayout", self.scalar_block_layout),
18963             (
18964                 "separateDepthStencilLayouts",
18965                 self.separate_depth_stencil_layouts,
18966             ),
18967             ("separateStencilMaskRef", self.separate_stencil_mask_ref),
18968             (
18969                 "shaderBufferFloat16AtomicAdd",
18970                 self.shader_buffer_float16_atomic_add,
18971             ),
18972             (
18973                 "shaderBufferFloat16AtomicMinMax",
18974                 self.shader_buffer_float16_atomic_min_max,
18975             ),
18976             (
18977                 "shaderBufferFloat16Atomics",
18978                 self.shader_buffer_float16_atomics,
18979             ),
18980             (
18981                 "shaderBufferFloat32AtomicAdd",
18982                 self.shader_buffer_float32_atomic_add,
18983             ),
18984             (
18985                 "shaderBufferFloat32AtomicMinMax",
18986                 self.shader_buffer_float32_atomic_min_max,
18987             ),
18988             (
18989                 "shaderBufferFloat32Atomics",
18990                 self.shader_buffer_float32_atomics,
18991             ),
18992             (
18993                 "shaderBufferFloat64AtomicAdd",
18994                 self.shader_buffer_float64_atomic_add,
18995             ),
18996             (
18997                 "shaderBufferFloat64AtomicMinMax",
18998                 self.shader_buffer_float64_atomic_min_max,
18999             ),
19000             (
19001                 "shaderBufferFloat64Atomics",
19002                 self.shader_buffer_float64_atomics,
19003             ),
19004             ("shaderBufferInt64Atomics", self.shader_buffer_int64_atomics),
19005             ("shaderClipDistance", self.shader_clip_distance),
19006             ("shaderCoreBuiltins", self.shader_core_builtins),
19007             ("shaderCullDistance", self.shader_cull_distance),
19008             (
19009                 "shaderDemoteToHelperInvocation",
19010                 self.shader_demote_to_helper_invocation,
19011             ),
19012             ("shaderDeviceClock", self.shader_device_clock),
19013             ("shaderDrawParameters", self.shader_draw_parameters),
19014             (
19015                 "shaderEarlyAndLateFragmentTests",
19016                 self.shader_early_and_late_fragment_tests,
19017             ),
19018             ("shaderFloat16", self.shader_float16),
19019             ("shaderFloat64", self.shader_float64),
19020             (
19021                 "shaderImageFloat32AtomicAdd",
19022                 self.shader_image_float32_atomic_add,
19023             ),
19024             (
19025                 "shaderImageFloat32AtomicMinMax",
19026                 self.shader_image_float32_atomic_min_max,
19027             ),
19028             (
19029                 "shaderImageFloat32Atomics",
19030                 self.shader_image_float32_atomics,
19031             ),
19032             (
19033                 "shaderImageGatherExtended",
19034                 self.shader_image_gather_extended,
19035             ),
19036             ("shaderImageInt64Atomics", self.shader_image_int64_atomics),
19037             (
19038                 "shaderInputAttachmentArrayDynamicIndexing",
19039                 self.shader_input_attachment_array_dynamic_indexing,
19040             ),
19041             (
19042                 "shaderInputAttachmentArrayNonUniformIndexing",
19043                 self.shader_input_attachment_array_non_uniform_indexing,
19044             ),
19045             ("shaderInt16", self.shader_int16),
19046             ("shaderInt64", self.shader_int64),
19047             ("shaderInt8", self.shader_int8),
19048             ("shaderIntegerDotProduct", self.shader_integer_dot_product),
19049             ("shaderIntegerFunctions2", self.shader_integer_functions2),
19050             ("shaderModuleIdentifier", self.shader_module_identifier),
19051             ("shaderOutputLayer", self.shader_output_layer),
19052             (
19053                 "shaderOutputViewportIndex",
19054                 self.shader_output_viewport_index,
19055             ),
19056             ("shaderResourceMinLod", self.shader_resource_min_lod),
19057             ("shaderResourceResidency", self.shader_resource_residency),
19058             (
19059                 "shaderSampleRateInterpolationFunctions",
19060                 self.shader_sample_rate_interpolation_functions,
19061             ),
19062             (
19063                 "shaderSampledImageArrayDynamicIndexing",
19064                 self.shader_sampled_image_array_dynamic_indexing,
19065             ),
19066             (
19067                 "shaderSampledImageArrayNonUniformIndexing",
19068                 self.shader_sampled_image_array_non_uniform_indexing,
19069             ),
19070             (
19071                 "shaderSharedFloat16AtomicAdd",
19072                 self.shader_shared_float16_atomic_add,
19073             ),
19074             (
19075                 "shaderSharedFloat16AtomicMinMax",
19076                 self.shader_shared_float16_atomic_min_max,
19077             ),
19078             (
19079                 "shaderSharedFloat16Atomics",
19080                 self.shader_shared_float16_atomics,
19081             ),
19082             (
19083                 "shaderSharedFloat32AtomicAdd",
19084                 self.shader_shared_float32_atomic_add,
19085             ),
19086             (
19087                 "shaderSharedFloat32AtomicMinMax",
19088                 self.shader_shared_float32_atomic_min_max,
19089             ),
19090             (
19091                 "shaderSharedFloat32Atomics",
19092                 self.shader_shared_float32_atomics,
19093             ),
19094             (
19095                 "shaderSharedFloat64AtomicAdd",
19096                 self.shader_shared_float64_atomic_add,
19097             ),
19098             (
19099                 "shaderSharedFloat64AtomicMinMax",
19100                 self.shader_shared_float64_atomic_min_max,
19101             ),
19102             (
19103                 "shaderSharedFloat64Atomics",
19104                 self.shader_shared_float64_atomics,
19105             ),
19106             ("shaderSharedInt64Atomics", self.shader_shared_int64_atomics),
19107             ("shaderSMBuiltins", self.shader_sm_builtins),
19108             (
19109                 "shaderStorageBufferArrayDynamicIndexing",
19110                 self.shader_storage_buffer_array_dynamic_indexing,
19111             ),
19112             (
19113                 "shaderStorageBufferArrayNonUniformIndexing",
19114                 self.shader_storage_buffer_array_non_uniform_indexing,
19115             ),
19116             (
19117                 "shaderStorageImageArrayDynamicIndexing",
19118                 self.shader_storage_image_array_dynamic_indexing,
19119             ),
19120             (
19121                 "shaderStorageImageArrayNonUniformIndexing",
19122                 self.shader_storage_image_array_non_uniform_indexing,
19123             ),
19124             (
19125                 "shaderStorageImageExtendedFormats",
19126                 self.shader_storage_image_extended_formats,
19127             ),
19128             (
19129                 "shaderStorageImageMultisample",
19130                 self.shader_storage_image_multisample,
19131             ),
19132             (
19133                 "shaderStorageImageReadWithoutFormat",
19134                 self.shader_storage_image_read_without_format,
19135             ),
19136             (
19137                 "shaderStorageImageWriteWithoutFormat",
19138                 self.shader_storage_image_write_without_format,
19139             ),
19140             (
19141                 "shaderStorageTexelBufferArrayDynamicIndexing",
19142                 self.shader_storage_texel_buffer_array_dynamic_indexing,
19143             ),
19144             (
19145                 "shaderStorageTexelBufferArrayNonUniformIndexing",
19146                 self.shader_storage_texel_buffer_array_non_uniform_indexing,
19147             ),
19148             ("shaderSubgroupClock", self.shader_subgroup_clock),
19149             (
19150                 "shaderSubgroupExtendedTypes",
19151                 self.shader_subgroup_extended_types,
19152             ),
19153             (
19154                 "shaderSubgroupUniformControlFlow",
19155                 self.shader_subgroup_uniform_control_flow,
19156             ),
19157             (
19158                 "shaderTerminateInvocation",
19159                 self.shader_terminate_invocation,
19160             ),
19161             (
19162                 "shaderTessellationAndGeometryPointSize",
19163                 self.shader_tessellation_and_geometry_point_size,
19164             ),
19165             (
19166                 "shaderUniformBufferArrayDynamicIndexing",
19167                 self.shader_uniform_buffer_array_dynamic_indexing,
19168             ),
19169             (
19170                 "shaderUniformBufferArrayNonUniformIndexing",
19171                 self.shader_uniform_buffer_array_non_uniform_indexing,
19172             ),
19173             (
19174                 "shaderUniformTexelBufferArrayDynamicIndexing",
19175                 self.shader_uniform_texel_buffer_array_dynamic_indexing,
19176             ),
19177             (
19178                 "shaderUniformTexelBufferArrayNonUniformIndexing",
19179                 self.shader_uniform_texel_buffer_array_non_uniform_indexing,
19180             ),
19181             (
19182                 "shaderZeroInitializeWorkgroupMemory",
19183                 self.shader_zero_initialize_workgroup_memory,
19184             ),
19185             (
19186                 "shadingRateCoarseSampleOrder",
19187                 self.shading_rate_coarse_sample_order,
19188             ),
19189             ("shadingRateImage", self.shading_rate_image),
19190             ("smoothLines", self.smooth_lines),
19191             ("sparseBinding", self.sparse_binding),
19192             (
19193                 "sparseImageFloat32AtomicAdd",
19194                 self.sparse_image_float32_atomic_add,
19195             ),
19196             (
19197                 "sparseImageFloat32AtomicMinMax",
19198                 self.sparse_image_float32_atomic_min_max,
19199             ),
19200             (
19201                 "sparseImageFloat32Atomics",
19202                 self.sparse_image_float32_atomics,
19203             ),
19204             ("sparseImageInt64Atomics", self.sparse_image_int64_atomics),
19205             ("sparseResidency16Samples", self.sparse_residency16_samples),
19206             ("sparseResidency2Samples", self.sparse_residency2_samples),
19207             ("sparseResidency4Samples", self.sparse_residency4_samples),
19208             ("sparseResidency8Samples", self.sparse_residency8_samples),
19209             ("sparseResidencyAliased", self.sparse_residency_aliased),
19210             ("sparseResidencyBuffer", self.sparse_residency_buffer),
19211             ("sparseResidencyImage2D", self.sparse_residency_image2_d),
19212             ("sparseResidencyImage3D", self.sparse_residency_image3_d),
19213             ("stippledBresenhamLines", self.stippled_bresenham_lines),
19214             ("stippledRectangularLines", self.stippled_rectangular_lines),
19215             ("stippledSmoothLines", self.stippled_smooth_lines),
19216             ("storageBuffer16BitAccess", self.storage_buffer16_bit_access),
19217             ("storageBuffer8BitAccess", self.storage_buffer8_bit_access),
19218             ("storageInputOutput16", self.storage_input_output16),
19219             ("storagePushConstant16", self.storage_push_constant16),
19220             ("storagePushConstant8", self.storage_push_constant8),
19221             (
19222                 "subgroupBroadcastDynamicId",
19223                 self.subgroup_broadcast_dynamic_id,
19224             ),
19225             ("subgroupSizeControl", self.subgroup_size_control),
19226             ("subpassMergeFeedback", self.subpass_merge_feedback),
19227             ("subpassShading", self.subpass_shading),
19228             (
19229                 "supersampleFragmentShadingRates",
19230                 self.supersample_fragment_shading_rates,
19231             ),
19232             ("swapchainMaintenance1", self.swapchain_maintenance1),
19233             ("synchronization2", self.synchronization2),
19234             ("taskShader", self.task_shader),
19235             ("tessellationIsolines", self.tessellation_isolines),
19236             ("tessellationPointMode", self.tessellation_point_mode),
19237             ("tessellationShader", self.tessellation_shader),
19238             ("texelBufferAlignment", self.texel_buffer_alignment),
19239             ("textureBlockMatch", self.texture_block_match),
19240             ("textureBoxFilter", self.texture_box_filter),
19241             (
19242                 "textureCompressionASTC_HDR",
19243                 self.texture_compression_astc_hdr,
19244             ),
19245             (
19246                 "textureCompressionASTC_LDR",
19247                 self.texture_compression_astc_ldr,
19248             ),
19249             ("textureCompressionBC", self.texture_compression_bc),
19250             ("textureCompressionETC2", self.texture_compression_etc2),
19251             ("textureSampleWeighted", self.texture_sample_weighted),
19252             ("tileProperties", self.tile_properties),
19253             ("timelineSemaphore", self.timeline_semaphore),
19254             ("transformFeedback", self.transform_feedback),
19255             (
19256                 "transformFeedbackPreservesProvokingVertex",
19257                 self.transform_feedback_preserves_provoking_vertex,
19258             ),
19259             ("triangleFans", self.triangle_fans),
19260             (
19261                 "uniformAndStorageBuffer16BitAccess",
19262                 self.uniform_and_storage_buffer16_bit_access,
19263             ),
19264             (
19265                 "uniformAndStorageBuffer8BitAccess",
19266                 self.uniform_and_storage_buffer8_bit_access,
19267             ),
19268             (
19269                 "uniformBufferStandardLayout",
19270                 self.uniform_buffer_standard_layout,
19271             ),
19272             ("variableMultisampleRate", self.variable_multisample_rate),
19273             ("variablePointers", self.variable_pointers),
19274             (
19275                 "variablePointersStorageBuffer",
19276                 self.variable_pointers_storage_buffer,
19277             ),
19278             (
19279                 "vertexAttributeAccessBeyondStride",
19280                 self.vertex_attribute_access_beyond_stride,
19281             ),
19282             (
19283                 "vertexAttributeInstanceRateDivisor",
19284                 self.vertex_attribute_instance_rate_divisor,
19285             ),
19286             (
19287                 "vertexAttributeInstanceRateZeroDivisor",
19288                 self.vertex_attribute_instance_rate_zero_divisor,
19289             ),
19290             ("vertexInputDynamicState", self.vertex_input_dynamic_state),
19291             (
19292                 "vertexPipelineStoresAndAtomics",
19293                 self.vertex_pipeline_stores_and_atomics,
19294             ),
19295             ("vulkanMemoryModel", self.vulkan_memory_model),
19296             (
19297                 "vulkanMemoryModelAvailabilityVisibilityChains",
19298                 self.vulkan_memory_model_availability_visibility_chains,
19299             ),
19300             (
19301                 "vulkanMemoryModelDeviceScope",
19302                 self.vulkan_memory_model_device_scope,
19303             ),
19304             ("wideLines", self.wide_lines),
19305             (
19306                 "workgroupMemoryExplicitLayout",
19307                 self.workgroup_memory_explicit_layout,
19308             ),
19309             (
19310                 "workgroupMemoryExplicitLayout16BitAccess",
19311                 self.workgroup_memory_explicit_layout16_bit_access,
19312             ),
19313             (
19314                 "workgroupMemoryExplicitLayout8BitAccess",
19315                 self.workgroup_memory_explicit_layout8_bit_access,
19316             ),
19317             (
19318                 "workgroupMemoryExplicitLayoutScalarBlockLayout",
19319                 self.workgroup_memory_explicit_layout_scalar_block_layout,
19320             ),
19321             ("ycbcr2plane444Formats", self.ycbcr2plane444_formats),
19322             ("ycbcrImageArrays", self.ycbcr_image_arrays),
19323         ]
19324         .into_iter()
19325     }
19326 }
19327 #[derive(Default)]
19328 pub(crate) struct FeaturesFfi {
19329     features_vulkan10: ash::vk::PhysicalDeviceFeatures2KHR,
19330     features_vulkan11: Option<ash::vk::PhysicalDeviceVulkan11Features>,
19331     features_vulkan12: Option<ash::vk::PhysicalDeviceVulkan12Features>,
19332     features_vulkan13: Option<ash::vk::PhysicalDeviceVulkan13Features>,
19333     features_16bit_storage: Option<ash::vk::PhysicalDevice16BitStorageFeatures>,
19334     features_multiview: Option<ash::vk::PhysicalDeviceMultiviewFeatures>,
19335     features_protected_memory: Option<ash::vk::PhysicalDeviceProtectedMemoryFeatures>,
19336     features_sampler_ycbcr_conversion:
19337         Option<ash::vk::PhysicalDeviceSamplerYcbcrConversionFeatures>,
19338     features_shader_draw_parameters: Option<ash::vk::PhysicalDeviceShaderDrawParametersFeatures>,
19339     features_variable_pointers: Option<ash::vk::PhysicalDeviceVariablePointersFeatures>,
19340     features_8bit_storage: Option<ash::vk::PhysicalDevice8BitStorageFeatures>,
19341     features_buffer_device_address: Option<ash::vk::PhysicalDeviceBufferDeviceAddressFeatures>,
19342     features_descriptor_indexing: Option<ash::vk::PhysicalDeviceDescriptorIndexingFeatures>,
19343     features_host_query_reset: Option<ash::vk::PhysicalDeviceHostQueryResetFeatures>,
19344     features_imageless_framebuffer: Option<ash::vk::PhysicalDeviceImagelessFramebufferFeatures>,
19345     features_scalar_block_layout: Option<ash::vk::PhysicalDeviceScalarBlockLayoutFeatures>,
19346     features_separate_depth_stencil_layouts:
19347         Option<ash::vk::PhysicalDeviceSeparateDepthStencilLayoutsFeatures>,
19348     features_shader_atomic_int64: Option<ash::vk::PhysicalDeviceShaderAtomicInt64Features>,
19349     features_shader_float16_int8: Option<ash::vk::PhysicalDeviceShaderFloat16Int8Features>,
19350     features_shader_subgroup_extended_types:
19351         Option<ash::vk::PhysicalDeviceShaderSubgroupExtendedTypesFeatures>,
19352     features_timeline_semaphore: Option<ash::vk::PhysicalDeviceTimelineSemaphoreFeatures>,
19353     features_uniform_buffer_standard_layout:
19354         Option<ash::vk::PhysicalDeviceUniformBufferStandardLayoutFeatures>,
19355     features_vulkan_memory_model: Option<ash::vk::PhysicalDeviceVulkanMemoryModelFeatures>,
19356     features_dynamic_rendering: Option<ash::vk::PhysicalDeviceDynamicRenderingFeatures>,
19357     features_image_robustness: Option<ash::vk::PhysicalDeviceImageRobustnessFeatures>,
19358     features_inline_uniform_block: Option<ash::vk::PhysicalDeviceInlineUniformBlockFeatures>,
19359     features_maintenance4: Option<ash::vk::PhysicalDeviceMaintenance4Features>,
19360     features_pipeline_creation_cache_control:
19361         Option<ash::vk::PhysicalDevicePipelineCreationCacheControlFeatures>,
19362     features_private_data: Option<ash::vk::PhysicalDevicePrivateDataFeatures>,
19363     features_shader_demote_to_helper_invocation:
19364         Option<ash::vk::PhysicalDeviceShaderDemoteToHelperInvocationFeatures>,
19365     features_shader_integer_dot_product:
19366         Option<ash::vk::PhysicalDeviceShaderIntegerDotProductFeatures>,
19367     features_shader_terminate_invocation:
19368         Option<ash::vk::PhysicalDeviceShaderTerminateInvocationFeatures>,
19369     features_subgroup_size_control: Option<ash::vk::PhysicalDeviceSubgroupSizeControlFeatures>,
19370     features_synchronization2: Option<ash::vk::PhysicalDeviceSynchronization2Features>,
19371     features_texture_compression_astchdr:
19372         Option<ash::vk::PhysicalDeviceTextureCompressionASTCHDRFeatures>,
19373     features_zero_initialize_workgroup_memory:
19374         Option<ash::vk::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>,
19375     features_acceleration_structure_khr:
19376         Option<ash::vk::PhysicalDeviceAccelerationStructureFeaturesKHR>,
19377     features_fragment_shader_barycentric_khr:
19378         Option<ash::vk::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR>,
19379     features_fragment_shading_rate_khr:
19380         Option<ash::vk::PhysicalDeviceFragmentShadingRateFeaturesKHR>,
19381     features_global_priority_query_khr:
19382         Option<ash::vk::PhysicalDeviceGlobalPriorityQueryFeaturesKHR>,
19383     features_performance_query_khr: Option<ash::vk::PhysicalDevicePerformanceQueryFeaturesKHR>,
19384     features_pipeline_executable_properties_khr:
19385         Option<ash::vk::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR>,
19386     features_portability_subset_khr: Option<ash::vk::PhysicalDevicePortabilitySubsetFeaturesKHR>,
19387     features_present_id_khr: Option<ash::vk::PhysicalDevicePresentIdFeaturesKHR>,
19388     features_present_wait_khr: Option<ash::vk::PhysicalDevicePresentWaitFeaturesKHR>,
19389     features_ray_query_khr: Option<ash::vk::PhysicalDeviceRayQueryFeaturesKHR>,
19390     features_ray_tracing_maintenance1_khr:
19391         Option<ash::vk::PhysicalDeviceRayTracingMaintenance1FeaturesKHR>,
19392     features_ray_tracing_pipeline_khr: Option<ash::vk::PhysicalDeviceRayTracingPipelineFeaturesKHR>,
19393     features_shader_clock_khr: Option<ash::vk::PhysicalDeviceShaderClockFeaturesKHR>,
19394     features_shader_subgroup_uniform_control_flow_khr:
19395         Option<ash::vk::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>,
19396     features_workgroup_memory_explicit_layout_khr:
19397         Option<ash::vk::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>,
19398     features_4444formats_ext: Option<ash::vk::PhysicalDevice4444FormatsFeaturesEXT>,
19399     features_astc_decode_ext: Option<ash::vk::PhysicalDeviceASTCDecodeFeaturesEXT>,
19400     features_address_binding_report_ext:
19401         Option<ash::vk::PhysicalDeviceAddressBindingReportFeaturesEXT>,
19402     features_attachment_feedback_loop_layout_ext:
19403         Option<ash::vk::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>,
19404     features_blend_operation_advanced_ext:
19405         Option<ash::vk::PhysicalDeviceBlendOperationAdvancedFeaturesEXT>,
19406     features_border_color_swizzle_ext: Option<ash::vk::PhysicalDeviceBorderColorSwizzleFeaturesEXT>,
19407     features_buffer_device_address_ext:
19408         Option<ash::vk::PhysicalDeviceBufferDeviceAddressFeaturesEXT>,
19409     features_color_write_enable_ext: Option<ash::vk::PhysicalDeviceColorWriteEnableFeaturesEXT>,
19410     features_conditional_rendering_ext:
19411         Option<ash::vk::PhysicalDeviceConditionalRenderingFeaturesEXT>,
19412     features_custom_border_color_ext: Option<ash::vk::PhysicalDeviceCustomBorderColorFeaturesEXT>,
19413     features_depth_clamp_zero_one_ext: Option<ash::vk::PhysicalDeviceDepthClampZeroOneFeaturesEXT>,
19414     features_depth_clip_control_ext: Option<ash::vk::PhysicalDeviceDepthClipControlFeaturesEXT>,
19415     features_depth_clip_enable_ext: Option<ash::vk::PhysicalDeviceDepthClipEnableFeaturesEXT>,
19416     features_descriptor_buffer_ext: Option<ash::vk::PhysicalDeviceDescriptorBufferFeaturesEXT>,
19417     features_device_memory_report_ext: Option<ash::vk::PhysicalDeviceDeviceMemoryReportFeaturesEXT>,
19418     features_extended_dynamic_state2_ext:
19419         Option<ash::vk::PhysicalDeviceExtendedDynamicState2FeaturesEXT>,
19420     features_extended_dynamic_state3_ext:
19421         Option<ash::vk::PhysicalDeviceExtendedDynamicState3FeaturesEXT>,
19422     features_extended_dynamic_state_ext:
19423         Option<ash::vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT>,
19424     features_fault_ext: Option<ash::vk::PhysicalDeviceFaultFeaturesEXT>,
19425     features_fragment_density_map2_ext:
19426         Option<ash::vk::PhysicalDeviceFragmentDensityMap2FeaturesEXT>,
19427     features_fragment_density_map_ext: Option<ash::vk::PhysicalDeviceFragmentDensityMapFeaturesEXT>,
19428     features_fragment_shader_interlock_ext:
19429         Option<ash::vk::PhysicalDeviceFragmentShaderInterlockFeaturesEXT>,
19430     features_graphics_pipeline_library_ext:
19431         Option<ash::vk::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>,
19432     features_image2_d_view_of3_d_ext: Option<ash::vk::PhysicalDeviceImage2DViewOf3DFeaturesEXT>,
19433     features_image_compression_control_ext:
19434         Option<ash::vk::PhysicalDeviceImageCompressionControlFeaturesEXT>,
19435     features_image_compression_control_swapchain_ext:
19436         Option<ash::vk::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>,
19437     features_image_view_min_lod_ext: Option<ash::vk::PhysicalDeviceImageViewMinLodFeaturesEXT>,
19438     features_index_type_uint8_ext: Option<ash::vk::PhysicalDeviceIndexTypeUint8FeaturesEXT>,
19439     features_legacy_dithering_ext: Option<ash::vk::PhysicalDeviceLegacyDitheringFeaturesEXT>,
19440     features_line_rasterization_ext: Option<ash::vk::PhysicalDeviceLineRasterizationFeaturesEXT>,
19441     features_memory_priority_ext: Option<ash::vk::PhysicalDeviceMemoryPriorityFeaturesEXT>,
19442     features_mesh_shader_ext: Option<ash::vk::PhysicalDeviceMeshShaderFeaturesEXT>,
19443     features_multi_draw_ext: Option<ash::vk::PhysicalDeviceMultiDrawFeaturesEXT>,
19444     features_multisampled_render_to_single_sampled_ext:
19445         Option<ash::vk::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT>,
19446     features_mutable_descriptor_type_ext:
19447         Option<ash::vk::PhysicalDeviceMutableDescriptorTypeFeaturesEXT>,
19448     features_non_seamless_cube_map_ext:
19449         Option<ash::vk::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT>,
19450     features_opacity_micromap_ext: Option<ash::vk::PhysicalDeviceOpacityMicromapFeaturesEXT>,
19451     features_pageable_device_local_memory_ext:
19452         Option<ash::vk::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>,
19453     features_pipeline_properties_ext: Option<ash::vk::PhysicalDevicePipelinePropertiesFeaturesEXT>,
19454     features_pipeline_protected_access_ext:
19455         Option<ash::vk::PhysicalDevicePipelineProtectedAccessFeaturesEXT>,
19456     features_pipeline_robustness_ext: Option<ash::vk::PhysicalDevicePipelineRobustnessFeaturesEXT>,
19457     features_primitive_topology_list_restart_ext:
19458         Option<ash::vk::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>,
19459     features_primitives_generated_query_ext:
19460         Option<ash::vk::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>,
19461     features_provoking_vertex_ext: Option<ash::vk::PhysicalDeviceProvokingVertexFeaturesEXT>,
19462     features_rgba10x6_formats_ext: Option<ash::vk::PhysicalDeviceRGBA10X6FormatsFeaturesEXT>,
19463     features_rasterization_order_attachment_access_ext:
19464         Option<ash::vk::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT>,
19465     features_robustness2_ext: Option<ash::vk::PhysicalDeviceRobustness2FeaturesEXT>,
19466     features_shader_atomic_float2_ext: Option<ash::vk::PhysicalDeviceShaderAtomicFloat2FeaturesEXT>,
19467     features_shader_atomic_float_ext: Option<ash::vk::PhysicalDeviceShaderAtomicFloatFeaturesEXT>,
19468     features_shader_image_atomic_int64_ext:
19469         Option<ash::vk::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT>,
19470     features_shader_module_identifier_ext:
19471         Option<ash::vk::PhysicalDeviceShaderModuleIdentifierFeaturesEXT>,
19472     features_subpass_merge_feedback_ext:
19473         Option<ash::vk::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT>,
19474     features_swapchain_maintenance1_ext:
19475         Option<ash::vk::PhysicalDeviceSwapchainMaintenance1FeaturesEXT>,
19476     features_texel_buffer_alignment_ext:
19477         Option<ash::vk::PhysicalDeviceTexelBufferAlignmentFeaturesEXT>,
19478     features_transform_feedback_ext: Option<ash::vk::PhysicalDeviceTransformFeedbackFeaturesEXT>,
19479     features_vertex_attribute_divisor_ext:
19480         Option<ash::vk::PhysicalDeviceVertexAttributeDivisorFeaturesEXT>,
19481     features_vertex_input_dynamic_state_ext:
19482         Option<ash::vk::PhysicalDeviceVertexInputDynamicStateFeaturesEXT>,
19483     features_ycbcr2_plane444_formats_ext:
19484         Option<ash::vk::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>,
19485     features_ycbcr_image_arrays_ext: Option<ash::vk::PhysicalDeviceYcbcrImageArraysFeaturesEXT>,
19486     features_amigo_profiling_sec: Option<ash::vk::PhysicalDeviceAmigoProfilingFeaturesSEC>,
19487     features_coherent_memory_amd: Option<ash::vk::PhysicalDeviceCoherentMemoryFeaturesAMD>,
19488     features_compute_shader_derivatives_nv:
19489         Option<ash::vk::PhysicalDeviceComputeShaderDerivativesFeaturesNV>,
19490     features_cooperative_matrix_nv: Option<ash::vk::PhysicalDeviceCooperativeMatrixFeaturesNV>,
19491     features_copy_memory_indirect_nv: Option<ash::vk::PhysicalDeviceCopyMemoryIndirectFeaturesNV>,
19492     features_corner_sampled_image_nv: Option<ash::vk::PhysicalDeviceCornerSampledImageFeaturesNV>,
19493     features_coverage_reduction_mode_nv:
19494         Option<ash::vk::PhysicalDeviceCoverageReductionModeFeaturesNV>,
19495     features_dedicated_allocation_image_aliasing_nv:
19496         Option<ash::vk::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>,
19497     features_descriptor_set_host_mapping_valve:
19498         Option<ash::vk::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>,
19499     features_device_generated_commands_nv:
19500         Option<ash::vk::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV>,
19501     features_diagnostics_config_nv: Option<ash::vk::PhysicalDeviceDiagnosticsConfigFeaturesNV>,
19502     features_exclusive_scissor_nv: Option<ash::vk::PhysicalDeviceExclusiveScissorFeaturesNV>,
19503     features_external_memory_rdma_nv: Option<ash::vk::PhysicalDeviceExternalMemoryRDMAFeaturesNV>,
19504     features_fragment_density_map_offset_qcom:
19505         Option<ash::vk::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>,
19506     features_fragment_shading_rate_enums_nv:
19507         Option<ash::vk::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV>,
19508     features_image_processing_qcom: Option<ash::vk::PhysicalDeviceImageProcessingFeaturesQCOM>,
19509     features_inherited_viewport_scissor_nv:
19510         Option<ash::vk::PhysicalDeviceInheritedViewportScissorFeaturesNV>,
19511     features_invocation_mask_huawei: Option<ash::vk::PhysicalDeviceInvocationMaskFeaturesHUAWEI>,
19512     features_linear_color_attachment_nv:
19513         Option<ash::vk::PhysicalDeviceLinearColorAttachmentFeaturesNV>,
19514     features_memory_decompression_nv: Option<ash::vk::PhysicalDeviceMemoryDecompressionFeaturesNV>,
19515     features_mesh_shader_nv: Option<ash::vk::PhysicalDeviceMeshShaderFeaturesNV>,
19516     features_multiview_per_view_viewports_qcom:
19517         Option<ash::vk::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM>,
19518     features_optical_flow_nv: Option<ash::vk::PhysicalDeviceOpticalFlowFeaturesNV>,
19519     features_present_barrier_nv: Option<ash::vk::PhysicalDevicePresentBarrierFeaturesNV>,
19520     features_ray_tracing_invocation_reorder_nv:
19521         Option<ash::vk::PhysicalDeviceRayTracingInvocationReorderFeaturesNV>,
19522     features_ray_tracing_motion_blur_nv:
19523         Option<ash::vk::PhysicalDeviceRayTracingMotionBlurFeaturesNV>,
19524     features_representative_fragment_test_nv:
19525         Option<ash::vk::PhysicalDeviceRepresentativeFragmentTestFeaturesNV>,
19526     features_shader_core_builtins_arm: Option<ash::vk::PhysicalDeviceShaderCoreBuiltinsFeaturesARM>,
19527     features_shader_early_and_late_fragment_tests_amd:
19528         Option<ash::vk::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD>,
19529     features_shader_image_footprint_nv:
19530         Option<ash::vk::PhysicalDeviceShaderImageFootprintFeaturesNV>,
19531     features_shader_integer_functions2_intel:
19532         Option<ash::vk::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>,
19533     features_shader_sm_builtins_nv: Option<ash::vk::PhysicalDeviceShaderSMBuiltinsFeaturesNV>,
19534     features_shading_rate_image_nv: Option<ash::vk::PhysicalDeviceShadingRateImageFeaturesNV>,
19535     features_subpass_shading_huawei: Option<ash::vk::PhysicalDeviceSubpassShadingFeaturesHUAWEI>,
19536     features_tile_properties_qcom: Option<ash::vk::PhysicalDeviceTilePropertiesFeaturesQCOM>,
19537 }
19538 impl FeaturesFfi {
make_chain( &mut self, api_version: crate::Version, device_extensions: &crate::device::DeviceExtensions, _instance_extensions: &crate::instance::InstanceExtensions, )19539     pub(crate) fn make_chain(
19540         &mut self,
19541         api_version: crate::Version,
19542         device_extensions: &crate::device::DeviceExtensions,
19543         _instance_extensions: &crate::instance::InstanceExtensions,
19544     ) {
19545         self.features_vulkan10 = Default::default();
19546         let head = &mut self.features_vulkan10;
19547         if [api_version >= crate::Version::V1_2].into_iter().any(|x| x) && [].into_iter().all(|x| x)
19548         {
19549             self.features_vulkan11 = Some(Default::default());
19550             let member = self.features_vulkan11.as_mut().unwrap();
19551             member.p_next = head.p_next;
19552             head.p_next = member as *mut _ as _;
19553         }
19554         if [api_version >= crate::Version::V1_2].into_iter().any(|x| x) && [].into_iter().all(|x| x)
19555         {
19556             self.features_vulkan12 = Some(Default::default());
19557             let member = self.features_vulkan12.as_mut().unwrap();
19558             member.p_next = head.p_next;
19559             head.p_next = member as *mut _ as _;
19560         }
19561         if [api_version >= crate::Version::V1_3].into_iter().any(|x| x) && [].into_iter().all(|x| x)
19562         {
19563             self.features_vulkan13 = Some(Default::default());
19564             let member = self.features_vulkan13.as_mut().unwrap();
19565             member.p_next = head.p_next;
19566             head.p_next = member as *mut _ as _;
19567         }
19568         if [
19569             api_version >= crate::Version::V1_1,
19570             device_extensions.khr_16bit_storage,
19571         ]
19572         .into_iter()
19573         .any(|x| x)
19574             && [self.features_vulkan11.is_none()].into_iter().all(|x| x)
19575         {
19576             self.features_16bit_storage = Some(Default::default());
19577             let member = self.features_16bit_storage.as_mut().unwrap();
19578             member.p_next = head.p_next;
19579             head.p_next = member as *mut _ as _;
19580         }
19581         if [
19582             api_version >= crate::Version::V1_1,
19583             device_extensions.khr_multiview,
19584         ]
19585         .into_iter()
19586         .any(|x| x)
19587             && [self.features_vulkan11.is_none()].into_iter().all(|x| x)
19588         {
19589             self.features_multiview = Some(Default::default());
19590             let member = self.features_multiview.as_mut().unwrap();
19591             member.p_next = head.p_next;
19592             head.p_next = member as *mut _ as _;
19593         }
19594         if [api_version >= crate::Version::V1_1].into_iter().any(|x| x)
19595             && [self.features_vulkan11.is_none()].into_iter().all(|x| x)
19596         {
19597             self.features_protected_memory = Some(Default::default());
19598             let member = self.features_protected_memory.as_mut().unwrap();
19599             member.p_next = head.p_next;
19600             head.p_next = member as *mut _ as _;
19601         }
19602         if [
19603             api_version >= crate::Version::V1_1,
19604             device_extensions.khr_sampler_ycbcr_conversion,
19605         ]
19606         .into_iter()
19607         .any(|x| x)
19608             && [self.features_vulkan11.is_none()].into_iter().all(|x| x)
19609         {
19610             self.features_sampler_ycbcr_conversion = Some(Default::default());
19611             let member = self.features_sampler_ycbcr_conversion.as_mut().unwrap();
19612             member.p_next = head.p_next;
19613             head.p_next = member as *mut _ as _;
19614         }
19615         if [api_version >= crate::Version::V1_1].into_iter().any(|x| x)
19616             && [self.features_vulkan11.is_none()].into_iter().all(|x| x)
19617         {
19618             self.features_shader_draw_parameters = Some(Default::default());
19619             let member = self.features_shader_draw_parameters.as_mut().unwrap();
19620             member.p_next = head.p_next;
19621             head.p_next = member as *mut _ as _;
19622         }
19623         if [
19624             api_version >= crate::Version::V1_1,
19625             device_extensions.khr_variable_pointers,
19626         ]
19627         .into_iter()
19628         .any(|x| x)
19629             && [self.features_vulkan11.is_none()].into_iter().all(|x| x)
19630         {
19631             self.features_variable_pointers = Some(Default::default());
19632             let member = self.features_variable_pointers.as_mut().unwrap();
19633             member.p_next = head.p_next;
19634             head.p_next = member as *mut _ as _;
19635         }
19636         if [
19637             api_version >= crate::Version::V1_2,
19638             device_extensions.khr_8bit_storage,
19639         ]
19640         .into_iter()
19641         .any(|x| x)
19642             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19643         {
19644             self.features_8bit_storage = Some(Default::default());
19645             let member = self.features_8bit_storage.as_mut().unwrap();
19646             member.p_next = head.p_next;
19647             head.p_next = member as *mut _ as _;
19648         }
19649         if [
19650             api_version >= crate::Version::V1_2,
19651             device_extensions.khr_buffer_device_address,
19652         ]
19653         .into_iter()
19654         .any(|x| x)
19655             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19656         {
19657             self.features_buffer_device_address = Some(Default::default());
19658             let member = self.features_buffer_device_address.as_mut().unwrap();
19659             member.p_next = head.p_next;
19660             head.p_next = member as *mut _ as _;
19661         }
19662         if [
19663             api_version >= crate::Version::V1_2,
19664             device_extensions.ext_descriptor_indexing,
19665         ]
19666         .into_iter()
19667         .any(|x| x)
19668             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19669         {
19670             self.features_descriptor_indexing = Some(Default::default());
19671             let member = self.features_descriptor_indexing.as_mut().unwrap();
19672             member.p_next = head.p_next;
19673             head.p_next = member as *mut _ as _;
19674         }
19675         if [
19676             api_version >= crate::Version::V1_2,
19677             device_extensions.ext_host_query_reset,
19678         ]
19679         .into_iter()
19680         .any(|x| x)
19681             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19682         {
19683             self.features_host_query_reset = Some(Default::default());
19684             let member = self.features_host_query_reset.as_mut().unwrap();
19685             member.p_next = head.p_next;
19686             head.p_next = member as *mut _ as _;
19687         }
19688         if [
19689             api_version >= crate::Version::V1_2,
19690             device_extensions.khr_imageless_framebuffer,
19691         ]
19692         .into_iter()
19693         .any(|x| x)
19694             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19695         {
19696             self.features_imageless_framebuffer = Some(Default::default());
19697             let member = self.features_imageless_framebuffer.as_mut().unwrap();
19698             member.p_next = head.p_next;
19699             head.p_next = member as *mut _ as _;
19700         }
19701         if [
19702             api_version >= crate::Version::V1_2,
19703             device_extensions.ext_scalar_block_layout,
19704         ]
19705         .into_iter()
19706         .any(|x| x)
19707             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19708         {
19709             self.features_scalar_block_layout = Some(Default::default());
19710             let member = self.features_scalar_block_layout.as_mut().unwrap();
19711             member.p_next = head.p_next;
19712             head.p_next = member as *mut _ as _;
19713         }
19714         if [
19715             api_version >= crate::Version::V1_2,
19716             device_extensions.khr_separate_depth_stencil_layouts,
19717         ]
19718         .into_iter()
19719         .any(|x| x)
19720             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19721         {
19722             self.features_separate_depth_stencil_layouts = Some(Default::default());
19723             let member = self
19724                 .features_separate_depth_stencil_layouts
19725                 .as_mut()
19726                 .unwrap();
19727             member.p_next = head.p_next;
19728             head.p_next = member as *mut _ as _;
19729         }
19730         if [
19731             api_version >= crate::Version::V1_2,
19732             device_extensions.khr_shader_atomic_int64,
19733         ]
19734         .into_iter()
19735         .any(|x| x)
19736             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19737         {
19738             self.features_shader_atomic_int64 = Some(Default::default());
19739             let member = self.features_shader_atomic_int64.as_mut().unwrap();
19740             member.p_next = head.p_next;
19741             head.p_next = member as *mut _ as _;
19742         }
19743         if [
19744             api_version >= crate::Version::V1_2,
19745             device_extensions.khr_shader_float16_int8,
19746         ]
19747         .into_iter()
19748         .any(|x| x)
19749             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19750         {
19751             self.features_shader_float16_int8 = Some(Default::default());
19752             let member = self.features_shader_float16_int8.as_mut().unwrap();
19753             member.p_next = head.p_next;
19754             head.p_next = member as *mut _ as _;
19755         }
19756         if [
19757             api_version >= crate::Version::V1_2,
19758             device_extensions.khr_shader_subgroup_extended_types,
19759         ]
19760         .into_iter()
19761         .any(|x| x)
19762             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19763         {
19764             self.features_shader_subgroup_extended_types = Some(Default::default());
19765             let member = self
19766                 .features_shader_subgroup_extended_types
19767                 .as_mut()
19768                 .unwrap();
19769             member.p_next = head.p_next;
19770             head.p_next = member as *mut _ as _;
19771         }
19772         if [
19773             api_version >= crate::Version::V1_2,
19774             device_extensions.khr_timeline_semaphore,
19775         ]
19776         .into_iter()
19777         .any(|x| x)
19778             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19779         {
19780             self.features_timeline_semaphore = Some(Default::default());
19781             let member = self.features_timeline_semaphore.as_mut().unwrap();
19782             member.p_next = head.p_next;
19783             head.p_next = member as *mut _ as _;
19784         }
19785         if [
19786             api_version >= crate::Version::V1_2,
19787             device_extensions.khr_uniform_buffer_standard_layout,
19788         ]
19789         .into_iter()
19790         .any(|x| x)
19791             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19792         {
19793             self.features_uniform_buffer_standard_layout = Some(Default::default());
19794             let member = self
19795                 .features_uniform_buffer_standard_layout
19796                 .as_mut()
19797                 .unwrap();
19798             member.p_next = head.p_next;
19799             head.p_next = member as *mut _ as _;
19800         }
19801         if [
19802             api_version >= crate::Version::V1_2,
19803             device_extensions.khr_vulkan_memory_model,
19804         ]
19805         .into_iter()
19806         .any(|x| x)
19807             && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
19808         {
19809             self.features_vulkan_memory_model = Some(Default::default());
19810             let member = self.features_vulkan_memory_model.as_mut().unwrap();
19811             member.p_next = head.p_next;
19812             head.p_next = member as *mut _ as _;
19813         }
19814         if [
19815             api_version >= crate::Version::V1_3,
19816             device_extensions.khr_dynamic_rendering,
19817         ]
19818         .into_iter()
19819         .any(|x| x)
19820             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19821         {
19822             self.features_dynamic_rendering = Some(Default::default());
19823             let member = self.features_dynamic_rendering.as_mut().unwrap();
19824             member.p_next = head.p_next;
19825             head.p_next = member as *mut _ as _;
19826         }
19827         if [
19828             api_version >= crate::Version::V1_3,
19829             device_extensions.ext_image_robustness,
19830         ]
19831         .into_iter()
19832         .any(|x| x)
19833             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19834         {
19835             self.features_image_robustness = Some(Default::default());
19836             let member = self.features_image_robustness.as_mut().unwrap();
19837             member.p_next = head.p_next;
19838             head.p_next = member as *mut _ as _;
19839         }
19840         if [
19841             api_version >= crate::Version::V1_3,
19842             device_extensions.ext_inline_uniform_block,
19843         ]
19844         .into_iter()
19845         .any(|x| x)
19846             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19847         {
19848             self.features_inline_uniform_block = Some(Default::default());
19849             let member = self.features_inline_uniform_block.as_mut().unwrap();
19850             member.p_next = head.p_next;
19851             head.p_next = member as *mut _ as _;
19852         }
19853         if [
19854             api_version >= crate::Version::V1_3,
19855             device_extensions.khr_maintenance4,
19856         ]
19857         .into_iter()
19858         .any(|x| x)
19859             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19860         {
19861             self.features_maintenance4 = Some(Default::default());
19862             let member = self.features_maintenance4.as_mut().unwrap();
19863             member.p_next = head.p_next;
19864             head.p_next = member as *mut _ as _;
19865         }
19866         if [
19867             api_version >= crate::Version::V1_3,
19868             device_extensions.ext_pipeline_creation_cache_control,
19869         ]
19870         .into_iter()
19871         .any(|x| x)
19872             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19873         {
19874             self.features_pipeline_creation_cache_control = Some(Default::default());
19875             let member = self
19876                 .features_pipeline_creation_cache_control
19877                 .as_mut()
19878                 .unwrap();
19879             member.p_next = head.p_next;
19880             head.p_next = member as *mut _ as _;
19881         }
19882         if [
19883             api_version >= crate::Version::V1_3,
19884             device_extensions.ext_private_data,
19885         ]
19886         .into_iter()
19887         .any(|x| x)
19888             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19889         {
19890             self.features_private_data = Some(Default::default());
19891             let member = self.features_private_data.as_mut().unwrap();
19892             member.p_next = head.p_next;
19893             head.p_next = member as *mut _ as _;
19894         }
19895         if [
19896             api_version >= crate::Version::V1_3,
19897             device_extensions.ext_shader_demote_to_helper_invocation,
19898         ]
19899         .into_iter()
19900         .any(|x| x)
19901             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19902         {
19903             self.features_shader_demote_to_helper_invocation = Some(Default::default());
19904             let member = self
19905                 .features_shader_demote_to_helper_invocation
19906                 .as_mut()
19907                 .unwrap();
19908             member.p_next = head.p_next;
19909             head.p_next = member as *mut _ as _;
19910         }
19911         if [
19912             api_version >= crate::Version::V1_3,
19913             device_extensions.khr_shader_integer_dot_product,
19914         ]
19915         .into_iter()
19916         .any(|x| x)
19917             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19918         {
19919             self.features_shader_integer_dot_product = Some(Default::default());
19920             let member = self.features_shader_integer_dot_product.as_mut().unwrap();
19921             member.p_next = head.p_next;
19922             head.p_next = member as *mut _ as _;
19923         }
19924         if [
19925             api_version >= crate::Version::V1_3,
19926             device_extensions.khr_shader_terminate_invocation,
19927         ]
19928         .into_iter()
19929         .any(|x| x)
19930             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19931         {
19932             self.features_shader_terminate_invocation = Some(Default::default());
19933             let member = self.features_shader_terminate_invocation.as_mut().unwrap();
19934             member.p_next = head.p_next;
19935             head.p_next = member as *mut _ as _;
19936         }
19937         if [
19938             api_version >= crate::Version::V1_3,
19939             device_extensions.ext_subgroup_size_control,
19940         ]
19941         .into_iter()
19942         .any(|x| x)
19943             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19944         {
19945             self.features_subgroup_size_control = Some(Default::default());
19946             let member = self.features_subgroup_size_control.as_mut().unwrap();
19947             member.p_next = head.p_next;
19948             head.p_next = member as *mut _ as _;
19949         }
19950         if [
19951             api_version >= crate::Version::V1_3,
19952             device_extensions.khr_synchronization2,
19953         ]
19954         .into_iter()
19955         .any(|x| x)
19956             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19957         {
19958             self.features_synchronization2 = Some(Default::default());
19959             let member = self.features_synchronization2.as_mut().unwrap();
19960             member.p_next = head.p_next;
19961             head.p_next = member as *mut _ as _;
19962         }
19963         if [
19964             api_version >= crate::Version::V1_3,
19965             device_extensions.ext_texture_compression_astc_hdr,
19966         ]
19967         .into_iter()
19968         .any(|x| x)
19969             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19970         {
19971             self.features_texture_compression_astchdr = Some(Default::default());
19972             let member = self.features_texture_compression_astchdr.as_mut().unwrap();
19973             member.p_next = head.p_next;
19974             head.p_next = member as *mut _ as _;
19975         }
19976         if [
19977             api_version >= crate::Version::V1_3,
19978             device_extensions.khr_zero_initialize_workgroup_memory,
19979         ]
19980         .into_iter()
19981         .any(|x| x)
19982             && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
19983         {
19984             self.features_zero_initialize_workgroup_memory = Some(Default::default());
19985             let member = self
19986                 .features_zero_initialize_workgroup_memory
19987                 .as_mut()
19988                 .unwrap();
19989             member.p_next = head.p_next;
19990             head.p_next = member as *mut _ as _;
19991         }
19992         if [device_extensions.khr_acceleration_structure]
19993             .into_iter()
19994             .any(|x| x)
19995             && [].into_iter().all(|x| x)
19996         {
19997             self.features_acceleration_structure_khr = Some(Default::default());
19998             let member = self.features_acceleration_structure_khr.as_mut().unwrap();
19999             member.p_next = head.p_next;
20000             head.p_next = member as *mut _ as _;
20001         }
20002         if [
20003             device_extensions.khr_fragment_shader_barycentric,
20004             device_extensions.nv_fragment_shader_barycentric,
20005         ]
20006         .into_iter()
20007         .any(|x| x)
20008             && [].into_iter().all(|x| x)
20009         {
20010             self.features_fragment_shader_barycentric_khr = Some(Default::default());
20011             let member = self
20012                 .features_fragment_shader_barycentric_khr
20013                 .as_mut()
20014                 .unwrap();
20015             member.p_next = head.p_next;
20016             head.p_next = member as *mut _ as _;
20017         }
20018         if [device_extensions.khr_fragment_shading_rate]
20019             .into_iter()
20020             .any(|x| x)
20021             && [].into_iter().all(|x| x)
20022         {
20023             self.features_fragment_shading_rate_khr = Some(Default::default());
20024             let member = self.features_fragment_shading_rate_khr.as_mut().unwrap();
20025             member.p_next = head.p_next;
20026             head.p_next = member as *mut _ as _;
20027         }
20028         if [
20029             device_extensions.khr_global_priority,
20030             device_extensions.ext_global_priority_query,
20031         ]
20032         .into_iter()
20033         .any(|x| x)
20034             && [].into_iter().all(|x| x)
20035         {
20036             self.features_global_priority_query_khr = Some(Default::default());
20037             let member = self.features_global_priority_query_khr.as_mut().unwrap();
20038             member.p_next = head.p_next;
20039             head.p_next = member as *mut _ as _;
20040         }
20041         if [device_extensions.khr_performance_query]
20042             .into_iter()
20043             .any(|x| x)
20044             && [].into_iter().all(|x| x)
20045         {
20046             self.features_performance_query_khr = Some(Default::default());
20047             let member = self.features_performance_query_khr.as_mut().unwrap();
20048             member.p_next = head.p_next;
20049             head.p_next = member as *mut _ as _;
20050         }
20051         if [device_extensions.khr_pipeline_executable_properties]
20052             .into_iter()
20053             .any(|x| x)
20054             && [].into_iter().all(|x| x)
20055         {
20056             self.features_pipeline_executable_properties_khr = Some(Default::default());
20057             let member = self
20058                 .features_pipeline_executable_properties_khr
20059                 .as_mut()
20060                 .unwrap();
20061             member.p_next = head.p_next;
20062             head.p_next = member as *mut _ as _;
20063         }
20064         if [device_extensions.khr_portability_subset]
20065             .into_iter()
20066             .any(|x| x)
20067             && [].into_iter().all(|x| x)
20068         {
20069             self.features_portability_subset_khr = Some(Default::default());
20070             let member = self.features_portability_subset_khr.as_mut().unwrap();
20071             member.p_next = head.p_next;
20072             head.p_next = member as *mut _ as _;
20073         }
20074         if [device_extensions.khr_present_id].into_iter().any(|x| x) && [].into_iter().all(|x| x) {
20075             self.features_present_id_khr = Some(Default::default());
20076             let member = self.features_present_id_khr.as_mut().unwrap();
20077             member.p_next = head.p_next;
20078             head.p_next = member as *mut _ as _;
20079         }
20080         if [device_extensions.khr_present_wait].into_iter().any(|x| x) && [].into_iter().all(|x| x)
20081         {
20082             self.features_present_wait_khr = Some(Default::default());
20083             let member = self.features_present_wait_khr.as_mut().unwrap();
20084             member.p_next = head.p_next;
20085             head.p_next = member as *mut _ as _;
20086         }
20087         if [device_extensions.khr_ray_query].into_iter().any(|x| x) && [].into_iter().all(|x| x) {
20088             self.features_ray_query_khr = Some(Default::default());
20089             let member = self.features_ray_query_khr.as_mut().unwrap();
20090             member.p_next = head.p_next;
20091             head.p_next = member as *mut _ as _;
20092         }
20093         if [device_extensions.khr_ray_tracing_maintenance1]
20094             .into_iter()
20095             .any(|x| x)
20096             && [].into_iter().all(|x| x)
20097         {
20098             self.features_ray_tracing_maintenance1_khr = Some(Default::default());
20099             let member = self.features_ray_tracing_maintenance1_khr.as_mut().unwrap();
20100             member.p_next = head.p_next;
20101             head.p_next = member as *mut _ as _;
20102         }
20103         if [device_extensions.khr_ray_tracing_pipeline]
20104             .into_iter()
20105             .any(|x| x)
20106             && [].into_iter().all(|x| x)
20107         {
20108             self.features_ray_tracing_pipeline_khr = Some(Default::default());
20109             let member = self.features_ray_tracing_pipeline_khr.as_mut().unwrap();
20110             member.p_next = head.p_next;
20111             head.p_next = member as *mut _ as _;
20112         }
20113         if [device_extensions.khr_shader_clock].into_iter().any(|x| x) && [].into_iter().all(|x| x)
20114         {
20115             self.features_shader_clock_khr = Some(Default::default());
20116             let member = self.features_shader_clock_khr.as_mut().unwrap();
20117             member.p_next = head.p_next;
20118             head.p_next = member as *mut _ as _;
20119         }
20120         if [device_extensions.khr_shader_subgroup_uniform_control_flow]
20121             .into_iter()
20122             .any(|x| x)
20123             && [].into_iter().all(|x| x)
20124         {
20125             self.features_shader_subgroup_uniform_control_flow_khr = Some(Default::default());
20126             let member = self
20127                 .features_shader_subgroup_uniform_control_flow_khr
20128                 .as_mut()
20129                 .unwrap();
20130             member.p_next = head.p_next;
20131             head.p_next = member as *mut _ as _;
20132         }
20133         if [device_extensions.khr_workgroup_memory_explicit_layout]
20134             .into_iter()
20135             .any(|x| x)
20136             && [].into_iter().all(|x| x)
20137         {
20138             self.features_workgroup_memory_explicit_layout_khr = Some(Default::default());
20139             let member = self
20140                 .features_workgroup_memory_explicit_layout_khr
20141                 .as_mut()
20142                 .unwrap();
20143             member.p_next = head.p_next;
20144             head.p_next = member as *mut _ as _;
20145         }
20146         if [device_extensions.ext_4444_formats].into_iter().any(|x| x) && [].into_iter().all(|x| x)
20147         {
20148             self.features_4444formats_ext = Some(Default::default());
20149             let member = self.features_4444formats_ext.as_mut().unwrap();
20150             member.p_next = head.p_next;
20151             head.p_next = member as *mut _ as _;
20152         }
20153         if [device_extensions.ext_astc_decode_mode]
20154             .into_iter()
20155             .any(|x| x)
20156             && [].into_iter().all(|x| x)
20157         {
20158             self.features_astc_decode_ext = Some(Default::default());
20159             let member = self.features_astc_decode_ext.as_mut().unwrap();
20160             member.p_next = head.p_next;
20161             head.p_next = member as *mut _ as _;
20162         }
20163         if [device_extensions.ext_device_address_binding_report]
20164             .into_iter()
20165             .any(|x| x)
20166             && [].into_iter().all(|x| x)
20167         {
20168             self.features_address_binding_report_ext = Some(Default::default());
20169             let member = self.features_address_binding_report_ext.as_mut().unwrap();
20170             member.p_next = head.p_next;
20171             head.p_next = member as *mut _ as _;
20172         }
20173         if [device_extensions.ext_attachment_feedback_loop_layout]
20174             .into_iter()
20175             .any(|x| x)
20176             && [].into_iter().all(|x| x)
20177         {
20178             self.features_attachment_feedback_loop_layout_ext = Some(Default::default());
20179             let member = self
20180                 .features_attachment_feedback_loop_layout_ext
20181                 .as_mut()
20182                 .unwrap();
20183             member.p_next = head.p_next;
20184             head.p_next = member as *mut _ as _;
20185         }
20186         if [device_extensions.ext_blend_operation_advanced]
20187             .into_iter()
20188             .any(|x| x)
20189             && [].into_iter().all(|x| x)
20190         {
20191             self.features_blend_operation_advanced_ext = Some(Default::default());
20192             let member = self.features_blend_operation_advanced_ext.as_mut().unwrap();
20193             member.p_next = head.p_next;
20194             head.p_next = member as *mut _ as _;
20195         }
20196         if [device_extensions.ext_border_color_swizzle]
20197             .into_iter()
20198             .any(|x| x)
20199             && [].into_iter().all(|x| x)
20200         {
20201             self.features_border_color_swizzle_ext = Some(Default::default());
20202             let member = self.features_border_color_swizzle_ext.as_mut().unwrap();
20203             member.p_next = head.p_next;
20204             head.p_next = member as *mut _ as _;
20205         }
20206         if [device_extensions.ext_buffer_device_address]
20207             .into_iter()
20208             .any(|x| x)
20209             && [
20210                 self.features_vulkan12.is_none(),
20211                 self.features_buffer_device_address.is_none(),
20212             ]
20213             .into_iter()
20214             .all(|x| x)
20215         {
20216             self.features_buffer_device_address_ext = Some(Default::default());
20217             let member = self.features_buffer_device_address_ext.as_mut().unwrap();
20218             member.p_next = head.p_next;
20219             head.p_next = member as *mut _ as _;
20220         }
20221         if [device_extensions.ext_color_write_enable]
20222             .into_iter()
20223             .any(|x| x)
20224             && [].into_iter().all(|x| x)
20225         {
20226             self.features_color_write_enable_ext = Some(Default::default());
20227             let member = self.features_color_write_enable_ext.as_mut().unwrap();
20228             member.p_next = head.p_next;
20229             head.p_next = member as *mut _ as _;
20230         }
20231         if [device_extensions.ext_conditional_rendering]
20232             .into_iter()
20233             .any(|x| x)
20234             && [].into_iter().all(|x| x)
20235         {
20236             self.features_conditional_rendering_ext = Some(Default::default());
20237             let member = self.features_conditional_rendering_ext.as_mut().unwrap();
20238             member.p_next = head.p_next;
20239             head.p_next = member as *mut _ as _;
20240         }
20241         if [device_extensions.ext_custom_border_color]
20242             .into_iter()
20243             .any(|x| x)
20244             && [].into_iter().all(|x| x)
20245         {
20246             self.features_custom_border_color_ext = Some(Default::default());
20247             let member = self.features_custom_border_color_ext.as_mut().unwrap();
20248             member.p_next = head.p_next;
20249             head.p_next = member as *mut _ as _;
20250         }
20251         if [device_extensions.ext_depth_clamp_zero_one]
20252             .into_iter()
20253             .any(|x| x)
20254             && [].into_iter().all(|x| x)
20255         {
20256             self.features_depth_clamp_zero_one_ext = Some(Default::default());
20257             let member = self.features_depth_clamp_zero_one_ext.as_mut().unwrap();
20258             member.p_next = head.p_next;
20259             head.p_next = member as *mut _ as _;
20260         }
20261         if [device_extensions.ext_depth_clip_control]
20262             .into_iter()
20263             .any(|x| x)
20264             && [].into_iter().all(|x| x)
20265         {
20266             self.features_depth_clip_control_ext = Some(Default::default());
20267             let member = self.features_depth_clip_control_ext.as_mut().unwrap();
20268             member.p_next = head.p_next;
20269             head.p_next = member as *mut _ as _;
20270         }
20271         if [device_extensions.ext_depth_clip_enable]
20272             .into_iter()
20273             .any(|x| x)
20274             && [].into_iter().all(|x| x)
20275         {
20276             self.features_depth_clip_enable_ext = Some(Default::default());
20277             let member = self.features_depth_clip_enable_ext.as_mut().unwrap();
20278             member.p_next = head.p_next;
20279             head.p_next = member as *mut _ as _;
20280         }
20281         if [device_extensions.ext_descriptor_buffer]
20282             .into_iter()
20283             .any(|x| x)
20284             && [].into_iter().all(|x| x)
20285         {
20286             self.features_descriptor_buffer_ext = Some(Default::default());
20287             let member = self.features_descriptor_buffer_ext.as_mut().unwrap();
20288             member.p_next = head.p_next;
20289             head.p_next = member as *mut _ as _;
20290         }
20291         if [device_extensions.ext_device_memory_report]
20292             .into_iter()
20293             .any(|x| x)
20294             && [].into_iter().all(|x| x)
20295         {
20296             self.features_device_memory_report_ext = Some(Default::default());
20297             let member = self.features_device_memory_report_ext.as_mut().unwrap();
20298             member.p_next = head.p_next;
20299             head.p_next = member as *mut _ as _;
20300         }
20301         if [device_extensions.ext_extended_dynamic_state2]
20302             .into_iter()
20303             .any(|x| x)
20304             && [].into_iter().all(|x| x)
20305         {
20306             self.features_extended_dynamic_state2_ext = Some(Default::default());
20307             let member = self.features_extended_dynamic_state2_ext.as_mut().unwrap();
20308             member.p_next = head.p_next;
20309             head.p_next = member as *mut _ as _;
20310         }
20311         if [device_extensions.ext_extended_dynamic_state3]
20312             .into_iter()
20313             .any(|x| x)
20314             && [].into_iter().all(|x| x)
20315         {
20316             self.features_extended_dynamic_state3_ext = Some(Default::default());
20317             let member = self.features_extended_dynamic_state3_ext.as_mut().unwrap();
20318             member.p_next = head.p_next;
20319             head.p_next = member as *mut _ as _;
20320         }
20321         if [device_extensions.ext_extended_dynamic_state]
20322             .into_iter()
20323             .any(|x| x)
20324             && [].into_iter().all(|x| x)
20325         {
20326             self.features_extended_dynamic_state_ext = Some(Default::default());
20327             let member = self.features_extended_dynamic_state_ext.as_mut().unwrap();
20328             member.p_next = head.p_next;
20329             head.p_next = member as *mut _ as _;
20330         }
20331         if [device_extensions.ext_device_fault].into_iter().any(|x| x) && [].into_iter().all(|x| x)
20332         {
20333             self.features_fault_ext = Some(Default::default());
20334             let member = self.features_fault_ext.as_mut().unwrap();
20335             member.p_next = head.p_next;
20336             head.p_next = member as *mut _ as _;
20337         }
20338         if [device_extensions.ext_fragment_density_map2]
20339             .into_iter()
20340             .any(|x| x)
20341             && [].into_iter().all(|x| x)
20342         {
20343             self.features_fragment_density_map2_ext = Some(Default::default());
20344             let member = self.features_fragment_density_map2_ext.as_mut().unwrap();
20345             member.p_next = head.p_next;
20346             head.p_next = member as *mut _ as _;
20347         }
20348         if [device_extensions.ext_fragment_density_map]
20349             .into_iter()
20350             .any(|x| x)
20351             && [].into_iter().all(|x| x)
20352         {
20353             self.features_fragment_density_map_ext = Some(Default::default());
20354             let member = self.features_fragment_density_map_ext.as_mut().unwrap();
20355             member.p_next = head.p_next;
20356             head.p_next = member as *mut _ as _;
20357         }
20358         if [device_extensions.ext_fragment_shader_interlock]
20359             .into_iter()
20360             .any(|x| x)
20361             && [].into_iter().all(|x| x)
20362         {
20363             self.features_fragment_shader_interlock_ext = Some(Default::default());
20364             let member = self
20365                 .features_fragment_shader_interlock_ext
20366                 .as_mut()
20367                 .unwrap();
20368             member.p_next = head.p_next;
20369             head.p_next = member as *mut _ as _;
20370         }
20371         if [device_extensions.ext_graphics_pipeline_library]
20372             .into_iter()
20373             .any(|x| x)
20374             && [].into_iter().all(|x| x)
20375         {
20376             self.features_graphics_pipeline_library_ext = Some(Default::default());
20377             let member = self
20378                 .features_graphics_pipeline_library_ext
20379                 .as_mut()
20380                 .unwrap();
20381             member.p_next = head.p_next;
20382             head.p_next = member as *mut _ as _;
20383         }
20384         if [device_extensions.ext_image_2d_view_of_3d]
20385             .into_iter()
20386             .any(|x| x)
20387             && [].into_iter().all(|x| x)
20388         {
20389             self.features_image2_d_view_of3_d_ext = Some(Default::default());
20390             let member = self.features_image2_d_view_of3_d_ext.as_mut().unwrap();
20391             member.p_next = head.p_next;
20392             head.p_next = member as *mut _ as _;
20393         }
20394         if [device_extensions.ext_image_compression_control]
20395             .into_iter()
20396             .any(|x| x)
20397             && [].into_iter().all(|x| x)
20398         {
20399             self.features_image_compression_control_ext = Some(Default::default());
20400             let member = self
20401                 .features_image_compression_control_ext
20402                 .as_mut()
20403                 .unwrap();
20404             member.p_next = head.p_next;
20405             head.p_next = member as *mut _ as _;
20406         }
20407         if [device_extensions.ext_image_compression_control_swapchain]
20408             .into_iter()
20409             .any(|x| x)
20410             && [].into_iter().all(|x| x)
20411         {
20412             self.features_image_compression_control_swapchain_ext = Some(Default::default());
20413             let member = self
20414                 .features_image_compression_control_swapchain_ext
20415                 .as_mut()
20416                 .unwrap();
20417             member.p_next = head.p_next;
20418             head.p_next = member as *mut _ as _;
20419         }
20420         if [device_extensions.ext_image_view_min_lod]
20421             .into_iter()
20422             .any(|x| x)
20423             && [].into_iter().all(|x| x)
20424         {
20425             self.features_image_view_min_lod_ext = Some(Default::default());
20426             let member = self.features_image_view_min_lod_ext.as_mut().unwrap();
20427             member.p_next = head.p_next;
20428             head.p_next = member as *mut _ as _;
20429         }
20430         if [device_extensions.ext_index_type_uint8]
20431             .into_iter()
20432             .any(|x| x)
20433             && [].into_iter().all(|x| x)
20434         {
20435             self.features_index_type_uint8_ext = Some(Default::default());
20436             let member = self.features_index_type_uint8_ext.as_mut().unwrap();
20437             member.p_next = head.p_next;
20438             head.p_next = member as *mut _ as _;
20439         }
20440         if [device_extensions.ext_legacy_dithering]
20441             .into_iter()
20442             .any(|x| x)
20443             && [].into_iter().all(|x| x)
20444         {
20445             self.features_legacy_dithering_ext = Some(Default::default());
20446             let member = self.features_legacy_dithering_ext.as_mut().unwrap();
20447             member.p_next = head.p_next;
20448             head.p_next = member as *mut _ as _;
20449         }
20450         if [device_extensions.ext_line_rasterization]
20451             .into_iter()
20452             .any(|x| x)
20453             && [].into_iter().all(|x| x)
20454         {
20455             self.features_line_rasterization_ext = Some(Default::default());
20456             let member = self.features_line_rasterization_ext.as_mut().unwrap();
20457             member.p_next = head.p_next;
20458             head.p_next = member as *mut _ as _;
20459         }
20460         if [device_extensions.ext_memory_priority]
20461             .into_iter()
20462             .any(|x| x)
20463             && [].into_iter().all(|x| x)
20464         {
20465             self.features_memory_priority_ext = Some(Default::default());
20466             let member = self.features_memory_priority_ext.as_mut().unwrap();
20467             member.p_next = head.p_next;
20468             head.p_next = member as *mut _ as _;
20469         }
20470         if [device_extensions.ext_mesh_shader].into_iter().any(|x| x) && [].into_iter().all(|x| x) {
20471             self.features_mesh_shader_ext = Some(Default::default());
20472             let member = self.features_mesh_shader_ext.as_mut().unwrap();
20473             member.p_next = head.p_next;
20474             head.p_next = member as *mut _ as _;
20475         }
20476         if [device_extensions.ext_multi_draw].into_iter().any(|x| x) && [].into_iter().all(|x| x) {
20477             self.features_multi_draw_ext = Some(Default::default());
20478             let member = self.features_multi_draw_ext.as_mut().unwrap();
20479             member.p_next = head.p_next;
20480             head.p_next = member as *mut _ as _;
20481         }
20482         if [device_extensions.ext_multisampled_render_to_single_sampled]
20483             .into_iter()
20484             .any(|x| x)
20485             && [].into_iter().all(|x| x)
20486         {
20487             self.features_multisampled_render_to_single_sampled_ext = Some(Default::default());
20488             let member = self
20489                 .features_multisampled_render_to_single_sampled_ext
20490                 .as_mut()
20491                 .unwrap();
20492             member.p_next = head.p_next;
20493             head.p_next = member as *mut _ as _;
20494         }
20495         if [
20496             device_extensions.ext_mutable_descriptor_type,
20497             device_extensions.valve_mutable_descriptor_type,
20498         ]
20499         .into_iter()
20500         .any(|x| x)
20501             && [].into_iter().all(|x| x)
20502         {
20503             self.features_mutable_descriptor_type_ext = Some(Default::default());
20504             let member = self.features_mutable_descriptor_type_ext.as_mut().unwrap();
20505             member.p_next = head.p_next;
20506             head.p_next = member as *mut _ as _;
20507         }
20508         if [device_extensions.ext_non_seamless_cube_map]
20509             .into_iter()
20510             .any(|x| x)
20511             && [].into_iter().all(|x| x)
20512         {
20513             self.features_non_seamless_cube_map_ext = Some(Default::default());
20514             let member = self.features_non_seamless_cube_map_ext.as_mut().unwrap();
20515             member.p_next = head.p_next;
20516             head.p_next = member as *mut _ as _;
20517         }
20518         if [device_extensions.ext_opacity_micromap]
20519             .into_iter()
20520             .any(|x| x)
20521             && [].into_iter().all(|x| x)
20522         {
20523             self.features_opacity_micromap_ext = Some(Default::default());
20524             let member = self.features_opacity_micromap_ext.as_mut().unwrap();
20525             member.p_next = head.p_next;
20526             head.p_next = member as *mut _ as _;
20527         }
20528         if [device_extensions.ext_pageable_device_local_memory]
20529             .into_iter()
20530             .any(|x| x)
20531             && [].into_iter().all(|x| x)
20532         {
20533             self.features_pageable_device_local_memory_ext = Some(Default::default());
20534             let member = self
20535                 .features_pageable_device_local_memory_ext
20536                 .as_mut()
20537                 .unwrap();
20538             member.p_next = head.p_next;
20539             head.p_next = member as *mut _ as _;
20540         }
20541         if [device_extensions.ext_pipeline_properties]
20542             .into_iter()
20543             .any(|x| x)
20544             && [].into_iter().all(|x| x)
20545         {
20546             self.features_pipeline_properties_ext = Some(Default::default());
20547             let member = self.features_pipeline_properties_ext.as_mut().unwrap();
20548             member.p_next = head.p_next;
20549             head.p_next = member as *mut _ as _;
20550         }
20551         if [device_extensions.ext_pipeline_protected_access]
20552             .into_iter()
20553             .any(|x| x)
20554             && [].into_iter().all(|x| x)
20555         {
20556             self.features_pipeline_protected_access_ext = Some(Default::default());
20557             let member = self
20558                 .features_pipeline_protected_access_ext
20559                 .as_mut()
20560                 .unwrap();
20561             member.p_next = head.p_next;
20562             head.p_next = member as *mut _ as _;
20563         }
20564         if [device_extensions.ext_pipeline_robustness]
20565             .into_iter()
20566             .any(|x| x)
20567             && [].into_iter().all(|x| x)
20568         {
20569             self.features_pipeline_robustness_ext = Some(Default::default());
20570             let member = self.features_pipeline_robustness_ext.as_mut().unwrap();
20571             member.p_next = head.p_next;
20572             head.p_next = member as *mut _ as _;
20573         }
20574         if [device_extensions.ext_primitive_topology_list_restart]
20575             .into_iter()
20576             .any(|x| x)
20577             && [].into_iter().all(|x| x)
20578         {
20579             self.features_primitive_topology_list_restart_ext = Some(Default::default());
20580             let member = self
20581                 .features_primitive_topology_list_restart_ext
20582                 .as_mut()
20583                 .unwrap();
20584             member.p_next = head.p_next;
20585             head.p_next = member as *mut _ as _;
20586         }
20587         if [device_extensions.ext_primitives_generated_query]
20588             .into_iter()
20589             .any(|x| x)
20590             && [].into_iter().all(|x| x)
20591         {
20592             self.features_primitives_generated_query_ext = Some(Default::default());
20593             let member = self
20594                 .features_primitives_generated_query_ext
20595                 .as_mut()
20596                 .unwrap();
20597             member.p_next = head.p_next;
20598             head.p_next = member as *mut _ as _;
20599         }
20600         if [device_extensions.ext_provoking_vertex]
20601             .into_iter()
20602             .any(|x| x)
20603             && [].into_iter().all(|x| x)
20604         {
20605             self.features_provoking_vertex_ext = Some(Default::default());
20606             let member = self.features_provoking_vertex_ext.as_mut().unwrap();
20607             member.p_next = head.p_next;
20608             head.p_next = member as *mut _ as _;
20609         }
20610         if [device_extensions.ext_rgba10x6_formats]
20611             .into_iter()
20612             .any(|x| x)
20613             && [].into_iter().all(|x| x)
20614         {
20615             self.features_rgba10x6_formats_ext = Some(Default::default());
20616             let member = self.features_rgba10x6_formats_ext.as_mut().unwrap();
20617             member.p_next = head.p_next;
20618             head.p_next = member as *mut _ as _;
20619         }
20620         if [
20621             device_extensions.ext_rasterization_order_attachment_access,
20622             device_extensions.arm_rasterization_order_attachment_access,
20623         ]
20624         .into_iter()
20625         .any(|x| x)
20626             && [].into_iter().all(|x| x)
20627         {
20628             self.features_rasterization_order_attachment_access_ext = Some(Default::default());
20629             let member = self
20630                 .features_rasterization_order_attachment_access_ext
20631                 .as_mut()
20632                 .unwrap();
20633             member.p_next = head.p_next;
20634             head.p_next = member as *mut _ as _;
20635         }
20636         if [device_extensions.ext_robustness2].into_iter().any(|x| x) && [].into_iter().all(|x| x) {
20637             self.features_robustness2_ext = Some(Default::default());
20638             let member = self.features_robustness2_ext.as_mut().unwrap();
20639             member.p_next = head.p_next;
20640             head.p_next = member as *mut _ as _;
20641         }
20642         if [device_extensions.ext_shader_atomic_float2]
20643             .into_iter()
20644             .any(|x| x)
20645             && [].into_iter().all(|x| x)
20646         {
20647             self.features_shader_atomic_float2_ext = Some(Default::default());
20648             let member = self.features_shader_atomic_float2_ext.as_mut().unwrap();
20649             member.p_next = head.p_next;
20650             head.p_next = member as *mut _ as _;
20651         }
20652         if [device_extensions.ext_shader_atomic_float]
20653             .into_iter()
20654             .any(|x| x)
20655             && [].into_iter().all(|x| x)
20656         {
20657             self.features_shader_atomic_float_ext = Some(Default::default());
20658             let member = self.features_shader_atomic_float_ext.as_mut().unwrap();
20659             member.p_next = head.p_next;
20660             head.p_next = member as *mut _ as _;
20661         }
20662         if [device_extensions.ext_shader_image_atomic_int64]
20663             .into_iter()
20664             .any(|x| x)
20665             && [].into_iter().all(|x| x)
20666         {
20667             self.features_shader_image_atomic_int64_ext = Some(Default::default());
20668             let member = self
20669                 .features_shader_image_atomic_int64_ext
20670                 .as_mut()
20671                 .unwrap();
20672             member.p_next = head.p_next;
20673             head.p_next = member as *mut _ as _;
20674         }
20675         if [device_extensions.ext_shader_module_identifier]
20676             .into_iter()
20677             .any(|x| x)
20678             && [].into_iter().all(|x| x)
20679         {
20680             self.features_shader_module_identifier_ext = Some(Default::default());
20681             let member = self.features_shader_module_identifier_ext.as_mut().unwrap();
20682             member.p_next = head.p_next;
20683             head.p_next = member as *mut _ as _;
20684         }
20685         if [device_extensions.ext_subpass_merge_feedback]
20686             .into_iter()
20687             .any(|x| x)
20688             && [].into_iter().all(|x| x)
20689         {
20690             self.features_subpass_merge_feedback_ext = Some(Default::default());
20691             let member = self.features_subpass_merge_feedback_ext.as_mut().unwrap();
20692             member.p_next = head.p_next;
20693             head.p_next = member as *mut _ as _;
20694         }
20695         if [device_extensions.ext_swapchain_maintenance1]
20696             .into_iter()
20697             .any(|x| x)
20698             && [].into_iter().all(|x| x)
20699         {
20700             self.features_swapchain_maintenance1_ext = Some(Default::default());
20701             let member = self.features_swapchain_maintenance1_ext.as_mut().unwrap();
20702             member.p_next = head.p_next;
20703             head.p_next = member as *mut _ as _;
20704         }
20705         if [device_extensions.ext_texel_buffer_alignment]
20706             .into_iter()
20707             .any(|x| x)
20708             && [].into_iter().all(|x| x)
20709         {
20710             self.features_texel_buffer_alignment_ext = Some(Default::default());
20711             let member = self.features_texel_buffer_alignment_ext.as_mut().unwrap();
20712             member.p_next = head.p_next;
20713             head.p_next = member as *mut _ as _;
20714         }
20715         if [device_extensions.ext_transform_feedback]
20716             .into_iter()
20717             .any(|x| x)
20718             && [].into_iter().all(|x| x)
20719         {
20720             self.features_transform_feedback_ext = Some(Default::default());
20721             let member = self.features_transform_feedback_ext.as_mut().unwrap();
20722             member.p_next = head.p_next;
20723             head.p_next = member as *mut _ as _;
20724         }
20725         if [device_extensions.ext_vertex_attribute_divisor]
20726             .into_iter()
20727             .any(|x| x)
20728             && [].into_iter().all(|x| x)
20729         {
20730             self.features_vertex_attribute_divisor_ext = Some(Default::default());
20731             let member = self.features_vertex_attribute_divisor_ext.as_mut().unwrap();
20732             member.p_next = head.p_next;
20733             head.p_next = member as *mut _ as _;
20734         }
20735         if [device_extensions.ext_vertex_input_dynamic_state]
20736             .into_iter()
20737             .any(|x| x)
20738             && [].into_iter().all(|x| x)
20739         {
20740             self.features_vertex_input_dynamic_state_ext = Some(Default::default());
20741             let member = self
20742                 .features_vertex_input_dynamic_state_ext
20743                 .as_mut()
20744                 .unwrap();
20745             member.p_next = head.p_next;
20746             head.p_next = member as *mut _ as _;
20747         }
20748         if [device_extensions.ext_ycbcr_2plane_444_formats]
20749             .into_iter()
20750             .any(|x| x)
20751             && [].into_iter().all(|x| x)
20752         {
20753             self.features_ycbcr2_plane444_formats_ext = Some(Default::default());
20754             let member = self.features_ycbcr2_plane444_formats_ext.as_mut().unwrap();
20755             member.p_next = head.p_next;
20756             head.p_next = member as *mut _ as _;
20757         }
20758         if [device_extensions.ext_ycbcr_image_arrays]
20759             .into_iter()
20760             .any(|x| x)
20761             && [].into_iter().all(|x| x)
20762         {
20763             self.features_ycbcr_image_arrays_ext = Some(Default::default());
20764             let member = self.features_ycbcr_image_arrays_ext.as_mut().unwrap();
20765             member.p_next = head.p_next;
20766             head.p_next = member as *mut _ as _;
20767         }
20768         if [device_extensions.sec_amigo_profiling]
20769             .into_iter()
20770             .any(|x| x)
20771             && [].into_iter().all(|x| x)
20772         {
20773             self.features_amigo_profiling_sec = Some(Default::default());
20774             let member = self.features_amigo_profiling_sec.as_mut().unwrap();
20775             member.p_next = head.p_next;
20776             head.p_next = member as *mut _ as _;
20777         }
20778         if [device_extensions.amd_device_coherent_memory]
20779             .into_iter()
20780             .any(|x| x)
20781             && [].into_iter().all(|x| x)
20782         {
20783             self.features_coherent_memory_amd = Some(Default::default());
20784             let member = self.features_coherent_memory_amd.as_mut().unwrap();
20785             member.p_next = head.p_next;
20786             head.p_next = member as *mut _ as _;
20787         }
20788         if [device_extensions.nv_compute_shader_derivatives]
20789             .into_iter()
20790             .any(|x| x)
20791             && [].into_iter().all(|x| x)
20792         {
20793             self.features_compute_shader_derivatives_nv = Some(Default::default());
20794             let member = self
20795                 .features_compute_shader_derivatives_nv
20796                 .as_mut()
20797                 .unwrap();
20798             member.p_next = head.p_next;
20799             head.p_next = member as *mut _ as _;
20800         }
20801         if [device_extensions.nv_cooperative_matrix]
20802             .into_iter()
20803             .any(|x| x)
20804             && [].into_iter().all(|x| x)
20805         {
20806             self.features_cooperative_matrix_nv = Some(Default::default());
20807             let member = self.features_cooperative_matrix_nv.as_mut().unwrap();
20808             member.p_next = head.p_next;
20809             head.p_next = member as *mut _ as _;
20810         }
20811         if [device_extensions.nv_copy_memory_indirect]
20812             .into_iter()
20813             .any(|x| x)
20814             && [].into_iter().all(|x| x)
20815         {
20816             self.features_copy_memory_indirect_nv = Some(Default::default());
20817             let member = self.features_copy_memory_indirect_nv.as_mut().unwrap();
20818             member.p_next = head.p_next;
20819             head.p_next = member as *mut _ as _;
20820         }
20821         if [device_extensions.nv_corner_sampled_image]
20822             .into_iter()
20823             .any(|x| x)
20824             && [].into_iter().all(|x| x)
20825         {
20826             self.features_corner_sampled_image_nv = Some(Default::default());
20827             let member = self.features_corner_sampled_image_nv.as_mut().unwrap();
20828             member.p_next = head.p_next;
20829             head.p_next = member as *mut _ as _;
20830         }
20831         if [device_extensions.nv_coverage_reduction_mode]
20832             .into_iter()
20833             .any(|x| x)
20834             && [].into_iter().all(|x| x)
20835         {
20836             self.features_coverage_reduction_mode_nv = Some(Default::default());
20837             let member = self.features_coverage_reduction_mode_nv.as_mut().unwrap();
20838             member.p_next = head.p_next;
20839             head.p_next = member as *mut _ as _;
20840         }
20841         if [device_extensions.nv_dedicated_allocation_image_aliasing]
20842             .into_iter()
20843             .any(|x| x)
20844             && [].into_iter().all(|x| x)
20845         {
20846             self.features_dedicated_allocation_image_aliasing_nv = Some(Default::default());
20847             let member = self
20848                 .features_dedicated_allocation_image_aliasing_nv
20849                 .as_mut()
20850                 .unwrap();
20851             member.p_next = head.p_next;
20852             head.p_next = member as *mut _ as _;
20853         }
20854         if [device_extensions.valve_descriptor_set_host_mapping]
20855             .into_iter()
20856             .any(|x| x)
20857             && [].into_iter().all(|x| x)
20858         {
20859             self.features_descriptor_set_host_mapping_valve = Some(Default::default());
20860             let member = self
20861                 .features_descriptor_set_host_mapping_valve
20862                 .as_mut()
20863                 .unwrap();
20864             member.p_next = head.p_next;
20865             head.p_next = member as *mut _ as _;
20866         }
20867         if [device_extensions.nv_device_generated_commands]
20868             .into_iter()
20869             .any(|x| x)
20870             && [].into_iter().all(|x| x)
20871         {
20872             self.features_device_generated_commands_nv = Some(Default::default());
20873             let member = self.features_device_generated_commands_nv.as_mut().unwrap();
20874             member.p_next = head.p_next;
20875             head.p_next = member as *mut _ as _;
20876         }
20877         if [device_extensions.nv_device_diagnostics_config]
20878             .into_iter()
20879             .any(|x| x)
20880             && [].into_iter().all(|x| x)
20881         {
20882             self.features_diagnostics_config_nv = Some(Default::default());
20883             let member = self.features_diagnostics_config_nv.as_mut().unwrap();
20884             member.p_next = head.p_next;
20885             head.p_next = member as *mut _ as _;
20886         }
20887         if [device_extensions.nv_scissor_exclusive]
20888             .into_iter()
20889             .any(|x| x)
20890             && [].into_iter().all(|x| x)
20891         {
20892             self.features_exclusive_scissor_nv = Some(Default::default());
20893             let member = self.features_exclusive_scissor_nv.as_mut().unwrap();
20894             member.p_next = head.p_next;
20895             head.p_next = member as *mut _ as _;
20896         }
20897         if [device_extensions.nv_external_memory_rdma]
20898             .into_iter()
20899             .any(|x| x)
20900             && [].into_iter().all(|x| x)
20901         {
20902             self.features_external_memory_rdma_nv = Some(Default::default());
20903             let member = self.features_external_memory_rdma_nv.as_mut().unwrap();
20904             member.p_next = head.p_next;
20905             head.p_next = member as *mut _ as _;
20906         }
20907         if [device_extensions.qcom_fragment_density_map_offset]
20908             .into_iter()
20909             .any(|x| x)
20910             && [].into_iter().all(|x| x)
20911         {
20912             self.features_fragment_density_map_offset_qcom = Some(Default::default());
20913             let member = self
20914                 .features_fragment_density_map_offset_qcom
20915                 .as_mut()
20916                 .unwrap();
20917             member.p_next = head.p_next;
20918             head.p_next = member as *mut _ as _;
20919         }
20920         if [device_extensions.nv_fragment_shading_rate_enums]
20921             .into_iter()
20922             .any(|x| x)
20923             && [].into_iter().all(|x| x)
20924         {
20925             self.features_fragment_shading_rate_enums_nv = Some(Default::default());
20926             let member = self
20927                 .features_fragment_shading_rate_enums_nv
20928                 .as_mut()
20929                 .unwrap();
20930             member.p_next = head.p_next;
20931             head.p_next = member as *mut _ as _;
20932         }
20933         if [device_extensions.qcom_image_processing]
20934             .into_iter()
20935             .any(|x| x)
20936             && [].into_iter().all(|x| x)
20937         {
20938             self.features_image_processing_qcom = Some(Default::default());
20939             let member = self.features_image_processing_qcom.as_mut().unwrap();
20940             member.p_next = head.p_next;
20941             head.p_next = member as *mut _ as _;
20942         }
20943         if [device_extensions.nv_inherited_viewport_scissor]
20944             .into_iter()
20945             .any(|x| x)
20946             && [].into_iter().all(|x| x)
20947         {
20948             self.features_inherited_viewport_scissor_nv = Some(Default::default());
20949             let member = self
20950                 .features_inherited_viewport_scissor_nv
20951                 .as_mut()
20952                 .unwrap();
20953             member.p_next = head.p_next;
20954             head.p_next = member as *mut _ as _;
20955         }
20956         if [device_extensions.huawei_invocation_mask]
20957             .into_iter()
20958             .any(|x| x)
20959             && [].into_iter().all(|x| x)
20960         {
20961             self.features_invocation_mask_huawei = Some(Default::default());
20962             let member = self.features_invocation_mask_huawei.as_mut().unwrap();
20963             member.p_next = head.p_next;
20964             head.p_next = member as *mut _ as _;
20965         }
20966         if [device_extensions.nv_linear_color_attachment]
20967             .into_iter()
20968             .any(|x| x)
20969             && [].into_iter().all(|x| x)
20970         {
20971             self.features_linear_color_attachment_nv = Some(Default::default());
20972             let member = self.features_linear_color_attachment_nv.as_mut().unwrap();
20973             member.p_next = head.p_next;
20974             head.p_next = member as *mut _ as _;
20975         }
20976         if [device_extensions.nv_memory_decompression]
20977             .into_iter()
20978             .any(|x| x)
20979             && [].into_iter().all(|x| x)
20980         {
20981             self.features_memory_decompression_nv = Some(Default::default());
20982             let member = self.features_memory_decompression_nv.as_mut().unwrap();
20983             member.p_next = head.p_next;
20984             head.p_next = member as *mut _ as _;
20985         }
20986         if [device_extensions.nv_mesh_shader].into_iter().any(|x| x)
20987             && [self.features_mesh_shader_ext.is_none()]
20988                 .into_iter()
20989                 .all(|x| x)
20990         {
20991             self.features_mesh_shader_nv = Some(Default::default());
20992             let member = self.features_mesh_shader_nv.as_mut().unwrap();
20993             member.p_next = head.p_next;
20994             head.p_next = member as *mut _ as _;
20995         }
20996         if [device_extensions.qcom_multiview_per_view_viewports]
20997             .into_iter()
20998             .any(|x| x)
20999             && [].into_iter().all(|x| x)
21000         {
21001             self.features_multiview_per_view_viewports_qcom = Some(Default::default());
21002             let member = self
21003                 .features_multiview_per_view_viewports_qcom
21004                 .as_mut()
21005                 .unwrap();
21006             member.p_next = head.p_next;
21007             head.p_next = member as *mut _ as _;
21008         }
21009         if [device_extensions.nv_optical_flow].into_iter().any(|x| x) && [].into_iter().all(|x| x) {
21010             self.features_optical_flow_nv = Some(Default::default());
21011             let member = self.features_optical_flow_nv.as_mut().unwrap();
21012             member.p_next = head.p_next;
21013             head.p_next = member as *mut _ as _;
21014         }
21015         if [device_extensions.nv_present_barrier]
21016             .into_iter()
21017             .any(|x| x)
21018             && [].into_iter().all(|x| x)
21019         {
21020             self.features_present_barrier_nv = Some(Default::default());
21021             let member = self.features_present_barrier_nv.as_mut().unwrap();
21022             member.p_next = head.p_next;
21023             head.p_next = member as *mut _ as _;
21024         }
21025         if [device_extensions.nv_ray_tracing_invocation_reorder]
21026             .into_iter()
21027             .any(|x| x)
21028             && [].into_iter().all(|x| x)
21029         {
21030             self.features_ray_tracing_invocation_reorder_nv = Some(Default::default());
21031             let member = self
21032                 .features_ray_tracing_invocation_reorder_nv
21033                 .as_mut()
21034                 .unwrap();
21035             member.p_next = head.p_next;
21036             head.p_next = member as *mut _ as _;
21037         }
21038         if [device_extensions.nv_ray_tracing_motion_blur]
21039             .into_iter()
21040             .any(|x| x)
21041             && [].into_iter().all(|x| x)
21042         {
21043             self.features_ray_tracing_motion_blur_nv = Some(Default::default());
21044             let member = self.features_ray_tracing_motion_blur_nv.as_mut().unwrap();
21045             member.p_next = head.p_next;
21046             head.p_next = member as *mut _ as _;
21047         }
21048         if [device_extensions.nv_representative_fragment_test]
21049             .into_iter()
21050             .any(|x| x)
21051             && [].into_iter().all(|x| x)
21052         {
21053             self.features_representative_fragment_test_nv = Some(Default::default());
21054             let member = self
21055                 .features_representative_fragment_test_nv
21056                 .as_mut()
21057                 .unwrap();
21058             member.p_next = head.p_next;
21059             head.p_next = member as *mut _ as _;
21060         }
21061         if [device_extensions.arm_shader_core_builtins]
21062             .into_iter()
21063             .any(|x| x)
21064             && [].into_iter().all(|x| x)
21065         {
21066             self.features_shader_core_builtins_arm = Some(Default::default());
21067             let member = self.features_shader_core_builtins_arm.as_mut().unwrap();
21068             member.p_next = head.p_next;
21069             head.p_next = member as *mut _ as _;
21070         }
21071         if [device_extensions.amd_shader_early_and_late_fragment_tests]
21072             .into_iter()
21073             .any(|x| x)
21074             && [].into_iter().all(|x| x)
21075         {
21076             self.features_shader_early_and_late_fragment_tests_amd = Some(Default::default());
21077             let member = self
21078                 .features_shader_early_and_late_fragment_tests_amd
21079                 .as_mut()
21080                 .unwrap();
21081             member.p_next = head.p_next;
21082             head.p_next = member as *mut _ as _;
21083         }
21084         if [device_extensions.nv_shader_image_footprint]
21085             .into_iter()
21086             .any(|x| x)
21087             && [].into_iter().all(|x| x)
21088         {
21089             self.features_shader_image_footprint_nv = Some(Default::default());
21090             let member = self.features_shader_image_footprint_nv.as_mut().unwrap();
21091             member.p_next = head.p_next;
21092             head.p_next = member as *mut _ as _;
21093         }
21094         if [device_extensions.intel_shader_integer_functions2]
21095             .into_iter()
21096             .any(|x| x)
21097             && [].into_iter().all(|x| x)
21098         {
21099             self.features_shader_integer_functions2_intel = Some(Default::default());
21100             let member = self
21101                 .features_shader_integer_functions2_intel
21102                 .as_mut()
21103                 .unwrap();
21104             member.p_next = head.p_next;
21105             head.p_next = member as *mut _ as _;
21106         }
21107         if [device_extensions.nv_shader_sm_builtins]
21108             .into_iter()
21109             .any(|x| x)
21110             && [].into_iter().all(|x| x)
21111         {
21112             self.features_shader_sm_builtins_nv = Some(Default::default());
21113             let member = self.features_shader_sm_builtins_nv.as_mut().unwrap();
21114             member.p_next = head.p_next;
21115             head.p_next = member as *mut _ as _;
21116         }
21117         if [device_extensions.nv_shading_rate_image]
21118             .into_iter()
21119             .any(|x| x)
21120             && [].into_iter().all(|x| x)
21121         {
21122             self.features_shading_rate_image_nv = Some(Default::default());
21123             let member = self.features_shading_rate_image_nv.as_mut().unwrap();
21124             member.p_next = head.p_next;
21125             head.p_next = member as *mut _ as _;
21126         }
21127         if [device_extensions.huawei_subpass_shading]
21128             .into_iter()
21129             .any(|x| x)
21130             && [].into_iter().all(|x| x)
21131         {
21132             self.features_subpass_shading_huawei = Some(Default::default());
21133             let member = self.features_subpass_shading_huawei.as_mut().unwrap();
21134             member.p_next = head.p_next;
21135             head.p_next = member as *mut _ as _;
21136         }
21137         if [device_extensions.qcom_tile_properties]
21138             .into_iter()
21139             .any(|x| x)
21140             && [].into_iter().all(|x| x)
21141         {
21142             self.features_tile_properties_qcom = Some(Default::default());
21143             let member = self.features_tile_properties_qcom.as_mut().unwrap();
21144             member.p_next = head.p_next;
21145             head.p_next = member as *mut _ as _;
21146         }
21147     }
head_as_ref(&self) -> &ash::vk::PhysicalDeviceFeatures2KHR21148     pub(crate) fn head_as_ref(&self) -> &ash::vk::PhysicalDeviceFeatures2KHR {
21149         &self.features_vulkan10
21150     }
head_as_mut(&mut self) -> &mut ash::vk::PhysicalDeviceFeatures2KHR21151     pub(crate) fn head_as_mut(&mut self) -> &mut ash::vk::PhysicalDeviceFeatures2KHR {
21152         &mut self.features_vulkan10
21153     }
21154 }
21155