// This file is auto-generated by vulkano autogen from vk.xml header version 1.3.238.
// It should not be edited manually. Changes should be made by editing autogen.

#[doc = r" Represents all the features that are available on a physical device or enabled on"]
#[doc = r" a logical device."]
#[doc = r""]
#[doc = r" Note that the `robust_buffer_access` is guaranteed to be supported by all Vulkan"]
#[doc = r" implementations."]
#[doc = r""]
#[doc = r" # Examples"]
#[doc = r""]
#[doc = r" ```"]
#[doc = r" use vulkano::device::Features;"]
#[doc = r" # let physical_device: vulkano::device::physical::PhysicalDevice = return;"]
#[doc = r" let minimal_features = Features {"]
#[doc = r"     geometry_shader: true,"]
#[doc = r"     ..Features::empty()"]
#[doc = r" };"]
#[doc = r""]
#[doc = r" let optimal_features = vulkano::device::Features {"]
#[doc = r"     geometry_shader: true,"]
#[doc = r"     tessellation_shader: true,"]
#[doc = r"     ..Features::empty()"]
#[doc = r" };"]
#[doc = r""]
#[doc = r" if !physical_device.supported_features().is_superset_of(&minimal_features) {"]
#[doc = r#"     panic!("The physical device is not good enough for this application.");"#]
#[doc = r" }"]
#[doc = r""]
#[doc = r" assert!(optimal_features.is_superset_of(&minimal_features));"]
#[doc = r" let features_to_request = optimal_features.intersection(physical_device.supported_features());"]
#[doc = r" ```"]
#[derive(Copy, Clone, PartialEq, Eq, Hash)]
pub struct Features {
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructure)"]
    pub acceleration_structure: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructureCaptureReplay)"]
    pub acceleration_structure_capture_replay: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructureHostCommands)"]
    pub acceleration_structure_host_commands: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructureIndirectBuild)"]
    pub acceleration_structure_indirect_build: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html#features-advancedBlendCoherentOperations)"]
    pub advanced_blend_coherent_operations: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-alphaToOne)"]
    pub alpha_to_one: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAmigoProfilingFeaturesSEC.html#features-amigoProfiling)"]
    pub amigo_profiling: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.html#features-attachmentFeedbackLoopLayout)"]
    pub attachment_feedback_loop_layout: bool,
    #[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)"]
    pub attachment_fragment_shading_rate: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html#features-borderColorSwizzle)"]
    pub border_color_swizzle: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html#features-borderColorSwizzleFromImage)"]
    pub border_color_swizzle_from_image: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-bresenhamLines)"]
    pub bresenham_lines: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-bufferDeviceAddress)"]
    pub buffer_device_address: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-bufferDeviceAddressCaptureReplay)"]
    pub buffer_device_address_capture_replay: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-bufferDeviceAddressMultiDevice)"]
    pub buffer_device_address_multi_device: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html#features-colorWriteEnable)"]
    pub color_write_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html#features-computeDerivativeGroupLinear)"]
    pub compute_derivative_group_linear: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html#features-computeDerivativeGroupQuads)"]
    pub compute_derivative_group_quads: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-computeFullSubgroups)"]
    pub compute_full_subgroups: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html#features-conditionalRendering)"]
    pub conditional_rendering: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-constantAlphaColorBlendFactors)"]
    pub constant_alpha_color_blend_factors: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html#features-cooperativeMatrix)"]
    pub cooperative_matrix: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html#features-cooperativeMatrixRobustBufferAccess)"]
    pub cooperative_matrix_robust_buffer_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html#features-cornerSampledImage)"]
    pub corner_sampled_image: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html#features-coverageReductionMode)"]
    pub coverage_reduction_mode: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html#features-customBorderColorWithoutFormat)"]
    pub custom_border_color_without_format: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html#features-customBorderColors)"]
    pub custom_border_colors: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html#features-decodeModeSharedExponent)"]
    pub decode_mode_shared_exponent: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html#features-dedicatedAllocationImageAliasing)"]
    pub dedicated_allocation_image_aliasing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-depthBiasClamp)"]
    pub depth_bias_clamp: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-depthBounds)"]
    pub depth_bounds: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-depthClamp)"]
    pub depth_clamp: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.html#features-depthClampZeroOne)"]
    pub depth_clamp_zero_one: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html#features-depthClipControl)"]
    pub depth_clip_control: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html#features-depthClipEnable)"]
    pub depth_clip_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-descriptorBindingAccelerationStructureUpdateAfterBind)"]
    pub descriptor_binding_acceleration_structure_update_after_bind: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-descriptorBindingInlineUniformBlockUpdateAfterBind)"]
    pub descriptor_binding_inline_uniform_block_update_after_bind: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingPartiallyBound)"]
    pub descriptor_binding_partially_bound: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingSampledImageUpdateAfterBind)"]
    pub descriptor_binding_sampled_image_update_after_bind: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingStorageBufferUpdateAfterBind)"]
    pub descriptor_binding_storage_buffer_update_after_bind: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingStorageImageUpdateAfterBind)"]
    pub descriptor_binding_storage_image_update_after_bind: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingStorageTexelBufferUpdateAfterBind)"]
    pub descriptor_binding_storage_texel_buffer_update_after_bind: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingUniformBufferUpdateAfterBind)"]
    pub descriptor_binding_uniform_buffer_update_after_bind: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingUniformTexelBufferUpdateAfterBind)"]
    pub descriptor_binding_uniform_texel_buffer_update_after_bind: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingUpdateUnusedWhilePending)"]
    pub descriptor_binding_update_unused_while_pending: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingVariableDescriptorCount)"]
    pub descriptor_binding_variable_descriptor_count: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBuffer)"]
    pub descriptor_buffer: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBufferCaptureReplay)"]
    pub descriptor_buffer_capture_replay: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBufferImageLayoutIgnored)"]
    pub descriptor_buffer_image_layout_ignored: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBufferPushDescriptors)"]
    pub descriptor_buffer_push_descriptors: bool,
    #[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)"]
    pub descriptor_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.html#features-descriptorSetHostMapping)"]
    pub descriptor_set_host_mapping: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html#features-deviceCoherentMemory)"]
    pub device_coherent_memory: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFaultFeaturesEXT.html#features-deviceFault)"]
    pub device_fault: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFaultFeaturesEXT.html#features-deviceFaultVendorBinary)"]
    pub device_fault_vendor_binary: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html#features-deviceGeneratedCommands)"]
    pub device_generated_commands: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html#features-deviceMemoryReport)"]
    pub device_memory_report: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html#features-diagnosticsConfig)"]
    pub diagnostics_config: bool,
    #[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)"]
    pub draw_indirect_count: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-drawIndirectFirstInstance)"]
    pub draw_indirect_first_instance: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-dualSrcBlend)"]
    pub dual_src_blend: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-dynamicRendering)"]
    pub dynamic_rendering: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-events)"]
    pub events: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html#features-exclusiveScissor)"]
    pub exclusive_scissor: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html#features-extendedDynamicState)"]
    pub extended_dynamic_state: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html#features-extendedDynamicState2)"]
    pub extended_dynamic_state2: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html#features-extendedDynamicState2LogicOp)"]
    pub extended_dynamic_state2_logic_op: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html#features-extendedDynamicState2PatchControlPoints)"]
    pub extended_dynamic_state2_patch_control_points: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3AlphaToCoverageEnable)"]
    pub extended_dynamic_state3_alpha_to_coverage_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3AlphaToOneEnable)"]
    pub extended_dynamic_state3_alpha_to_one_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorBlendAdvanced)"]
    pub extended_dynamic_state3_color_blend_advanced: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorBlendEnable)"]
    pub extended_dynamic_state3_color_blend_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorBlendEquation)"]
    pub extended_dynamic_state3_color_blend_equation: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorWriteMask)"]
    pub extended_dynamic_state3_color_write_mask: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ConservativeRasterizationMode)"]
    pub extended_dynamic_state3_conservative_rasterization_mode: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageModulationMode)"]
    pub extended_dynamic_state3_coverage_modulation_mode: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageModulationTable)"]
    pub extended_dynamic_state3_coverage_modulation_table: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageModulationTableEnable)"]
    pub extended_dynamic_state3_coverage_modulation_table_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageReductionMode)"]
    pub extended_dynamic_state3_coverage_reduction_mode: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageToColorEnable)"]
    pub extended_dynamic_state3_coverage_to_color_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageToColorLocation)"]
    pub extended_dynamic_state3_coverage_to_color_location: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3DepthClampEnable)"]
    pub extended_dynamic_state3_depth_clamp_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3DepthClipEnable)"]
    pub extended_dynamic_state3_depth_clip_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3DepthClipNegativeOneToOne)"]
    pub extended_dynamic_state3_depth_clip_negative_one_to_one: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ExtraPrimitiveOverestimationSize)"]
    pub extended_dynamic_state3_extra_primitive_overestimation_size: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3LineRasterizationMode)"]
    pub extended_dynamic_state3_line_rasterization_mode: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3LineStippleEnable)"]
    pub extended_dynamic_state3_line_stipple_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3LogicOpEnable)"]
    pub extended_dynamic_state3_logic_op_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3PolygonMode)"]
    pub extended_dynamic_state3_polygon_mode: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ProvokingVertexMode)"]
    pub extended_dynamic_state3_provoking_vertex_mode: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3RasterizationSamples)"]
    pub extended_dynamic_state3_rasterization_samples: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3RasterizationStream)"]
    pub extended_dynamic_state3_rasterization_stream: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3RepresentativeFragmentTestEnable)"]
    pub extended_dynamic_state3_representative_fragment_test_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3SampleLocationsEnable)"]
    pub extended_dynamic_state3_sample_locations_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3SampleMask)"]
    pub extended_dynamic_state3_sample_mask: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ShadingRateImageEnable)"]
    pub extended_dynamic_state3_shading_rate_image_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3TessellationDomainOrigin)"]
    pub extended_dynamic_state3_tessellation_domain_origin: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ViewportSwizzle)"]
    pub extended_dynamic_state3_viewport_swizzle: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ViewportWScalingEnable)"]
    pub extended_dynamic_state3_viewport_w_scaling_enable: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html#features-externalMemoryRDMA)"]
    pub external_memory_rdma: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-fillModeNonSolid)"]
    pub fill_mode_non_solid: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html#features-formatA4B4G4R4)"]
    pub format_a4b4g4r4: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html#features-formatA4R4G4B4)"]
    pub format_a4r4g4b4: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html#features-formatRgba10x6WithoutYCbCrSampler)"]
    pub format_rgba10x6_without_y_cb_cr_sampler: bool,
    #[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)"]
    pub fragment_density_map: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html#features-fragmentDensityMapDeferred)"]
    pub fragment_density_map_deferred: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html#features-fragmentDensityMapDynamic)"]
    pub fragment_density_map_dynamic: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html#features-fragmentDensityMapNonSubsampledImages)"]
    pub fragment_density_map_non_subsampled_images: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.html#features-fragmentDensityMapOffset)"]
    pub fragment_density_map_offset: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.html#features-fragmentShaderBarycentric)"]
    pub fragment_shader_barycentric: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html#features-fragmentShaderPixelInterlock)"]
    pub fragment_shader_pixel_interlock: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html#features-fragmentShaderSampleInterlock)"]
    pub fragment_shader_sample_interlock: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html#features-fragmentShaderShadingRateInterlock)"]
    pub fragment_shader_shading_rate_interlock: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html#features-fragmentShadingRateEnums)"]
    pub fragment_shading_rate_enums: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-fragmentStoresAndAtomics)"]
    pub fragment_stores_and_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-fullDrawIndexUint32)"]
    pub full_draw_index_uint32: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-geometryShader)"]
    pub geometry_shader: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html#features-geometryStreams)"]
    pub geometry_streams: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.html#features-globalPriorityQuery)"]
    pub global_priority_query: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.html#features-graphicsPipelineLibrary)"]
    pub graphics_pipeline_library: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-hostQueryReset)"]
    pub host_query_reset: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html#features-image2DViewOf3D)"]
    pub image2_d_view_of3_d: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageCompressionControlFeaturesEXT.html#features-imageCompressionControl)"]
    pub image_compression_control: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.html#features-imageCompressionControlSwapchain)"]
    pub image_compression_control_swapchain: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-imageCubeArray)"]
    pub image_cube_array: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html#features-imageFootprint)"]
    pub image_footprint: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-imageView2DOn3DImage)"]
    pub image_view2_d_on3_d_image: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-imageViewFormatReinterpretation)"]
    pub image_view_format_reinterpretation: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-imageViewFormatSwizzle)"]
    pub image_view_format_swizzle: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-imagelessFramebuffer)"]
    pub imageless_framebuffer: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-independentBlend)"]
    pub independent_blend: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html#features-indexTypeUint8)"]
    pub index_type_uint8: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.html#features-indirectCopy)"]
    pub indirect_copy: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html#features-inheritedConditionalRendering)"]
    pub inherited_conditional_rendering: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-inheritedQueries)"]
    pub inherited_queries: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html#features-inheritedViewportScissor2D)"]
    pub inherited_viewport_scissor2_d: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-inlineUniformBlock)"]
    pub inline_uniform_block: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html#features-invocationMask)"]
    pub invocation_mask: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-largePoints)"]
    pub large_points: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLegacyDitheringFeaturesEXT.html#features-legacyDithering)"]
    pub legacy_dithering: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html#features-linearColorAttachment)"]
    pub linear_color_attachment: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-logicOp)"]
    pub logic_op: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-maintenance4)"]
    pub maintenance4: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesNV.html#features-memoryDecompression)"]
    pub memory_decompression: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html#features-memoryPriority)"]
    pub memory_priority: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-meshShader)"]
    pub mesh_shader: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-meshShaderQueries)"]
    pub mesh_shader_queries: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html#features-micromap)"]
    pub micromap: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html#features-micromapCaptureReplay)"]
    pub micromap_capture_replay: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html#features-micromapHostCommands)"]
    pub micromap_host_commands: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html#features-minLod)"]
    pub min_lod: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html#features-multiDraw)"]
    pub multi_draw: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-multiDrawIndirect)"]
    pub multi_draw_indirect: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-multiViewport)"]
    pub multi_viewport: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-multisampleArrayImage)"]
    pub multisample_array_image: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.html#features-multisampledRenderToSingleSampled)"]
    pub multisampled_render_to_single_sampled: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-multiview)"]
    pub multiview: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-multiviewGeometryShader)"]
    pub multiview_geometry_shader: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-multiviewMeshShader)"]
    pub multiview_mesh_shader: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.html#features-multiviewPerViewViewports)"]
    pub multiview_per_view_viewports: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-multiviewTessellationShader)"]
    pub multiview_tessellation_shader: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-mutableComparisonSamplers)"]
    pub mutable_comparison_samplers: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.html#features-mutableDescriptorType)"]
    pub mutable_descriptor_type: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html#features-noInvocationFragmentShadingRates)"]
    pub no_invocation_fragment_shading_rates: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.html#features-nonSeamlessCubeMap)"]
    pub non_seamless_cube_map: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html#features-nullDescriptor)"]
    pub null_descriptor: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-occlusionQueryPrecise)"]
    pub occlusion_query_precise: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowFeaturesNV.html#features-opticalFlow)"]
    pub optical_flow: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html#features-pageableDeviceLocalMemory)"]
    pub pageable_device_local_memory: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html#features-performanceCounterMultipleQueryPools)"]
    pub performance_counter_multiple_query_pools: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html#features-performanceCounterQueryPools)"]
    pub performance_counter_query_pools: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-pipelineCreationCacheControl)"]
    pub pipeline_creation_cache_control: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html#features-pipelineExecutableInfo)"]
    pub pipeline_executable_info: bool,
    #[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)"]
    pub pipeline_fragment_shading_rate: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelinePropertiesFeaturesEXT.html#features-pipelinePropertiesIdentifier)"]
    pub pipeline_properties_identifier: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.html#features-pipelineProtectedAccess)"]
    pub pipeline_protected_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineRobustnessFeaturesEXT.html#features-pipelineRobustness)"]
    pub pipeline_robustness: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-pipelineStatisticsQuery)"]
    pub pipeline_statistics_query: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-pointPolygons)"]
    pub point_polygons: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePresentBarrierFeaturesNV.html#features-presentBarrier)"]
    pub present_barrier: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html#features-presentId)"]
    pub present_id: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html#features-presentWait)"]
    pub present_wait: bool,
    #[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)"]
    pub primitive_fragment_shading_rate: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-primitiveFragmentShadingRateMeshShader)"]
    pub primitive_fragment_shading_rate_mesh_shader: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html#features-primitiveTopologyListRestart)"]
    pub primitive_topology_list_restart: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html#features-primitiveTopologyPatchListRestart)"]
    pub primitive_topology_patch_list_restart: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html#features-primitivesGeneratedQuery)"]
    pub primitives_generated_query: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html#features-primitivesGeneratedQueryWithNonZeroStreams)"]
    pub primitives_generated_query_with_non_zero_streams: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html#features-primitivesGeneratedQueryWithRasterizerDiscard)"]
    pub primitives_generated_query_with_rasterizer_discard: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-privateData)"]
    pub private_data: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-protectedMemory)"]
    pub protected_memory: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html#features-provokingVertexLast)"]
    pub provoking_vertex_last: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html#features-rasterizationOrderColorAttachmentAccess)"]
    pub rasterization_order_color_attachment_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html#features-rasterizationOrderDepthAttachmentAccess)"]
    pub rasterization_order_depth_attachment_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html#features-rasterizationOrderStencilAttachmentAccess)"]
    pub rasterization_order_stencil_attachment_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html#features-rayQuery)"]
    pub ray_query: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.html#features-rayTracingInvocationReorder)"]
    pub ray_tracing_invocation_reorder: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html#features-rayTracingMaintenance1)"]
    pub ray_tracing_maintenance1: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html#features-rayTracingMotionBlur)"]
    pub ray_tracing_motion_blur: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html#features-rayTracingMotionBlurPipelineTraceRaysIndirect)"]
    pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipeline)"]
    pub ray_tracing_pipeline: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipelineShaderGroupHandleCaptureReplay)"]
    pub ray_tracing_pipeline_shader_group_handle_capture_replay: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed)"]
    pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipelineTraceRaysIndirect)"]
    pub ray_tracing_pipeline_trace_rays_indirect: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html#features-rayTracingPipelineTraceRaysIndirect2)"]
    pub ray_tracing_pipeline_trace_rays_indirect2: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTraversalPrimitiveCulling)"]
    pub ray_traversal_primitive_culling: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-rectangularLines)"]
    pub rectangular_lines: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAddressBindingReportFeaturesEXT.html#features-reportAddressBinding)"]
    pub report_address_binding: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html#features-representativeFragmentTest)"]
    pub representative_fragment_test: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-robustBufferAccess)"]
    pub robust_buffer_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html#features-robustBufferAccess2)"]
    pub robust_buffer_access2: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-robustImageAccess)"]
    pub robust_image_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html#features-robustImageAccess2)"]
    pub robust_image_access2: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-runtimeDescriptorArray)"]
    pub runtime_descriptor_array: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sampleRateShading)"]
    pub sample_rate_shading: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html#features-sampler2DViewOf3D)"]
    pub sampler2_d_view_of3_d: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-samplerAnisotropy)"]
    pub sampler_anisotropy: bool,
    #[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)"]
    pub sampler_filter_minmax: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-samplerMipLodBias)"]
    pub sampler_mip_lod_bias: bool,
    #[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)"]
    pub sampler_mirror_clamp_to_edge: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-samplerYcbcrConversion)"]
    pub sampler_ycbcr_conversion: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-scalarBlockLayout)"]
    pub scalar_block_layout: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-separateDepthStencilLayouts)"]
    pub separate_depth_stencil_layouts: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-separateStencilMaskRef)"]
    pub separate_stencil_mask_ref: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat16AtomicAdd)"]
    pub shader_buffer_float16_atomic_add: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat16AtomicMinMax)"]
    pub shader_buffer_float16_atomic_min_max: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat16Atomics)"]
    pub shader_buffer_float16_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat32AtomicAdd)"]
    pub shader_buffer_float32_atomic_add: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat32AtomicMinMax)"]
    pub shader_buffer_float32_atomic_min_max: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat32Atomics)"]
    pub shader_buffer_float32_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat64AtomicAdd)"]
    pub shader_buffer_float64_atomic_add: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat64AtomicMinMax)"]
    pub shader_buffer_float64_atomic_min_max: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat64Atomics)"]
    pub shader_buffer_float64_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderBufferInt64Atomics)"]
    pub shader_buffer_int64_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderClipDistance)"]
    pub shader_clip_distance: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.html#features-shaderCoreBuiltins)"]
    pub shader_core_builtins: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderCullDistance)"]
    pub shader_cull_distance: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderDemoteToHelperInvocation)"]
    pub shader_demote_to_helper_invocation: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html#features-shaderDeviceClock)"]
    pub shader_device_clock: bool,
    #[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)"]
    pub shader_draw_parameters: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.html#features-shaderEarlyAndLateFragmentTests)"]
    pub shader_early_and_late_fragment_tests: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderFloat16)"]
    pub shader_float16: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderFloat64)"]
    pub shader_float64: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderImageFloat32AtomicAdd)"]
    pub shader_image_float32_atomic_add: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderImageFloat32AtomicMinMax)"]
    pub shader_image_float32_atomic_min_max: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderImageFloat32Atomics)"]
    pub shader_image_float32_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderImageGatherExtended)"]
    pub shader_image_gather_extended: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html#features-shaderImageInt64Atomics)"]
    pub shader_image_int64_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderInputAttachmentArrayDynamicIndexing)"]
    pub shader_input_attachment_array_dynamic_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderInputAttachmentArrayNonUniformIndexing)"]
    pub shader_input_attachment_array_non_uniform_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderInt16)"]
    pub shader_int16: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderInt64)"]
    pub shader_int64: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderInt8)"]
    pub shader_int8: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderIntegerDotProduct)"]
    pub shader_integer_dot_product: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html#features-shaderIntegerFunctions2)"]
    pub shader_integer_functions2: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.html#features-shaderModuleIdentifier)"]
    pub shader_module_identifier: bool,
    #[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)"]
    pub shader_output_layer: bool,
    #[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)"]
    pub shader_output_viewport_index: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderResourceMinLod)"]
    pub shader_resource_min_lod: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderResourceResidency)"]
    pub shader_resource_residency: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-shaderSampleRateInterpolationFunctions)"]
    pub shader_sample_rate_interpolation_functions: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderSampledImageArrayDynamicIndexing)"]
    pub shader_sampled_image_array_dynamic_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderSampledImageArrayNonUniformIndexing)"]
    pub shader_sampled_image_array_non_uniform_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat16AtomicAdd)"]
    pub shader_shared_float16_atomic_add: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat16AtomicMinMax)"]
    pub shader_shared_float16_atomic_min_max: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat16Atomics)"]
    pub shader_shared_float16_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat32AtomicAdd)"]
    pub shader_shared_float32_atomic_add: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat32AtomicMinMax)"]
    pub shader_shared_float32_atomic_min_max: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat32Atomics)"]
    pub shader_shared_float32_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat64AtomicAdd)"]
    pub shader_shared_float64_atomic_add: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat64AtomicMinMax)"]
    pub shader_shared_float64_atomic_min_max: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat64Atomics)"]
    pub shader_shared_float64_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderSharedInt64Atomics)"]
    pub shader_shared_int64_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html#features-shaderSMBuiltins)"]
    pub shader_sm_builtins: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageBufferArrayDynamicIndexing)"]
    pub shader_storage_buffer_array_dynamic_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageBufferArrayNonUniformIndexing)"]
    pub shader_storage_buffer_array_non_uniform_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageArrayDynamicIndexing)"]
    pub shader_storage_image_array_dynamic_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageImageArrayNonUniformIndexing)"]
    pub shader_storage_image_array_non_uniform_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageExtendedFormats)"]
    pub shader_storage_image_extended_formats: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageMultisample)"]
    pub shader_storage_image_multisample: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageReadWithoutFormat)"]
    pub shader_storage_image_read_without_format: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageWriteWithoutFormat)"]
    pub shader_storage_image_write_without_format: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageTexelBufferArrayDynamicIndexing)"]
    pub shader_storage_texel_buffer_array_dynamic_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageTexelBufferArrayNonUniformIndexing)"]
    pub shader_storage_texel_buffer_array_non_uniform_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html#features-shaderSubgroupClock)"]
    pub shader_subgroup_clock: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderSubgroupExtendedTypes)"]
    pub shader_subgroup_extended_types: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html#features-shaderSubgroupUniformControlFlow)"]
    pub shader_subgroup_uniform_control_flow: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderTerminateInvocation)"]
    pub shader_terminate_invocation: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderTessellationAndGeometryPointSize)"]
    pub shader_tessellation_and_geometry_point_size: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderUniformBufferArrayDynamicIndexing)"]
    pub shader_uniform_buffer_array_dynamic_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderUniformBufferArrayNonUniformIndexing)"]
    pub shader_uniform_buffer_array_non_uniform_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderUniformTexelBufferArrayDynamicIndexing)"]
    pub shader_uniform_texel_buffer_array_dynamic_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderUniformTexelBufferArrayNonUniformIndexing)"]
    pub shader_uniform_texel_buffer_array_non_uniform_indexing: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderZeroInitializeWorkgroupMemory)"]
    pub shader_zero_initialize_workgroup_memory: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html#features-shadingRateCoarseSampleOrder)"]
    pub shading_rate_coarse_sample_order: bool,
    #[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)"]
    pub shading_rate_image: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-smoothLines)"]
    pub smooth_lines: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseBinding)"]
    pub sparse_binding: bool,
    #[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)"]
    pub sparse_image_float32_atomic_add: bool,
    #[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)"]
    pub sparse_image_float32_atomic_min_max: bool,
    #[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)"]
    pub sparse_image_float32_atomics: bool,
    #[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)"]
    pub sparse_image_int64_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency16Samples)"]
    pub sparse_residency16_samples: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency2Samples)"]
    pub sparse_residency2_samples: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency4Samples)"]
    pub sparse_residency4_samples: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency8Samples)"]
    pub sparse_residency8_samples: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyAliased)"]
    pub sparse_residency_aliased: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyBuffer)"]
    pub sparse_residency_buffer: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyImage2D)"]
    pub sparse_residency_image2_d: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyImage3D)"]
    pub sparse_residency_image3_d: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-stippledBresenhamLines)"]
    pub stippled_bresenham_lines: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-stippledRectangularLines)"]
    pub stippled_rectangular_lines: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-stippledSmoothLines)"]
    pub stippled_smooth_lines: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-storageBuffer16BitAccess)"]
    pub storage_buffer16_bit_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-storageBuffer8BitAccess)"]
    pub storage_buffer8_bit_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-storageInputOutput16)"]
    pub storage_input_output16: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-storagePushConstant16)"]
    pub storage_push_constant16: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-storagePushConstant8)"]
    pub storage_push_constant8: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-subgroupBroadcastDynamicId)"]
    pub subgroup_broadcast_dynamic_id: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-subgroupSizeControl)"]
    pub subgroup_size_control: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.html#features-subpassMergeFeedback)"]
    pub subpass_merge_feedback: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html#features-subpassShading)"]
    pub subpass_shading: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html#features-supersampleFragmentShadingRates)"]
    pub supersample_fragment_shading_rates: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.html#features-swapchainMaintenance1)"]
    pub swapchain_maintenance1: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-synchronization2)"]
    pub synchronization2: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-taskShader)"]
    pub task_shader: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-tessellationIsolines)"]
    pub tessellation_isolines: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-tessellationPointMode)"]
    pub tessellation_point_mode: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-tessellationShader)"]
    pub tessellation_shader: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html#features-texelBufferAlignment)"]
    pub texel_buffer_alignment: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html#features-textureBlockMatch)"]
    pub texture_block_match: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html#features-textureBoxFilter)"]
    pub texture_box_filter: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-textureCompressionASTC_HDR)"]
    pub texture_compression_astc_hdr: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-textureCompressionASTC_LDR)"]
    pub texture_compression_astc_ldr: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-textureCompressionBC)"]
    pub texture_compression_bc: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-textureCompressionETC2)"]
    pub texture_compression_etc2: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html#features-textureSampleWeighted)"]
    pub texture_sample_weighted: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTilePropertiesFeaturesQCOM.html#features-tileProperties)"]
    pub tile_properties: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-timelineSemaphore)"]
    pub timeline_semaphore: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html#features-transformFeedback)"]
    pub transform_feedback: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html#features-transformFeedbackPreservesProvokingVertex)"]
    pub transform_feedback_preserves_provoking_vertex: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-triangleFans)"]
    pub triangle_fans: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-uniformAndStorageBuffer16BitAccess)"]
    pub uniform_and_storage_buffer16_bit_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-uniformAndStorageBuffer8BitAccess)"]
    pub uniform_and_storage_buffer8_bit_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-uniformBufferStandardLayout)"]
    pub uniform_buffer_standard_layout: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-variableMultisampleRate)"]
    pub variable_multisample_rate: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-variablePointers)"]
    pub variable_pointers: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-variablePointersStorageBuffer)"]
    pub variable_pointers_storage_buffer: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-vertexAttributeAccessBeyondStride)"]
    pub vertex_attribute_access_beyond_stride: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html#features-vertexAttributeInstanceRateDivisor)"]
    pub vertex_attribute_instance_rate_divisor: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html#features-vertexAttributeInstanceRateZeroDivisor)"]
    pub vertex_attribute_instance_rate_zero_divisor: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html#features-vertexInputDynamicState)"]
    pub vertex_input_dynamic_state: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-vertexPipelineStoresAndAtomics)"]
    pub vertex_pipeline_stores_and_atomics: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-vulkanMemoryModel)"]
    pub vulkan_memory_model: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-vulkanMemoryModelAvailabilityVisibilityChains)"]
    pub vulkan_memory_model_availability_visibility_chains: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-vulkanMemoryModelDeviceScope)"]
    pub vulkan_memory_model_device_scope: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-wideLines)"]
    pub wide_lines: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayout)"]
    pub workgroup_memory_explicit_layout: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayout16BitAccess)"]
    pub workgroup_memory_explicit_layout16_bit_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayout8BitAccess)"]
    pub workgroup_memory_explicit_layout8_bit_access: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayoutScalarBlockLayout)"]
    pub workgroup_memory_explicit_layout_scalar_block_layout: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html#features-ycbcr2plane444Formats)"]
    pub ycbcr2plane444_formats: bool,
    #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html#features-ycbcrImageArrays)"]
    pub ycbcr_image_arrays: bool,
    pub _ne: crate::NonExhaustive,
}
impl Default for Features {
    #[inline]
    fn default() -> Self {
        Self::empty()
    }
}
impl Features {
    #[doc = r" Checks enabled features against the device version, device extensions and each"]
    #[doc = r" other."]
    pub(super) fn check_requirements(
        &self,
        supported: &Features,
        api_version: crate::Version,
        extensions: &crate::device::DeviceExtensions,
    ) -> Result<(), crate::device::FeatureRestrictionError> {
        if self.acceleration_structure {
            if !supported.acceleration_structure {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "acceleration_structure",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.acceleration_structure_capture_replay {
            if !supported.acceleration_structure_capture_replay {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "acceleration_structure_capture_replay",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.acceleration_structure_host_commands {
            if !supported.acceleration_structure_host_commands {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "acceleration_structure_host_commands",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.acceleration_structure_indirect_build {
            if !supported.acceleration_structure_indirect_build {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "acceleration_structure_indirect_build",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.advanced_blend_coherent_operations {
            if !supported.advanced_blend_coherent_operations {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "advanced_blend_coherent_operations",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.alpha_to_one {
            if !supported.alpha_to_one {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "alpha_to_one",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.amigo_profiling {
            if !supported.amigo_profiling {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "amigo_profiling",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.attachment_feedback_loop_layout {
            if !supported.attachment_feedback_loop_layout {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "attachment_feedback_loop_layout",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.attachment_fragment_shading_rate {
            if !supported.attachment_fragment_shading_rate {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "attachment_fragment_shading_rate",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
            if self.shading_rate_image {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "attachment_fragment_shading_rate",
                    restriction: crate::device::FeatureRestriction::ConflictsFeature(
                        "shading_rate_image",
                    ),
                });
            }
            if self.fragment_density_map {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "attachment_fragment_shading_rate",
                    restriction: crate::device::FeatureRestriction::ConflictsFeature(
                        "fragment_density_map",
                    ),
                });
            }
        } else {
        }
        if self.border_color_swizzle {
            if !supported.border_color_swizzle {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "border_color_swizzle",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.border_color_swizzle_from_image {
            if !supported.border_color_swizzle_from_image {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "border_color_swizzle_from_image",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.bresenham_lines {
            if !supported.bresenham_lines {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "bresenham_lines",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.buffer_device_address {
            if !supported.buffer_device_address {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "buffer_device_address",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.buffer_device_address_capture_replay {
            if !supported.buffer_device_address_capture_replay {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "buffer_device_address_capture_replay",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.buffer_device_address_multi_device {
            if !supported.buffer_device_address_multi_device {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "buffer_device_address_multi_device",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.color_write_enable {
            if !supported.color_write_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "color_write_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.compute_derivative_group_linear {
            if !supported.compute_derivative_group_linear {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "compute_derivative_group_linear",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.compute_derivative_group_quads {
            if !supported.compute_derivative_group_quads {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "compute_derivative_group_quads",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.compute_full_subgroups {
            if !supported.compute_full_subgroups {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "compute_full_subgroups",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.conditional_rendering {
            if !supported.conditional_rendering {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "conditional_rendering",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.constant_alpha_color_blend_factors {
            if !supported.constant_alpha_color_blend_factors {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "constant_alpha_color_blend_factors",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.cooperative_matrix {
            if !supported.cooperative_matrix {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "cooperative_matrix",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.cooperative_matrix_robust_buffer_access {
            if !supported.cooperative_matrix_robust_buffer_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "cooperative_matrix_robust_buffer_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.corner_sampled_image {
            if !supported.corner_sampled_image {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "corner_sampled_image",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.coverage_reduction_mode {
            if !supported.coverage_reduction_mode {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "coverage_reduction_mode",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.custom_border_color_without_format {
            if !supported.custom_border_color_without_format {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "custom_border_color_without_format",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.custom_border_colors {
            if !supported.custom_border_colors {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "custom_border_colors",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.decode_mode_shared_exponent {
            if !supported.decode_mode_shared_exponent {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "decode_mode_shared_exponent",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.dedicated_allocation_image_aliasing {
            if !supported.dedicated_allocation_image_aliasing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "dedicated_allocation_image_aliasing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.depth_bias_clamp {
            if !supported.depth_bias_clamp {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "depth_bias_clamp",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.depth_bounds {
            if !supported.depth_bounds {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "depth_bounds",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.depth_clamp {
            if !supported.depth_clamp {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "depth_clamp",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.depth_clamp_zero_one {
            if !supported.depth_clamp_zero_one {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "depth_clamp_zero_one",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.depth_clip_control {
            if !supported.depth_clip_control {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "depth_clip_control",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.depth_clip_enable {
            if !supported.depth_clip_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "depth_clip_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_binding_acceleration_structure_update_after_bind {
            if !supported.descriptor_binding_acceleration_structure_update_after_bind {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_binding_acceleration_structure_update_after_bind",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_binding_inline_uniform_block_update_after_bind {
            if !supported.descriptor_binding_inline_uniform_block_update_after_bind {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_binding_inline_uniform_block_update_after_bind",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_binding_partially_bound {
            if !supported.descriptor_binding_partially_bound {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_binding_partially_bound",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_binding_sampled_image_update_after_bind {
            if !supported.descriptor_binding_sampled_image_update_after_bind {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_binding_sampled_image_update_after_bind",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_binding_storage_buffer_update_after_bind {
            if !supported.descriptor_binding_storage_buffer_update_after_bind {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_binding_storage_buffer_update_after_bind",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_binding_storage_image_update_after_bind {
            if !supported.descriptor_binding_storage_image_update_after_bind {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_binding_storage_image_update_after_bind",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_binding_storage_texel_buffer_update_after_bind {
            if !supported.descriptor_binding_storage_texel_buffer_update_after_bind {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_binding_storage_texel_buffer_update_after_bind",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_binding_uniform_buffer_update_after_bind {
            if !supported.descriptor_binding_uniform_buffer_update_after_bind {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_binding_uniform_buffer_update_after_bind",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_binding_uniform_texel_buffer_update_after_bind {
            if !supported.descriptor_binding_uniform_texel_buffer_update_after_bind {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_binding_uniform_texel_buffer_update_after_bind",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_binding_update_unused_while_pending {
            if !supported.descriptor_binding_update_unused_while_pending {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_binding_update_unused_while_pending",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_binding_variable_descriptor_count {
            if !supported.descriptor_binding_variable_descriptor_count {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_binding_variable_descriptor_count",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_buffer {
            if !supported.descriptor_buffer {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_buffer",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_buffer_capture_replay {
            if !supported.descriptor_buffer_capture_replay {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_buffer_capture_replay",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_buffer_image_layout_ignored {
            if !supported.descriptor_buffer_image_layout_ignored {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_buffer_image_layout_ignored",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_buffer_push_descriptors {
            if !supported.descriptor_buffer_push_descriptors {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_buffer_push_descriptors",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.descriptor_indexing {
            if !supported.descriptor_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
            if extensions.ext_descriptor_indexing && api_version >= crate::Version::V1_2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_indexing",
                    restriction: crate::device::FeatureRestriction::RequiredByExtension(
                        "ext_descriptor_indexing",
                    ),
                });
            }
        }
        if self.descriptor_set_host_mapping {
            if !supported.descriptor_set_host_mapping {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "descriptor_set_host_mapping",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.device_coherent_memory {
            if !supported.device_coherent_memory {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "device_coherent_memory",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.device_fault {
            if !supported.device_fault {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "device_fault",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.device_fault_vendor_binary {
            if !supported.device_fault_vendor_binary {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "device_fault_vendor_binary",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.device_generated_commands {
            if !supported.device_generated_commands {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "device_generated_commands",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.device_memory_report {
            if !supported.device_memory_report {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "device_memory_report",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.diagnostics_config {
            if !supported.diagnostics_config {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "diagnostics_config",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.draw_indirect_count {
            if !supported.draw_indirect_count {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "draw_indirect_count",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
            if extensions.khr_draw_indirect_count && api_version >= crate::Version::V1_2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "draw_indirect_count",
                    restriction: crate::device::FeatureRestriction::RequiredByExtension(
                        "khr_draw_indirect_count",
                    ),
                });
            }
        }
        if self.draw_indirect_first_instance {
            if !supported.draw_indirect_first_instance {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "draw_indirect_first_instance",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.dual_src_blend {
            if !supported.dual_src_blend {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "dual_src_blend",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.dynamic_rendering {
            if !supported.dynamic_rendering {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "dynamic_rendering",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.events {
            if !supported.events {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "events",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.exclusive_scissor {
            if !supported.exclusive_scissor {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "exclusive_scissor",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state {
            if !supported.extended_dynamic_state {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state2 {
            if !supported.extended_dynamic_state2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state2",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state2_logic_op {
            if !supported.extended_dynamic_state2_logic_op {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state2_logic_op",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state2_patch_control_points {
            if !supported.extended_dynamic_state2_patch_control_points {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state2_patch_control_points",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_alpha_to_coverage_enable {
            if !supported.extended_dynamic_state3_alpha_to_coverage_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_alpha_to_coverage_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_alpha_to_one_enable {
            if !supported.extended_dynamic_state3_alpha_to_one_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_alpha_to_one_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_color_blend_advanced {
            if !supported.extended_dynamic_state3_color_blend_advanced {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_color_blend_advanced",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_color_blend_enable {
            if !supported.extended_dynamic_state3_color_blend_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_color_blend_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_color_blend_equation {
            if !supported.extended_dynamic_state3_color_blend_equation {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_color_blend_equation",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_color_write_mask {
            if !supported.extended_dynamic_state3_color_write_mask {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_color_write_mask",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_conservative_rasterization_mode {
            if !supported.extended_dynamic_state3_conservative_rasterization_mode {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_conservative_rasterization_mode",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_coverage_modulation_mode {
            if !supported.extended_dynamic_state3_coverage_modulation_mode {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_coverage_modulation_mode",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_coverage_modulation_table {
            if !supported.extended_dynamic_state3_coverage_modulation_table {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_coverage_modulation_table",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_coverage_modulation_table_enable {
            if !supported.extended_dynamic_state3_coverage_modulation_table_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_coverage_modulation_table_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_coverage_reduction_mode {
            if !supported.extended_dynamic_state3_coverage_reduction_mode {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_coverage_reduction_mode",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_coverage_to_color_enable {
            if !supported.extended_dynamic_state3_coverage_to_color_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_coverage_to_color_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_coverage_to_color_location {
            if !supported.extended_dynamic_state3_coverage_to_color_location {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_coverage_to_color_location",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_depth_clamp_enable {
            if !supported.extended_dynamic_state3_depth_clamp_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_depth_clamp_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_depth_clip_enable {
            if !supported.extended_dynamic_state3_depth_clip_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_depth_clip_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_depth_clip_negative_one_to_one {
            if !supported.extended_dynamic_state3_depth_clip_negative_one_to_one {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_depth_clip_negative_one_to_one",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_extra_primitive_overestimation_size {
            if !supported.extended_dynamic_state3_extra_primitive_overestimation_size {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_extra_primitive_overestimation_size",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_line_rasterization_mode {
            if !supported.extended_dynamic_state3_line_rasterization_mode {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_line_rasterization_mode",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_line_stipple_enable {
            if !supported.extended_dynamic_state3_line_stipple_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_line_stipple_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_logic_op_enable {
            if !supported.extended_dynamic_state3_logic_op_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_logic_op_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_polygon_mode {
            if !supported.extended_dynamic_state3_polygon_mode {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_polygon_mode",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_provoking_vertex_mode {
            if !supported.extended_dynamic_state3_provoking_vertex_mode {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_provoking_vertex_mode",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_rasterization_samples {
            if !supported.extended_dynamic_state3_rasterization_samples {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_rasterization_samples",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_rasterization_stream {
            if !supported.extended_dynamic_state3_rasterization_stream {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_rasterization_stream",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_representative_fragment_test_enable {
            if !supported.extended_dynamic_state3_representative_fragment_test_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_representative_fragment_test_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_sample_locations_enable {
            if !supported.extended_dynamic_state3_sample_locations_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_sample_locations_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_sample_mask {
            if !supported.extended_dynamic_state3_sample_mask {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_sample_mask",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_shading_rate_image_enable {
            if !supported.extended_dynamic_state3_shading_rate_image_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_shading_rate_image_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_tessellation_domain_origin {
            if !supported.extended_dynamic_state3_tessellation_domain_origin {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_tessellation_domain_origin",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_viewport_swizzle {
            if !supported.extended_dynamic_state3_viewport_swizzle {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_viewport_swizzle",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.extended_dynamic_state3_viewport_w_scaling_enable {
            if !supported.extended_dynamic_state3_viewport_w_scaling_enable {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "extended_dynamic_state3_viewport_w_scaling_enable",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.external_memory_rdma {
            if !supported.external_memory_rdma {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "external_memory_rdma",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.fill_mode_non_solid {
            if !supported.fill_mode_non_solid {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fill_mode_non_solid",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.format_a4b4g4r4 {
            if !supported.format_a4b4g4r4 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "format_a4b4g4r4",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.format_a4r4g4b4 {
            if !supported.format_a4r4g4b4 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "format_a4r4g4b4",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.format_rgba10x6_without_y_cb_cr_sampler {
            if !supported.format_rgba10x6_without_y_cb_cr_sampler {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "format_rgba10x6_without_y_cb_cr_sampler",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.fragment_density_map {
            if !supported.fragment_density_map {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_density_map",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
            if self.pipeline_fragment_shading_rate {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_density_map",
                    restriction: crate::device::FeatureRestriction::ConflictsFeature(
                        "pipeline_fragment_shading_rate",
                    ),
                });
            }
            if self.primitive_fragment_shading_rate {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_density_map",
                    restriction: crate::device::FeatureRestriction::ConflictsFeature(
                        "primitive_fragment_shading_rate",
                    ),
                });
            }
            if self.attachment_fragment_shading_rate {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_density_map",
                    restriction: crate::device::FeatureRestriction::ConflictsFeature(
                        "attachment_fragment_shading_rate",
                    ),
                });
            }
        } else {
        }
        if self.fragment_density_map_deferred {
            if !supported.fragment_density_map_deferred {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_density_map_deferred",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.fragment_density_map_dynamic {
            if !supported.fragment_density_map_dynamic {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_density_map_dynamic",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.fragment_density_map_non_subsampled_images {
            if !supported.fragment_density_map_non_subsampled_images {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_density_map_non_subsampled_images",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.fragment_density_map_offset {
            if !supported.fragment_density_map_offset {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_density_map_offset",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.fragment_shader_barycentric {
            if !supported.fragment_shader_barycentric {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_shader_barycentric",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.fragment_shader_pixel_interlock {
            if !supported.fragment_shader_pixel_interlock {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_shader_pixel_interlock",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.fragment_shader_sample_interlock {
            if !supported.fragment_shader_sample_interlock {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_shader_sample_interlock",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.fragment_shader_shading_rate_interlock {
            if !supported.fragment_shader_shading_rate_interlock {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_shader_shading_rate_interlock",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.fragment_shading_rate_enums {
            if !supported.fragment_shading_rate_enums {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_shading_rate_enums",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.fragment_stores_and_atomics {
            if !supported.fragment_stores_and_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "fragment_stores_and_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.full_draw_index_uint32 {
            if !supported.full_draw_index_uint32 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "full_draw_index_uint32",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.geometry_shader {
            if !supported.geometry_shader {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "geometry_shader",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.geometry_streams {
            if !supported.geometry_streams {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "geometry_streams",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.global_priority_query {
            if !supported.global_priority_query {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "global_priority_query",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.graphics_pipeline_library {
            if !supported.graphics_pipeline_library {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "graphics_pipeline_library",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.host_query_reset {
            if !supported.host_query_reset {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "host_query_reset",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.image2_d_view_of3_d {
            if !supported.image2_d_view_of3_d {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "image2_d_view_of3_d",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.image_compression_control {
            if !supported.image_compression_control {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "image_compression_control",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.image_compression_control_swapchain {
            if !supported.image_compression_control_swapchain {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "image_compression_control_swapchain",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.image_cube_array {
            if !supported.image_cube_array {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "image_cube_array",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.image_footprint {
            if !supported.image_footprint {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "image_footprint",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.image_view2_d_on3_d_image {
            if !supported.image_view2_d_on3_d_image {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "image_view2_d_on3_d_image",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.image_view_format_reinterpretation {
            if !supported.image_view_format_reinterpretation {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "image_view_format_reinterpretation",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.image_view_format_swizzle {
            if !supported.image_view_format_swizzle {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "image_view_format_swizzle",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.imageless_framebuffer {
            if !supported.imageless_framebuffer {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "imageless_framebuffer",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.independent_blend {
            if !supported.independent_blend {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "independent_blend",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.index_type_uint8 {
            if !supported.index_type_uint8 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "index_type_uint8",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.indirect_copy {
            if !supported.indirect_copy {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "indirect_copy",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.inherited_conditional_rendering {
            if !supported.inherited_conditional_rendering {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "inherited_conditional_rendering",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.inherited_queries {
            if !supported.inherited_queries {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "inherited_queries",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.inherited_viewport_scissor2_d {
            if !supported.inherited_viewport_scissor2_d {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "inherited_viewport_scissor2_d",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.inline_uniform_block {
            if !supported.inline_uniform_block {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "inline_uniform_block",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.invocation_mask {
            if !supported.invocation_mask {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "invocation_mask",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.large_points {
            if !supported.large_points {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "large_points",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.legacy_dithering {
            if !supported.legacy_dithering {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "legacy_dithering",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.linear_color_attachment {
            if !supported.linear_color_attachment {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "linear_color_attachment",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.logic_op {
            if !supported.logic_op {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "logic_op",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.maintenance4 {
            if !supported.maintenance4 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "maintenance4",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.memory_decompression {
            if !supported.memory_decompression {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "memory_decompression",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.memory_priority {
            if !supported.memory_priority {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "memory_priority",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.mesh_shader {
            if !supported.mesh_shader {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "mesh_shader",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.mesh_shader_queries {
            if !supported.mesh_shader_queries {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "mesh_shader_queries",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.micromap {
            if !supported.micromap {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "micromap",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.micromap_capture_replay {
            if !supported.micromap_capture_replay {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "micromap_capture_replay",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.micromap_host_commands {
            if !supported.micromap_host_commands {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "micromap_host_commands",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.min_lod {
            if !supported.min_lod {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "min_lod",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.multi_draw {
            if !supported.multi_draw {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "multi_draw",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.multi_draw_indirect {
            if !supported.multi_draw_indirect {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "multi_draw_indirect",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.multi_viewport {
            if !supported.multi_viewport {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "multi_viewport",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.multisample_array_image {
            if !supported.multisample_array_image {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "multisample_array_image",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.multisampled_render_to_single_sampled {
            if !supported.multisampled_render_to_single_sampled {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "multisampled_render_to_single_sampled",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.multiview {
            if !supported.multiview {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "multiview",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.multiview_geometry_shader {
            if !supported.multiview_geometry_shader {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "multiview_geometry_shader",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.multiview_mesh_shader {
            if !supported.multiview_mesh_shader {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "multiview_mesh_shader",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.multiview_per_view_viewports {
            if !supported.multiview_per_view_viewports {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "multiview_per_view_viewports",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.multiview_tessellation_shader {
            if !supported.multiview_tessellation_shader {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "multiview_tessellation_shader",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.mutable_comparison_samplers {
            if !supported.mutable_comparison_samplers {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "mutable_comparison_samplers",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.mutable_descriptor_type {
            if !supported.mutable_descriptor_type {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "mutable_descriptor_type",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.no_invocation_fragment_shading_rates {
            if !supported.no_invocation_fragment_shading_rates {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "no_invocation_fragment_shading_rates",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.non_seamless_cube_map {
            if !supported.non_seamless_cube_map {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "non_seamless_cube_map",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.null_descriptor {
            if !supported.null_descriptor {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "null_descriptor",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.occlusion_query_precise {
            if !supported.occlusion_query_precise {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "occlusion_query_precise",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.optical_flow {
            if !supported.optical_flow {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "optical_flow",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.pageable_device_local_memory {
            if !supported.pageable_device_local_memory {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "pageable_device_local_memory",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.performance_counter_multiple_query_pools {
            if !supported.performance_counter_multiple_query_pools {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "performance_counter_multiple_query_pools",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.performance_counter_query_pools {
            if !supported.performance_counter_query_pools {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "performance_counter_query_pools",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.pipeline_creation_cache_control {
            if !supported.pipeline_creation_cache_control {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "pipeline_creation_cache_control",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.pipeline_executable_info {
            if !supported.pipeline_executable_info {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "pipeline_executable_info",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.pipeline_fragment_shading_rate {
            if !supported.pipeline_fragment_shading_rate {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "pipeline_fragment_shading_rate",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
            if self.shading_rate_image {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "pipeline_fragment_shading_rate",
                    restriction: crate::device::FeatureRestriction::ConflictsFeature(
                        "shading_rate_image",
                    ),
                });
            }
            if self.fragment_density_map {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "pipeline_fragment_shading_rate",
                    restriction: crate::device::FeatureRestriction::ConflictsFeature(
                        "fragment_density_map",
                    ),
                });
            }
        } else {
        }
        if self.pipeline_properties_identifier {
            if !supported.pipeline_properties_identifier {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "pipeline_properties_identifier",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.pipeline_protected_access {
            if !supported.pipeline_protected_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "pipeline_protected_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.pipeline_robustness {
            if !supported.pipeline_robustness {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "pipeline_robustness",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.pipeline_statistics_query {
            if !supported.pipeline_statistics_query {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "pipeline_statistics_query",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.point_polygons {
            if !supported.point_polygons {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "point_polygons",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.present_barrier {
            if !supported.present_barrier {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "present_barrier",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.present_id {
            if !supported.present_id {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "present_id",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.present_wait {
            if !supported.present_wait {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "present_wait",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.primitive_fragment_shading_rate {
            if !supported.primitive_fragment_shading_rate {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "primitive_fragment_shading_rate",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
            if self.shading_rate_image {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "primitive_fragment_shading_rate",
                    restriction: crate::device::FeatureRestriction::ConflictsFeature(
                        "shading_rate_image",
                    ),
                });
            }
            if self.fragment_density_map {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "primitive_fragment_shading_rate",
                    restriction: crate::device::FeatureRestriction::ConflictsFeature(
                        "fragment_density_map",
                    ),
                });
            }
        } else {
        }
        if self.primitive_fragment_shading_rate_mesh_shader {
            if !supported.primitive_fragment_shading_rate_mesh_shader {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "primitive_fragment_shading_rate_mesh_shader",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.primitive_topology_list_restart {
            if !supported.primitive_topology_list_restart {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "primitive_topology_list_restart",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.primitive_topology_patch_list_restart {
            if !supported.primitive_topology_patch_list_restart {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "primitive_topology_patch_list_restart",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.primitives_generated_query {
            if !supported.primitives_generated_query {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "primitives_generated_query",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.primitives_generated_query_with_non_zero_streams {
            if !supported.primitives_generated_query_with_non_zero_streams {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "primitives_generated_query_with_non_zero_streams",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.primitives_generated_query_with_rasterizer_discard {
            if !supported.primitives_generated_query_with_rasterizer_discard {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "primitives_generated_query_with_rasterizer_discard",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.private_data {
            if !supported.private_data {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "private_data",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.protected_memory {
            if !supported.protected_memory {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "protected_memory",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.provoking_vertex_last {
            if !supported.provoking_vertex_last {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "provoking_vertex_last",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.rasterization_order_color_attachment_access {
            if !supported.rasterization_order_color_attachment_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "rasterization_order_color_attachment_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.rasterization_order_depth_attachment_access {
            if !supported.rasterization_order_depth_attachment_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "rasterization_order_depth_attachment_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.rasterization_order_stencil_attachment_access {
            if !supported.rasterization_order_stencil_attachment_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "rasterization_order_stencil_attachment_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ray_query {
            if !supported.ray_query {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ray_query",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ray_tracing_invocation_reorder {
            if !supported.ray_tracing_invocation_reorder {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ray_tracing_invocation_reorder",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ray_tracing_maintenance1 {
            if !supported.ray_tracing_maintenance1 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ray_tracing_maintenance1",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ray_tracing_motion_blur {
            if !supported.ray_tracing_motion_blur {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ray_tracing_motion_blur",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ray_tracing_motion_blur_pipeline_trace_rays_indirect {
            if !supported.ray_tracing_motion_blur_pipeline_trace_rays_indirect {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ray_tracing_motion_blur_pipeline_trace_rays_indirect",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ray_tracing_pipeline {
            if !supported.ray_tracing_pipeline {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ray_tracing_pipeline",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ray_tracing_pipeline_shader_group_handle_capture_replay {
            if !supported.ray_tracing_pipeline_shader_group_handle_capture_replay {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ray_tracing_pipeline_shader_group_handle_capture_replay",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed {
            if !supported.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ray_tracing_pipeline_shader_group_handle_capture_replay_mixed",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ray_tracing_pipeline_trace_rays_indirect {
            if !supported.ray_tracing_pipeline_trace_rays_indirect {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ray_tracing_pipeline_trace_rays_indirect",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ray_tracing_pipeline_trace_rays_indirect2 {
            if !supported.ray_tracing_pipeline_trace_rays_indirect2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ray_tracing_pipeline_trace_rays_indirect2",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ray_traversal_primitive_culling {
            if !supported.ray_traversal_primitive_culling {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ray_traversal_primitive_culling",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.rectangular_lines {
            if !supported.rectangular_lines {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "rectangular_lines",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.report_address_binding {
            if !supported.report_address_binding {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "report_address_binding",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.representative_fragment_test {
            if !supported.representative_fragment_test {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "representative_fragment_test",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.robust_buffer_access {
            if !supported.robust_buffer_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "robust_buffer_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.robust_buffer_access2 {
            if !supported.robust_buffer_access2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "robust_buffer_access2",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.robust_image_access {
            if !supported.robust_image_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "robust_image_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.robust_image_access2 {
            if !supported.robust_image_access2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "robust_image_access2",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.runtime_descriptor_array {
            if !supported.runtime_descriptor_array {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "runtime_descriptor_array",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sample_rate_shading {
            if !supported.sample_rate_shading {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sample_rate_shading",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sampler2_d_view_of3_d {
            if !supported.sampler2_d_view_of3_d {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sampler2_d_view_of3_d",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sampler_anisotropy {
            if !supported.sampler_anisotropy {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sampler_anisotropy",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sampler_filter_minmax {
            if !supported.sampler_filter_minmax {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sampler_filter_minmax",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
            if extensions.ext_sampler_filter_minmax && api_version >= crate::Version::V1_2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sampler_filter_minmax",
                    restriction: crate::device::FeatureRestriction::RequiredByExtension(
                        "ext_sampler_filter_minmax",
                    ),
                });
            }
        }
        if self.sampler_mip_lod_bias {
            if !supported.sampler_mip_lod_bias {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sampler_mip_lod_bias",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sampler_mirror_clamp_to_edge {
            if !supported.sampler_mirror_clamp_to_edge {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sampler_mirror_clamp_to_edge",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
            if extensions.khr_sampler_mirror_clamp_to_edge && api_version >= crate::Version::V1_2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sampler_mirror_clamp_to_edge",
                    restriction: crate::device::FeatureRestriction::RequiredByExtension(
                        "khr_sampler_mirror_clamp_to_edge",
                    ),
                });
            }
        }
        if self.sampler_ycbcr_conversion {
            if !supported.sampler_ycbcr_conversion {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sampler_ycbcr_conversion",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.scalar_block_layout {
            if !supported.scalar_block_layout {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "scalar_block_layout",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.separate_depth_stencil_layouts {
            if !supported.separate_depth_stencil_layouts {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "separate_depth_stencil_layouts",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.separate_stencil_mask_ref {
            if !supported.separate_stencil_mask_ref {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "separate_stencil_mask_ref",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_buffer_float16_atomic_add {
            if !supported.shader_buffer_float16_atomic_add {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_buffer_float16_atomic_add",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_buffer_float16_atomic_min_max {
            if !supported.shader_buffer_float16_atomic_min_max {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_buffer_float16_atomic_min_max",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_buffer_float16_atomics {
            if !supported.shader_buffer_float16_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_buffer_float16_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_buffer_float32_atomic_add {
            if !supported.shader_buffer_float32_atomic_add {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_buffer_float32_atomic_add",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_buffer_float32_atomic_min_max {
            if !supported.shader_buffer_float32_atomic_min_max {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_buffer_float32_atomic_min_max",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_buffer_float32_atomics {
            if !supported.shader_buffer_float32_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_buffer_float32_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_buffer_float64_atomic_add {
            if !supported.shader_buffer_float64_atomic_add {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_buffer_float64_atomic_add",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_buffer_float64_atomic_min_max {
            if !supported.shader_buffer_float64_atomic_min_max {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_buffer_float64_atomic_min_max",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_buffer_float64_atomics {
            if !supported.shader_buffer_float64_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_buffer_float64_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_buffer_int64_atomics {
            if !supported.shader_buffer_int64_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_buffer_int64_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_clip_distance {
            if !supported.shader_clip_distance {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_clip_distance",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_core_builtins {
            if !supported.shader_core_builtins {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_core_builtins",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_cull_distance {
            if !supported.shader_cull_distance {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_cull_distance",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_demote_to_helper_invocation {
            if !supported.shader_demote_to_helper_invocation {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_demote_to_helper_invocation",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_device_clock {
            if !supported.shader_device_clock {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_device_clock",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_draw_parameters {
            if !supported.shader_draw_parameters {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_draw_parameters",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
            if extensions.khr_shader_draw_parameters && api_version >= crate::Version::V1_2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_draw_parameters",
                    restriction: crate::device::FeatureRestriction::RequiredByExtension(
                        "khr_shader_draw_parameters",
                    ),
                });
            }
        }
        if self.shader_early_and_late_fragment_tests {
            if !supported.shader_early_and_late_fragment_tests {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_early_and_late_fragment_tests",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_float16 {
            if !supported.shader_float16 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_float16",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_float64 {
            if !supported.shader_float64 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_float64",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_image_float32_atomic_add {
            if !supported.shader_image_float32_atomic_add {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_image_float32_atomic_add",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_image_float32_atomic_min_max {
            if !supported.shader_image_float32_atomic_min_max {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_image_float32_atomic_min_max",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_image_float32_atomics {
            if !supported.shader_image_float32_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_image_float32_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_image_gather_extended {
            if !supported.shader_image_gather_extended {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_image_gather_extended",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_image_int64_atomics {
            if !supported.shader_image_int64_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_image_int64_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_input_attachment_array_dynamic_indexing {
            if !supported.shader_input_attachment_array_dynamic_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_input_attachment_array_dynamic_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_input_attachment_array_non_uniform_indexing {
            if !supported.shader_input_attachment_array_non_uniform_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_input_attachment_array_non_uniform_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_int16 {
            if !supported.shader_int16 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_int16",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_int64 {
            if !supported.shader_int64 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_int64",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_int8 {
            if !supported.shader_int8 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_int8",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_integer_dot_product {
            if !supported.shader_integer_dot_product {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_integer_dot_product",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_integer_functions2 {
            if !supported.shader_integer_functions2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_integer_functions2",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_module_identifier {
            if !supported.shader_module_identifier {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_module_identifier",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_output_layer {
            if !supported.shader_output_layer {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_output_layer",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
            if extensions.ext_shader_viewport_index_layer && api_version >= crate::Version::V1_2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_output_layer",
                    restriction: crate::device::FeatureRestriction::RequiredByExtension(
                        "ext_shader_viewport_index_layer",
                    ),
                });
            }
        }
        if self.shader_output_viewport_index {
            if !supported.shader_output_viewport_index {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_output_viewport_index",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
            if extensions.ext_shader_viewport_index_layer && api_version >= crate::Version::V1_2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_output_viewport_index",
                    restriction: crate::device::FeatureRestriction::RequiredByExtension(
                        "ext_shader_viewport_index_layer",
                    ),
                });
            }
        }
        if self.shader_resource_min_lod {
            if !supported.shader_resource_min_lod {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_resource_min_lod",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_resource_residency {
            if !supported.shader_resource_residency {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_resource_residency",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_sample_rate_interpolation_functions {
            if !supported.shader_sample_rate_interpolation_functions {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_sample_rate_interpolation_functions",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_sampled_image_array_dynamic_indexing {
            if !supported.shader_sampled_image_array_dynamic_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_sampled_image_array_dynamic_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_sampled_image_array_non_uniform_indexing {
            if !supported.shader_sampled_image_array_non_uniform_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_sampled_image_array_non_uniform_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_shared_float16_atomic_add {
            if !supported.shader_shared_float16_atomic_add {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_shared_float16_atomic_add",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_shared_float16_atomic_min_max {
            if !supported.shader_shared_float16_atomic_min_max {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_shared_float16_atomic_min_max",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_shared_float16_atomics {
            if !supported.shader_shared_float16_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_shared_float16_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_shared_float32_atomic_add {
            if !supported.shader_shared_float32_atomic_add {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_shared_float32_atomic_add",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_shared_float32_atomic_min_max {
            if !supported.shader_shared_float32_atomic_min_max {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_shared_float32_atomic_min_max",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_shared_float32_atomics {
            if !supported.shader_shared_float32_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_shared_float32_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_shared_float64_atomic_add {
            if !supported.shader_shared_float64_atomic_add {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_shared_float64_atomic_add",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_shared_float64_atomic_min_max {
            if !supported.shader_shared_float64_atomic_min_max {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_shared_float64_atomic_min_max",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_shared_float64_atomics {
            if !supported.shader_shared_float64_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_shared_float64_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_shared_int64_atomics {
            if !supported.shader_shared_int64_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_shared_int64_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_sm_builtins {
            if !supported.shader_sm_builtins {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_sm_builtins",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_storage_buffer_array_dynamic_indexing {
            if !supported.shader_storage_buffer_array_dynamic_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_storage_buffer_array_dynamic_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_storage_buffer_array_non_uniform_indexing {
            if !supported.shader_storage_buffer_array_non_uniform_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_storage_buffer_array_non_uniform_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_storage_image_array_dynamic_indexing {
            if !supported.shader_storage_image_array_dynamic_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_storage_image_array_dynamic_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_storage_image_array_non_uniform_indexing {
            if !supported.shader_storage_image_array_non_uniform_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_storage_image_array_non_uniform_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_storage_image_extended_formats {
            if !supported.shader_storage_image_extended_formats {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_storage_image_extended_formats",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_storage_image_multisample {
            if !supported.shader_storage_image_multisample {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_storage_image_multisample",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_storage_image_read_without_format {
            if !supported.shader_storage_image_read_without_format {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_storage_image_read_without_format",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_storage_image_write_without_format {
            if !supported.shader_storage_image_write_without_format {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_storage_image_write_without_format",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_storage_texel_buffer_array_dynamic_indexing {
            if !supported.shader_storage_texel_buffer_array_dynamic_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_storage_texel_buffer_array_dynamic_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_storage_texel_buffer_array_non_uniform_indexing {
            if !supported.shader_storage_texel_buffer_array_non_uniform_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_storage_texel_buffer_array_non_uniform_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_subgroup_clock {
            if !supported.shader_subgroup_clock {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_subgroup_clock",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_subgroup_extended_types {
            if !supported.shader_subgroup_extended_types {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_subgroup_extended_types",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_subgroup_uniform_control_flow {
            if !supported.shader_subgroup_uniform_control_flow {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_subgroup_uniform_control_flow",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_terminate_invocation {
            if !supported.shader_terminate_invocation {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_terminate_invocation",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_tessellation_and_geometry_point_size {
            if !supported.shader_tessellation_and_geometry_point_size {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_tessellation_and_geometry_point_size",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_uniform_buffer_array_dynamic_indexing {
            if !supported.shader_uniform_buffer_array_dynamic_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_uniform_buffer_array_dynamic_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_uniform_buffer_array_non_uniform_indexing {
            if !supported.shader_uniform_buffer_array_non_uniform_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_uniform_buffer_array_non_uniform_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_uniform_texel_buffer_array_dynamic_indexing {
            if !supported.shader_uniform_texel_buffer_array_dynamic_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_uniform_texel_buffer_array_dynamic_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_uniform_texel_buffer_array_non_uniform_indexing {
            if !supported.shader_uniform_texel_buffer_array_non_uniform_indexing {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_uniform_texel_buffer_array_non_uniform_indexing",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shader_zero_initialize_workgroup_memory {
            if !supported.shader_zero_initialize_workgroup_memory {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shader_zero_initialize_workgroup_memory",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shading_rate_coarse_sample_order {
            if !supported.shading_rate_coarse_sample_order {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shading_rate_coarse_sample_order",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.shading_rate_image {
            if !supported.shading_rate_image {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shading_rate_image",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
            if self.pipeline_fragment_shading_rate {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shading_rate_image",
                    restriction: crate::device::FeatureRestriction::ConflictsFeature(
                        "pipeline_fragment_shading_rate",
                    ),
                });
            }
            if self.primitive_fragment_shading_rate {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shading_rate_image",
                    restriction: crate::device::FeatureRestriction::ConflictsFeature(
                        "primitive_fragment_shading_rate",
                    ),
                });
            }
            if self.attachment_fragment_shading_rate {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "shading_rate_image",
                    restriction: crate::device::FeatureRestriction::ConflictsFeature(
                        "attachment_fragment_shading_rate",
                    ),
                });
            }
        } else {
        }
        if self.smooth_lines {
            if !supported.smooth_lines {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "smooth_lines",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sparse_binding {
            if !supported.sparse_binding {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_binding",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sparse_image_float32_atomic_add {
            if !supported.sparse_image_float32_atomic_add {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_image_float32_atomic_add",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
            if !self.shader_image_float32_atomic_add {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_image_float32_atomic_add",
                    restriction: crate::device::FeatureRestriction::RequiresFeature(
                        "shader_image_float32_atomic_add",
                    ),
                });
            }
        } else {
        }
        if self.sparse_image_float32_atomic_min_max {
            if !supported.sparse_image_float32_atomic_min_max {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_image_float32_atomic_min_max",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
            if !self.shader_image_float32_atomic_min_max {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_image_float32_atomic_min_max",
                    restriction: crate::device::FeatureRestriction::RequiresFeature(
                        "shader_image_float32_atomic_min_max",
                    ),
                });
            }
        } else {
        }
        if self.sparse_image_float32_atomics {
            if !supported.sparse_image_float32_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_image_float32_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
            if !self.shader_image_float32_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_image_float32_atomics",
                    restriction: crate::device::FeatureRestriction::RequiresFeature(
                        "shader_image_float32_atomics",
                    ),
                });
            }
        } else {
        }
        if self.sparse_image_int64_atomics {
            if !supported.sparse_image_int64_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_image_int64_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
            if !self.shader_image_int64_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_image_int64_atomics",
                    restriction: crate::device::FeatureRestriction::RequiresFeature(
                        "shader_image_int64_atomics",
                    ),
                });
            }
        } else {
        }
        if self.sparse_residency16_samples {
            if !supported.sparse_residency16_samples {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_residency16_samples",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sparse_residency2_samples {
            if !supported.sparse_residency2_samples {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_residency2_samples",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sparse_residency4_samples {
            if !supported.sparse_residency4_samples {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_residency4_samples",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sparse_residency8_samples {
            if !supported.sparse_residency8_samples {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_residency8_samples",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sparse_residency_aliased {
            if !supported.sparse_residency_aliased {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_residency_aliased",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sparse_residency_buffer {
            if !supported.sparse_residency_buffer {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_residency_buffer",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sparse_residency_image2_d {
            if !supported.sparse_residency_image2_d {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_residency_image2_d",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.sparse_residency_image3_d {
            if !supported.sparse_residency_image3_d {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "sparse_residency_image3_d",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.stippled_bresenham_lines {
            if !supported.stippled_bresenham_lines {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "stippled_bresenham_lines",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.stippled_rectangular_lines {
            if !supported.stippled_rectangular_lines {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "stippled_rectangular_lines",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.stippled_smooth_lines {
            if !supported.stippled_smooth_lines {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "stippled_smooth_lines",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.storage_buffer16_bit_access {
            if !supported.storage_buffer16_bit_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "storage_buffer16_bit_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.storage_buffer8_bit_access {
            if !supported.storage_buffer8_bit_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "storage_buffer8_bit_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.storage_input_output16 {
            if !supported.storage_input_output16 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "storage_input_output16",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.storage_push_constant16 {
            if !supported.storage_push_constant16 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "storage_push_constant16",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.storage_push_constant8 {
            if !supported.storage_push_constant8 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "storage_push_constant8",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.subgroup_broadcast_dynamic_id {
            if !supported.subgroup_broadcast_dynamic_id {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "subgroup_broadcast_dynamic_id",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.subgroup_size_control {
            if !supported.subgroup_size_control {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "subgroup_size_control",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.subpass_merge_feedback {
            if !supported.subpass_merge_feedback {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "subpass_merge_feedback",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.subpass_shading {
            if !supported.subpass_shading {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "subpass_shading",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.supersample_fragment_shading_rates {
            if !supported.supersample_fragment_shading_rates {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "supersample_fragment_shading_rates",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.swapchain_maintenance1 {
            if !supported.swapchain_maintenance1 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "swapchain_maintenance1",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.synchronization2 {
            if !supported.synchronization2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "synchronization2",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.task_shader {
            if !supported.task_shader {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "task_shader",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.tessellation_isolines {
            if !supported.tessellation_isolines {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "tessellation_isolines",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.tessellation_point_mode {
            if !supported.tessellation_point_mode {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "tessellation_point_mode",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.tessellation_shader {
            if !supported.tessellation_shader {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "tessellation_shader",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.texel_buffer_alignment {
            if !supported.texel_buffer_alignment {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "texel_buffer_alignment",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.texture_block_match {
            if !supported.texture_block_match {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "texture_block_match",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.texture_box_filter {
            if !supported.texture_box_filter {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "texture_box_filter",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.texture_compression_astc_hdr {
            if !supported.texture_compression_astc_hdr {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "texture_compression_astc_hdr",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.texture_compression_astc_ldr {
            if !supported.texture_compression_astc_ldr {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "texture_compression_astc_ldr",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.texture_compression_bc {
            if !supported.texture_compression_bc {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "texture_compression_bc",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.texture_compression_etc2 {
            if !supported.texture_compression_etc2 {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "texture_compression_etc2",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.texture_sample_weighted {
            if !supported.texture_sample_weighted {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "texture_sample_weighted",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.tile_properties {
            if !supported.tile_properties {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "tile_properties",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.timeline_semaphore {
            if !supported.timeline_semaphore {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "timeline_semaphore",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.transform_feedback {
            if !supported.transform_feedback {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "transform_feedback",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.transform_feedback_preserves_provoking_vertex {
            if !supported.transform_feedback_preserves_provoking_vertex {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "transform_feedback_preserves_provoking_vertex",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.triangle_fans {
            if !supported.triangle_fans {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "triangle_fans",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.uniform_and_storage_buffer16_bit_access {
            if !supported.uniform_and_storage_buffer16_bit_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "uniform_and_storage_buffer16_bit_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.uniform_and_storage_buffer8_bit_access {
            if !supported.uniform_and_storage_buffer8_bit_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "uniform_and_storage_buffer8_bit_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.uniform_buffer_standard_layout {
            if !supported.uniform_buffer_standard_layout {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "uniform_buffer_standard_layout",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.variable_multisample_rate {
            if !supported.variable_multisample_rate {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "variable_multisample_rate",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.variable_pointers {
            if !supported.variable_pointers {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "variable_pointers",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.variable_pointers_storage_buffer {
            if !supported.variable_pointers_storage_buffer {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "variable_pointers_storage_buffer",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.vertex_attribute_access_beyond_stride {
            if !supported.vertex_attribute_access_beyond_stride {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "vertex_attribute_access_beyond_stride",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.vertex_attribute_instance_rate_divisor {
            if !supported.vertex_attribute_instance_rate_divisor {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "vertex_attribute_instance_rate_divisor",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.vertex_attribute_instance_rate_zero_divisor {
            if !supported.vertex_attribute_instance_rate_zero_divisor {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "vertex_attribute_instance_rate_zero_divisor",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.vertex_input_dynamic_state {
            if !supported.vertex_input_dynamic_state {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "vertex_input_dynamic_state",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.vertex_pipeline_stores_and_atomics {
            if !supported.vertex_pipeline_stores_and_atomics {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "vertex_pipeline_stores_and_atomics",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.vulkan_memory_model {
            if !supported.vulkan_memory_model {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "vulkan_memory_model",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.vulkan_memory_model_availability_visibility_chains {
            if !supported.vulkan_memory_model_availability_visibility_chains {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "vulkan_memory_model_availability_visibility_chains",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.vulkan_memory_model_device_scope {
            if !supported.vulkan_memory_model_device_scope {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "vulkan_memory_model_device_scope",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.wide_lines {
            if !supported.wide_lines {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "wide_lines",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.workgroup_memory_explicit_layout {
            if !supported.workgroup_memory_explicit_layout {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "workgroup_memory_explicit_layout",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.workgroup_memory_explicit_layout16_bit_access {
            if !supported.workgroup_memory_explicit_layout16_bit_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "workgroup_memory_explicit_layout16_bit_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.workgroup_memory_explicit_layout8_bit_access {
            if !supported.workgroup_memory_explicit_layout8_bit_access {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "workgroup_memory_explicit_layout8_bit_access",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.workgroup_memory_explicit_layout_scalar_block_layout {
            if !supported.workgroup_memory_explicit_layout_scalar_block_layout {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "workgroup_memory_explicit_layout_scalar_block_layout",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ycbcr2plane444_formats {
            if !supported.ycbcr2plane444_formats {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ycbcr2plane444_formats",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        if self.ycbcr_image_arrays {
            if !supported.ycbcr_image_arrays {
                return Err(crate::device::FeatureRestrictionError {
                    feature: "ycbcr_image_arrays",
                    restriction: crate::device::FeatureRestriction::NotSupported,
                });
            }
        } else {
        }
        Ok(())
    }
    #[doc = r" Returns an `Features` object with none of the members set."]
    #[inline]
    pub const fn empty() -> Self {
        Self {
            acceleration_structure: false,
            acceleration_structure_capture_replay: false,
            acceleration_structure_host_commands: false,
            acceleration_structure_indirect_build: false,
            advanced_blend_coherent_operations: false,
            alpha_to_one: false,
            amigo_profiling: false,
            attachment_feedback_loop_layout: false,
            attachment_fragment_shading_rate: false,
            border_color_swizzle: false,
            border_color_swizzle_from_image: false,
            bresenham_lines: false,
            buffer_device_address: false,
            buffer_device_address_capture_replay: false,
            buffer_device_address_multi_device: false,
            color_write_enable: false,
            compute_derivative_group_linear: false,
            compute_derivative_group_quads: false,
            compute_full_subgroups: false,
            conditional_rendering: false,
            constant_alpha_color_blend_factors: false,
            cooperative_matrix: false,
            cooperative_matrix_robust_buffer_access: false,
            corner_sampled_image: false,
            coverage_reduction_mode: false,
            custom_border_color_without_format: false,
            custom_border_colors: false,
            decode_mode_shared_exponent: false,
            dedicated_allocation_image_aliasing: false,
            depth_bias_clamp: false,
            depth_bounds: false,
            depth_clamp: false,
            depth_clamp_zero_one: false,
            depth_clip_control: false,
            depth_clip_enable: false,
            descriptor_binding_acceleration_structure_update_after_bind: false,
            descriptor_binding_inline_uniform_block_update_after_bind: false,
            descriptor_binding_partially_bound: false,
            descriptor_binding_sampled_image_update_after_bind: false,
            descriptor_binding_storage_buffer_update_after_bind: false,
            descriptor_binding_storage_image_update_after_bind: false,
            descriptor_binding_storage_texel_buffer_update_after_bind: false,
            descriptor_binding_uniform_buffer_update_after_bind: false,
            descriptor_binding_uniform_texel_buffer_update_after_bind: false,
            descriptor_binding_update_unused_while_pending: false,
            descriptor_binding_variable_descriptor_count: false,
            descriptor_buffer: false,
            descriptor_buffer_capture_replay: false,
            descriptor_buffer_image_layout_ignored: false,
            descriptor_buffer_push_descriptors: false,
            descriptor_indexing: false,
            descriptor_set_host_mapping: false,
            device_coherent_memory: false,
            device_fault: false,
            device_fault_vendor_binary: false,
            device_generated_commands: false,
            device_memory_report: false,
            diagnostics_config: false,
            draw_indirect_count: false,
            draw_indirect_first_instance: false,
            dual_src_blend: false,
            dynamic_rendering: false,
            events: false,
            exclusive_scissor: false,
            extended_dynamic_state: false,
            extended_dynamic_state2: false,
            extended_dynamic_state2_logic_op: false,
            extended_dynamic_state2_patch_control_points: false,
            extended_dynamic_state3_alpha_to_coverage_enable: false,
            extended_dynamic_state3_alpha_to_one_enable: false,
            extended_dynamic_state3_color_blend_advanced: false,
            extended_dynamic_state3_color_blend_enable: false,
            extended_dynamic_state3_color_blend_equation: false,
            extended_dynamic_state3_color_write_mask: false,
            extended_dynamic_state3_conservative_rasterization_mode: false,
            extended_dynamic_state3_coverage_modulation_mode: false,
            extended_dynamic_state3_coverage_modulation_table: false,
            extended_dynamic_state3_coverage_modulation_table_enable: false,
            extended_dynamic_state3_coverage_reduction_mode: false,
            extended_dynamic_state3_coverage_to_color_enable: false,
            extended_dynamic_state3_coverage_to_color_location: false,
            extended_dynamic_state3_depth_clamp_enable: false,
            extended_dynamic_state3_depth_clip_enable: false,
            extended_dynamic_state3_depth_clip_negative_one_to_one: false,
            extended_dynamic_state3_extra_primitive_overestimation_size: false,
            extended_dynamic_state3_line_rasterization_mode: false,
            extended_dynamic_state3_line_stipple_enable: false,
            extended_dynamic_state3_logic_op_enable: false,
            extended_dynamic_state3_polygon_mode: false,
            extended_dynamic_state3_provoking_vertex_mode: false,
            extended_dynamic_state3_rasterization_samples: false,
            extended_dynamic_state3_rasterization_stream: false,
            extended_dynamic_state3_representative_fragment_test_enable: false,
            extended_dynamic_state3_sample_locations_enable: false,
            extended_dynamic_state3_sample_mask: false,
            extended_dynamic_state3_shading_rate_image_enable: false,
            extended_dynamic_state3_tessellation_domain_origin: false,
            extended_dynamic_state3_viewport_swizzle: false,
            extended_dynamic_state3_viewport_w_scaling_enable: false,
            external_memory_rdma: false,
            fill_mode_non_solid: false,
            format_a4b4g4r4: false,
            format_a4r4g4b4: false,
            format_rgba10x6_without_y_cb_cr_sampler: false,
            fragment_density_map: false,
            fragment_density_map_deferred: false,
            fragment_density_map_dynamic: false,
            fragment_density_map_non_subsampled_images: false,
            fragment_density_map_offset: false,
            fragment_shader_barycentric: false,
            fragment_shader_pixel_interlock: false,
            fragment_shader_sample_interlock: false,
            fragment_shader_shading_rate_interlock: false,
            fragment_shading_rate_enums: false,
            fragment_stores_and_atomics: false,
            full_draw_index_uint32: false,
            geometry_shader: false,
            geometry_streams: false,
            global_priority_query: false,
            graphics_pipeline_library: false,
            host_query_reset: false,
            image2_d_view_of3_d: false,
            image_compression_control: false,
            image_compression_control_swapchain: false,
            image_cube_array: false,
            image_footprint: false,
            image_view2_d_on3_d_image: false,
            image_view_format_reinterpretation: false,
            image_view_format_swizzle: false,
            imageless_framebuffer: false,
            independent_blend: false,
            index_type_uint8: false,
            indirect_copy: false,
            inherited_conditional_rendering: false,
            inherited_queries: false,
            inherited_viewport_scissor2_d: false,
            inline_uniform_block: false,
            invocation_mask: false,
            large_points: false,
            legacy_dithering: false,
            linear_color_attachment: false,
            logic_op: false,
            maintenance4: false,
            memory_decompression: false,
            memory_priority: false,
            mesh_shader: false,
            mesh_shader_queries: false,
            micromap: false,
            micromap_capture_replay: false,
            micromap_host_commands: false,
            min_lod: false,
            multi_draw: false,
            multi_draw_indirect: false,
            multi_viewport: false,
            multisample_array_image: false,
            multisampled_render_to_single_sampled: false,
            multiview: false,
            multiview_geometry_shader: false,
            multiview_mesh_shader: false,
            multiview_per_view_viewports: false,
            multiview_tessellation_shader: false,
            mutable_comparison_samplers: false,
            mutable_descriptor_type: false,
            no_invocation_fragment_shading_rates: false,
            non_seamless_cube_map: false,
            null_descriptor: false,
            occlusion_query_precise: false,
            optical_flow: false,
            pageable_device_local_memory: false,
            performance_counter_multiple_query_pools: false,
            performance_counter_query_pools: false,
            pipeline_creation_cache_control: false,
            pipeline_executable_info: false,
            pipeline_fragment_shading_rate: false,
            pipeline_properties_identifier: false,
            pipeline_protected_access: false,
            pipeline_robustness: false,
            pipeline_statistics_query: false,
            point_polygons: false,
            present_barrier: false,
            present_id: false,
            present_wait: false,
            primitive_fragment_shading_rate: false,
            primitive_fragment_shading_rate_mesh_shader: false,
            primitive_topology_list_restart: false,
            primitive_topology_patch_list_restart: false,
            primitives_generated_query: false,
            primitives_generated_query_with_non_zero_streams: false,
            primitives_generated_query_with_rasterizer_discard: false,
            private_data: false,
            protected_memory: false,
            provoking_vertex_last: false,
            rasterization_order_color_attachment_access: false,
            rasterization_order_depth_attachment_access: false,
            rasterization_order_stencil_attachment_access: false,
            ray_query: false,
            ray_tracing_invocation_reorder: false,
            ray_tracing_maintenance1: false,
            ray_tracing_motion_blur: false,
            ray_tracing_motion_blur_pipeline_trace_rays_indirect: false,
            ray_tracing_pipeline: false,
            ray_tracing_pipeline_shader_group_handle_capture_replay: false,
            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: false,
            ray_tracing_pipeline_trace_rays_indirect: false,
            ray_tracing_pipeline_trace_rays_indirect2: false,
            ray_traversal_primitive_culling: false,
            rectangular_lines: false,
            report_address_binding: false,
            representative_fragment_test: false,
            robust_buffer_access: false,
            robust_buffer_access2: false,
            robust_image_access: false,
            robust_image_access2: false,
            runtime_descriptor_array: false,
            sample_rate_shading: false,
            sampler2_d_view_of3_d: false,
            sampler_anisotropy: false,
            sampler_filter_minmax: false,
            sampler_mip_lod_bias: false,
            sampler_mirror_clamp_to_edge: false,
            sampler_ycbcr_conversion: false,
            scalar_block_layout: false,
            separate_depth_stencil_layouts: false,
            separate_stencil_mask_ref: false,
            shader_buffer_float16_atomic_add: false,
            shader_buffer_float16_atomic_min_max: false,
            shader_buffer_float16_atomics: false,
            shader_buffer_float32_atomic_add: false,
            shader_buffer_float32_atomic_min_max: false,
            shader_buffer_float32_atomics: false,
            shader_buffer_float64_atomic_add: false,
            shader_buffer_float64_atomic_min_max: false,
            shader_buffer_float64_atomics: false,
            shader_buffer_int64_atomics: false,
            shader_clip_distance: false,
            shader_core_builtins: false,
            shader_cull_distance: false,
            shader_demote_to_helper_invocation: false,
            shader_device_clock: false,
            shader_draw_parameters: false,
            shader_early_and_late_fragment_tests: false,
            shader_float16: false,
            shader_float64: false,
            shader_image_float32_atomic_add: false,
            shader_image_float32_atomic_min_max: false,
            shader_image_float32_atomics: false,
            shader_image_gather_extended: false,
            shader_image_int64_atomics: false,
            shader_input_attachment_array_dynamic_indexing: false,
            shader_input_attachment_array_non_uniform_indexing: false,
            shader_int16: false,
            shader_int64: false,
            shader_int8: false,
            shader_integer_dot_product: false,
            shader_integer_functions2: false,
            shader_module_identifier: false,
            shader_output_layer: false,
            shader_output_viewport_index: false,
            shader_resource_min_lod: false,
            shader_resource_residency: false,
            shader_sample_rate_interpolation_functions: false,
            shader_sampled_image_array_dynamic_indexing: false,
            shader_sampled_image_array_non_uniform_indexing: false,
            shader_shared_float16_atomic_add: false,
            shader_shared_float16_atomic_min_max: false,
            shader_shared_float16_atomics: false,
            shader_shared_float32_atomic_add: false,
            shader_shared_float32_atomic_min_max: false,
            shader_shared_float32_atomics: false,
            shader_shared_float64_atomic_add: false,
            shader_shared_float64_atomic_min_max: false,
            shader_shared_float64_atomics: false,
            shader_shared_int64_atomics: false,
            shader_sm_builtins: false,
            shader_storage_buffer_array_dynamic_indexing: false,
            shader_storage_buffer_array_non_uniform_indexing: false,
            shader_storage_image_array_dynamic_indexing: false,
            shader_storage_image_array_non_uniform_indexing: false,
            shader_storage_image_extended_formats: false,
            shader_storage_image_multisample: false,
            shader_storage_image_read_without_format: false,
            shader_storage_image_write_without_format: false,
            shader_storage_texel_buffer_array_dynamic_indexing: false,
            shader_storage_texel_buffer_array_non_uniform_indexing: false,
            shader_subgroup_clock: false,
            shader_subgroup_extended_types: false,
            shader_subgroup_uniform_control_flow: false,
            shader_terminate_invocation: false,
            shader_tessellation_and_geometry_point_size: false,
            shader_uniform_buffer_array_dynamic_indexing: false,
            shader_uniform_buffer_array_non_uniform_indexing: false,
            shader_uniform_texel_buffer_array_dynamic_indexing: false,
            shader_uniform_texel_buffer_array_non_uniform_indexing: false,
            shader_zero_initialize_workgroup_memory: false,
            shading_rate_coarse_sample_order: false,
            shading_rate_image: false,
            smooth_lines: false,
            sparse_binding: false,
            sparse_image_float32_atomic_add: false,
            sparse_image_float32_atomic_min_max: false,
            sparse_image_float32_atomics: false,
            sparse_image_int64_atomics: false,
            sparse_residency16_samples: false,
            sparse_residency2_samples: false,
            sparse_residency4_samples: false,
            sparse_residency8_samples: false,
            sparse_residency_aliased: false,
            sparse_residency_buffer: false,
            sparse_residency_image2_d: false,
            sparse_residency_image3_d: false,
            stippled_bresenham_lines: false,
            stippled_rectangular_lines: false,
            stippled_smooth_lines: false,
            storage_buffer16_bit_access: false,
            storage_buffer8_bit_access: false,
            storage_input_output16: false,
            storage_push_constant16: false,
            storage_push_constant8: false,
            subgroup_broadcast_dynamic_id: false,
            subgroup_size_control: false,
            subpass_merge_feedback: false,
            subpass_shading: false,
            supersample_fragment_shading_rates: false,
            swapchain_maintenance1: false,
            synchronization2: false,
            task_shader: false,
            tessellation_isolines: false,
            tessellation_point_mode: false,
            tessellation_shader: false,
            texel_buffer_alignment: false,
            texture_block_match: false,
            texture_box_filter: false,
            texture_compression_astc_hdr: false,
            texture_compression_astc_ldr: false,
            texture_compression_bc: false,
            texture_compression_etc2: false,
            texture_sample_weighted: false,
            tile_properties: false,
            timeline_semaphore: false,
            transform_feedback: false,
            transform_feedback_preserves_provoking_vertex: false,
            triangle_fans: false,
            uniform_and_storage_buffer16_bit_access: false,
            uniform_and_storage_buffer8_bit_access: false,
            uniform_buffer_standard_layout: false,
            variable_multisample_rate: false,
            variable_pointers: false,
            variable_pointers_storage_buffer: false,
            vertex_attribute_access_beyond_stride: false,
            vertex_attribute_instance_rate_divisor: false,
            vertex_attribute_instance_rate_zero_divisor: false,
            vertex_input_dynamic_state: false,
            vertex_pipeline_stores_and_atomics: false,
            vulkan_memory_model: false,
            vulkan_memory_model_availability_visibility_chains: false,
            vulkan_memory_model_device_scope: false,
            wide_lines: false,
            workgroup_memory_explicit_layout: false,
            workgroup_memory_explicit_layout16_bit_access: false,
            workgroup_memory_explicit_layout8_bit_access: false,
            workgroup_memory_explicit_layout_scalar_block_layout: false,
            ycbcr2plane444_formats: false,
            ycbcr_image_arrays: false,
            _ne: crate::NonExhaustive(()),
        }
    }
    #[doc = r" Returns an `Features` object with none of the members set."]
    #[deprecated(since = "0.31.0", note = "Use `empty` instead.")]
    #[inline]
    pub const fn none() -> Self {
        Self::empty()
    }
    #[doc = r" Returns a `Features` object with all of the members set."]
    #[cfg(test)]
    pub(crate) const fn all() -> Features {
        Features {
            acceleration_structure: true,
            acceleration_structure_capture_replay: true,
            acceleration_structure_host_commands: true,
            acceleration_structure_indirect_build: true,
            advanced_blend_coherent_operations: true,
            alpha_to_one: true,
            amigo_profiling: true,
            attachment_feedback_loop_layout: true,
            attachment_fragment_shading_rate: true,
            border_color_swizzle: true,
            border_color_swizzle_from_image: true,
            bresenham_lines: true,
            buffer_device_address: true,
            buffer_device_address_capture_replay: true,
            buffer_device_address_multi_device: true,
            color_write_enable: true,
            compute_derivative_group_linear: true,
            compute_derivative_group_quads: true,
            compute_full_subgroups: true,
            conditional_rendering: true,
            constant_alpha_color_blend_factors: true,
            cooperative_matrix: true,
            cooperative_matrix_robust_buffer_access: true,
            corner_sampled_image: true,
            coverage_reduction_mode: true,
            custom_border_color_without_format: true,
            custom_border_colors: true,
            decode_mode_shared_exponent: true,
            dedicated_allocation_image_aliasing: true,
            depth_bias_clamp: true,
            depth_bounds: true,
            depth_clamp: true,
            depth_clamp_zero_one: true,
            depth_clip_control: true,
            depth_clip_enable: true,
            descriptor_binding_acceleration_structure_update_after_bind: true,
            descriptor_binding_inline_uniform_block_update_after_bind: true,
            descriptor_binding_partially_bound: true,
            descriptor_binding_sampled_image_update_after_bind: true,
            descriptor_binding_storage_buffer_update_after_bind: true,
            descriptor_binding_storage_image_update_after_bind: true,
            descriptor_binding_storage_texel_buffer_update_after_bind: true,
            descriptor_binding_uniform_buffer_update_after_bind: true,
            descriptor_binding_uniform_texel_buffer_update_after_bind: true,
            descriptor_binding_update_unused_while_pending: true,
            descriptor_binding_variable_descriptor_count: true,
            descriptor_buffer: true,
            descriptor_buffer_capture_replay: true,
            descriptor_buffer_image_layout_ignored: true,
            descriptor_buffer_push_descriptors: true,
            descriptor_indexing: true,
            descriptor_set_host_mapping: true,
            device_coherent_memory: true,
            device_fault: true,
            device_fault_vendor_binary: true,
            device_generated_commands: true,
            device_memory_report: true,
            diagnostics_config: true,
            draw_indirect_count: true,
            draw_indirect_first_instance: true,
            dual_src_blend: true,
            dynamic_rendering: true,
            events: true,
            exclusive_scissor: true,
            extended_dynamic_state: true,
            extended_dynamic_state2: true,
            extended_dynamic_state2_logic_op: true,
            extended_dynamic_state2_patch_control_points: true,
            extended_dynamic_state3_alpha_to_coverage_enable: true,
            extended_dynamic_state3_alpha_to_one_enable: true,
            extended_dynamic_state3_color_blend_advanced: true,
            extended_dynamic_state3_color_blend_enable: true,
            extended_dynamic_state3_color_blend_equation: true,
            extended_dynamic_state3_color_write_mask: true,
            extended_dynamic_state3_conservative_rasterization_mode: true,
            extended_dynamic_state3_coverage_modulation_mode: true,
            extended_dynamic_state3_coverage_modulation_table: true,
            extended_dynamic_state3_coverage_modulation_table_enable: true,
            extended_dynamic_state3_coverage_reduction_mode: true,
            extended_dynamic_state3_coverage_to_color_enable: true,
            extended_dynamic_state3_coverage_to_color_location: true,
            extended_dynamic_state3_depth_clamp_enable: true,
            extended_dynamic_state3_depth_clip_enable: true,
            extended_dynamic_state3_depth_clip_negative_one_to_one: true,
            extended_dynamic_state3_extra_primitive_overestimation_size: true,
            extended_dynamic_state3_line_rasterization_mode: true,
            extended_dynamic_state3_line_stipple_enable: true,
            extended_dynamic_state3_logic_op_enable: true,
            extended_dynamic_state3_polygon_mode: true,
            extended_dynamic_state3_provoking_vertex_mode: true,
            extended_dynamic_state3_rasterization_samples: true,
            extended_dynamic_state3_rasterization_stream: true,
            extended_dynamic_state3_representative_fragment_test_enable: true,
            extended_dynamic_state3_sample_locations_enable: true,
            extended_dynamic_state3_sample_mask: true,
            extended_dynamic_state3_shading_rate_image_enable: true,
            extended_dynamic_state3_tessellation_domain_origin: true,
            extended_dynamic_state3_viewport_swizzle: true,
            extended_dynamic_state3_viewport_w_scaling_enable: true,
            external_memory_rdma: true,
            fill_mode_non_solid: true,
            format_a4b4g4r4: true,
            format_a4r4g4b4: true,
            format_rgba10x6_without_y_cb_cr_sampler: true,
            fragment_density_map: true,
            fragment_density_map_deferred: true,
            fragment_density_map_dynamic: true,
            fragment_density_map_non_subsampled_images: true,
            fragment_density_map_offset: true,
            fragment_shader_barycentric: true,
            fragment_shader_pixel_interlock: true,
            fragment_shader_sample_interlock: true,
            fragment_shader_shading_rate_interlock: true,
            fragment_shading_rate_enums: true,
            fragment_stores_and_atomics: true,
            full_draw_index_uint32: true,
            geometry_shader: true,
            geometry_streams: true,
            global_priority_query: true,
            graphics_pipeline_library: true,
            host_query_reset: true,
            image2_d_view_of3_d: true,
            image_compression_control: true,
            image_compression_control_swapchain: true,
            image_cube_array: true,
            image_footprint: true,
            image_view2_d_on3_d_image: true,
            image_view_format_reinterpretation: true,
            image_view_format_swizzle: true,
            imageless_framebuffer: true,
            independent_blend: true,
            index_type_uint8: true,
            indirect_copy: true,
            inherited_conditional_rendering: true,
            inherited_queries: true,
            inherited_viewport_scissor2_d: true,
            inline_uniform_block: true,
            invocation_mask: true,
            large_points: true,
            legacy_dithering: true,
            linear_color_attachment: true,
            logic_op: true,
            maintenance4: true,
            memory_decompression: true,
            memory_priority: true,
            mesh_shader: true,
            mesh_shader_queries: true,
            micromap: true,
            micromap_capture_replay: true,
            micromap_host_commands: true,
            min_lod: true,
            multi_draw: true,
            multi_draw_indirect: true,
            multi_viewport: true,
            multisample_array_image: true,
            multisampled_render_to_single_sampled: true,
            multiview: true,
            multiview_geometry_shader: true,
            multiview_mesh_shader: true,
            multiview_per_view_viewports: true,
            multiview_tessellation_shader: true,
            mutable_comparison_samplers: true,
            mutable_descriptor_type: true,
            no_invocation_fragment_shading_rates: true,
            non_seamless_cube_map: true,
            null_descriptor: true,
            occlusion_query_precise: true,
            optical_flow: true,
            pageable_device_local_memory: true,
            performance_counter_multiple_query_pools: true,
            performance_counter_query_pools: true,
            pipeline_creation_cache_control: true,
            pipeline_executable_info: true,
            pipeline_fragment_shading_rate: true,
            pipeline_properties_identifier: true,
            pipeline_protected_access: true,
            pipeline_robustness: true,
            pipeline_statistics_query: true,
            point_polygons: true,
            present_barrier: true,
            present_id: true,
            present_wait: true,
            primitive_fragment_shading_rate: true,
            primitive_fragment_shading_rate_mesh_shader: true,
            primitive_topology_list_restart: true,
            primitive_topology_patch_list_restart: true,
            primitives_generated_query: true,
            primitives_generated_query_with_non_zero_streams: true,
            primitives_generated_query_with_rasterizer_discard: true,
            private_data: true,
            protected_memory: true,
            provoking_vertex_last: true,
            rasterization_order_color_attachment_access: true,
            rasterization_order_depth_attachment_access: true,
            rasterization_order_stencil_attachment_access: true,
            ray_query: true,
            ray_tracing_invocation_reorder: true,
            ray_tracing_maintenance1: true,
            ray_tracing_motion_blur: true,
            ray_tracing_motion_blur_pipeline_trace_rays_indirect: true,
            ray_tracing_pipeline: true,
            ray_tracing_pipeline_shader_group_handle_capture_replay: true,
            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: true,
            ray_tracing_pipeline_trace_rays_indirect: true,
            ray_tracing_pipeline_trace_rays_indirect2: true,
            ray_traversal_primitive_culling: true,
            rectangular_lines: true,
            report_address_binding: true,
            representative_fragment_test: true,
            robust_buffer_access: true,
            robust_buffer_access2: true,
            robust_image_access: true,
            robust_image_access2: true,
            runtime_descriptor_array: true,
            sample_rate_shading: true,
            sampler2_d_view_of3_d: true,
            sampler_anisotropy: true,
            sampler_filter_minmax: true,
            sampler_mip_lod_bias: true,
            sampler_mirror_clamp_to_edge: true,
            sampler_ycbcr_conversion: true,
            scalar_block_layout: true,
            separate_depth_stencil_layouts: true,
            separate_stencil_mask_ref: true,
            shader_buffer_float16_atomic_add: true,
            shader_buffer_float16_atomic_min_max: true,
            shader_buffer_float16_atomics: true,
            shader_buffer_float32_atomic_add: true,
            shader_buffer_float32_atomic_min_max: true,
            shader_buffer_float32_atomics: true,
            shader_buffer_float64_atomic_add: true,
            shader_buffer_float64_atomic_min_max: true,
            shader_buffer_float64_atomics: true,
            shader_buffer_int64_atomics: true,
            shader_clip_distance: true,
            shader_core_builtins: true,
            shader_cull_distance: true,
            shader_demote_to_helper_invocation: true,
            shader_device_clock: true,
            shader_draw_parameters: true,
            shader_early_and_late_fragment_tests: true,
            shader_float16: true,
            shader_float64: true,
            shader_image_float32_atomic_add: true,
            shader_image_float32_atomic_min_max: true,
            shader_image_float32_atomics: true,
            shader_image_gather_extended: true,
            shader_image_int64_atomics: true,
            shader_input_attachment_array_dynamic_indexing: true,
            shader_input_attachment_array_non_uniform_indexing: true,
            shader_int16: true,
            shader_int64: true,
            shader_int8: true,
            shader_integer_dot_product: true,
            shader_integer_functions2: true,
            shader_module_identifier: true,
            shader_output_layer: true,
            shader_output_viewport_index: true,
            shader_resource_min_lod: true,
            shader_resource_residency: true,
            shader_sample_rate_interpolation_functions: true,
            shader_sampled_image_array_dynamic_indexing: true,
            shader_sampled_image_array_non_uniform_indexing: true,
            shader_shared_float16_atomic_add: true,
            shader_shared_float16_atomic_min_max: true,
            shader_shared_float16_atomics: true,
            shader_shared_float32_atomic_add: true,
            shader_shared_float32_atomic_min_max: true,
            shader_shared_float32_atomics: true,
            shader_shared_float64_atomic_add: true,
            shader_shared_float64_atomic_min_max: true,
            shader_shared_float64_atomics: true,
            shader_shared_int64_atomics: true,
            shader_sm_builtins: true,
            shader_storage_buffer_array_dynamic_indexing: true,
            shader_storage_buffer_array_non_uniform_indexing: true,
            shader_storage_image_array_dynamic_indexing: true,
            shader_storage_image_array_non_uniform_indexing: true,
            shader_storage_image_extended_formats: true,
            shader_storage_image_multisample: true,
            shader_storage_image_read_without_format: true,
            shader_storage_image_write_without_format: true,
            shader_storage_texel_buffer_array_dynamic_indexing: true,
            shader_storage_texel_buffer_array_non_uniform_indexing: true,
            shader_subgroup_clock: true,
            shader_subgroup_extended_types: true,
            shader_subgroup_uniform_control_flow: true,
            shader_terminate_invocation: true,
            shader_tessellation_and_geometry_point_size: true,
            shader_uniform_buffer_array_dynamic_indexing: true,
            shader_uniform_buffer_array_non_uniform_indexing: true,
            shader_uniform_texel_buffer_array_dynamic_indexing: true,
            shader_uniform_texel_buffer_array_non_uniform_indexing: true,
            shader_zero_initialize_workgroup_memory: true,
            shading_rate_coarse_sample_order: true,
            shading_rate_image: true,
            smooth_lines: true,
            sparse_binding: true,
            sparse_image_float32_atomic_add: true,
            sparse_image_float32_atomic_min_max: true,
            sparse_image_float32_atomics: true,
            sparse_image_int64_atomics: true,
            sparse_residency16_samples: true,
            sparse_residency2_samples: true,
            sparse_residency4_samples: true,
            sparse_residency8_samples: true,
            sparse_residency_aliased: true,
            sparse_residency_buffer: true,
            sparse_residency_image2_d: true,
            sparse_residency_image3_d: true,
            stippled_bresenham_lines: true,
            stippled_rectangular_lines: true,
            stippled_smooth_lines: true,
            storage_buffer16_bit_access: true,
            storage_buffer8_bit_access: true,
            storage_input_output16: true,
            storage_push_constant16: true,
            storage_push_constant8: true,
            subgroup_broadcast_dynamic_id: true,
            subgroup_size_control: true,
            subpass_merge_feedback: true,
            subpass_shading: true,
            supersample_fragment_shading_rates: true,
            swapchain_maintenance1: true,
            synchronization2: true,
            task_shader: true,
            tessellation_isolines: true,
            tessellation_point_mode: true,
            tessellation_shader: true,
            texel_buffer_alignment: true,
            texture_block_match: true,
            texture_box_filter: true,
            texture_compression_astc_hdr: true,
            texture_compression_astc_ldr: true,
            texture_compression_bc: true,
            texture_compression_etc2: true,
            texture_sample_weighted: true,
            tile_properties: true,
            timeline_semaphore: true,
            transform_feedback: true,
            transform_feedback_preserves_provoking_vertex: true,
            triangle_fans: true,
            uniform_and_storage_buffer16_bit_access: true,
            uniform_and_storage_buffer8_bit_access: true,
            uniform_buffer_standard_layout: true,
            variable_multisample_rate: true,
            variable_pointers: true,
            variable_pointers_storage_buffer: true,
            vertex_attribute_access_beyond_stride: true,
            vertex_attribute_instance_rate_divisor: true,
            vertex_attribute_instance_rate_zero_divisor: true,
            vertex_input_dynamic_state: true,
            vertex_pipeline_stores_and_atomics: true,
            vulkan_memory_model: true,
            vulkan_memory_model_availability_visibility_chains: true,
            vulkan_memory_model_device_scope: true,
            wide_lines: true,
            workgroup_memory_explicit_layout: true,
            workgroup_memory_explicit_layout16_bit_access: true,
            workgroup_memory_explicit_layout8_bit_access: true,
            workgroup_memory_explicit_layout_scalar_block_layout: true,
            ycbcr2plane444_formats: true,
            ycbcr_image_arrays: true,
            _ne: crate::NonExhaustive(()),
        }
    }
    #[doc = r" Returns whether any members are set in both `self` and `other`."]
    #[inline]
    pub const fn intersects(&self, other: &Self) -> bool {
        (self.acceleration_structure && other.acceleration_structure)
            || (self.acceleration_structure_capture_replay
                && other.acceleration_structure_capture_replay)
            || (self.acceleration_structure_host_commands
                && other.acceleration_structure_host_commands)
            || (self.acceleration_structure_indirect_build
                && other.acceleration_structure_indirect_build)
            || (self.advanced_blend_coherent_operations && other.advanced_blend_coherent_operations)
            || (self.alpha_to_one && other.alpha_to_one)
            || (self.amigo_profiling && other.amigo_profiling)
            || (self.attachment_feedback_loop_layout && other.attachment_feedback_loop_layout)
            || (self.attachment_fragment_shading_rate && other.attachment_fragment_shading_rate)
            || (self.border_color_swizzle && other.border_color_swizzle)
            || (self.border_color_swizzle_from_image && other.border_color_swizzle_from_image)
            || (self.bresenham_lines && other.bresenham_lines)
            || (self.buffer_device_address && other.buffer_device_address)
            || (self.buffer_device_address_capture_replay
                && other.buffer_device_address_capture_replay)
            || (self.buffer_device_address_multi_device && other.buffer_device_address_multi_device)
            || (self.color_write_enable && other.color_write_enable)
            || (self.compute_derivative_group_linear && other.compute_derivative_group_linear)
            || (self.compute_derivative_group_quads && other.compute_derivative_group_quads)
            || (self.compute_full_subgroups && other.compute_full_subgroups)
            || (self.conditional_rendering && other.conditional_rendering)
            || (self.constant_alpha_color_blend_factors && other.constant_alpha_color_blend_factors)
            || (self.cooperative_matrix && other.cooperative_matrix)
            || (self.cooperative_matrix_robust_buffer_access
                && other.cooperative_matrix_robust_buffer_access)
            || (self.corner_sampled_image && other.corner_sampled_image)
            || (self.coverage_reduction_mode && other.coverage_reduction_mode)
            || (self.custom_border_color_without_format && other.custom_border_color_without_format)
            || (self.custom_border_colors && other.custom_border_colors)
            || (self.decode_mode_shared_exponent && other.decode_mode_shared_exponent)
            || (self.dedicated_allocation_image_aliasing
                && other.dedicated_allocation_image_aliasing)
            || (self.depth_bias_clamp && other.depth_bias_clamp)
            || (self.depth_bounds && other.depth_bounds)
            || (self.depth_clamp && other.depth_clamp)
            || (self.depth_clamp_zero_one && other.depth_clamp_zero_one)
            || (self.depth_clip_control && other.depth_clip_control)
            || (self.depth_clip_enable && other.depth_clip_enable)
            || (self.descriptor_binding_acceleration_structure_update_after_bind
                && other.descriptor_binding_acceleration_structure_update_after_bind)
            || (self.descriptor_binding_inline_uniform_block_update_after_bind
                && other.descriptor_binding_inline_uniform_block_update_after_bind)
            || (self.descriptor_binding_partially_bound && other.descriptor_binding_partially_bound)
            || (self.descriptor_binding_sampled_image_update_after_bind
                && other.descriptor_binding_sampled_image_update_after_bind)
            || (self.descriptor_binding_storage_buffer_update_after_bind
                && other.descriptor_binding_storage_buffer_update_after_bind)
            || (self.descriptor_binding_storage_image_update_after_bind
                && other.descriptor_binding_storage_image_update_after_bind)
            || (self.descriptor_binding_storage_texel_buffer_update_after_bind
                && other.descriptor_binding_storage_texel_buffer_update_after_bind)
            || (self.descriptor_binding_uniform_buffer_update_after_bind
                && other.descriptor_binding_uniform_buffer_update_after_bind)
            || (self.descriptor_binding_uniform_texel_buffer_update_after_bind
                && other.descriptor_binding_uniform_texel_buffer_update_after_bind)
            || (self.descriptor_binding_update_unused_while_pending
                && other.descriptor_binding_update_unused_while_pending)
            || (self.descriptor_binding_variable_descriptor_count
                && other.descriptor_binding_variable_descriptor_count)
            || (self.descriptor_buffer && other.descriptor_buffer)
            || (self.descriptor_buffer_capture_replay && other.descriptor_buffer_capture_replay)
            || (self.descriptor_buffer_image_layout_ignored
                && other.descriptor_buffer_image_layout_ignored)
            || (self.descriptor_buffer_push_descriptors && other.descriptor_buffer_push_descriptors)
            || (self.descriptor_indexing && other.descriptor_indexing)
            || (self.descriptor_set_host_mapping && other.descriptor_set_host_mapping)
            || (self.device_coherent_memory && other.device_coherent_memory)
            || (self.device_fault && other.device_fault)
            || (self.device_fault_vendor_binary && other.device_fault_vendor_binary)
            || (self.device_generated_commands && other.device_generated_commands)
            || (self.device_memory_report && other.device_memory_report)
            || (self.diagnostics_config && other.diagnostics_config)
            || (self.draw_indirect_count && other.draw_indirect_count)
            || (self.draw_indirect_first_instance && other.draw_indirect_first_instance)
            || (self.dual_src_blend && other.dual_src_blend)
            || (self.dynamic_rendering && other.dynamic_rendering)
            || (self.events && other.events)
            || (self.exclusive_scissor && other.exclusive_scissor)
            || (self.extended_dynamic_state && other.extended_dynamic_state)
            || (self.extended_dynamic_state2 && other.extended_dynamic_state2)
            || (self.extended_dynamic_state2_logic_op && other.extended_dynamic_state2_logic_op)
            || (self.extended_dynamic_state2_patch_control_points
                && other.extended_dynamic_state2_patch_control_points)
            || (self.extended_dynamic_state3_alpha_to_coverage_enable
                && other.extended_dynamic_state3_alpha_to_coverage_enable)
            || (self.extended_dynamic_state3_alpha_to_one_enable
                && other.extended_dynamic_state3_alpha_to_one_enable)
            || (self.extended_dynamic_state3_color_blend_advanced
                && other.extended_dynamic_state3_color_blend_advanced)
            || (self.extended_dynamic_state3_color_blend_enable
                && other.extended_dynamic_state3_color_blend_enable)
            || (self.extended_dynamic_state3_color_blend_equation
                && other.extended_dynamic_state3_color_blend_equation)
            || (self.extended_dynamic_state3_color_write_mask
                && other.extended_dynamic_state3_color_write_mask)
            || (self.extended_dynamic_state3_conservative_rasterization_mode
                && other.extended_dynamic_state3_conservative_rasterization_mode)
            || (self.extended_dynamic_state3_coverage_modulation_mode
                && other.extended_dynamic_state3_coverage_modulation_mode)
            || (self.extended_dynamic_state3_coverage_modulation_table
                && other.extended_dynamic_state3_coverage_modulation_table)
            || (self.extended_dynamic_state3_coverage_modulation_table_enable
                && other.extended_dynamic_state3_coverage_modulation_table_enable)
            || (self.extended_dynamic_state3_coverage_reduction_mode
                && other.extended_dynamic_state3_coverage_reduction_mode)
            || (self.extended_dynamic_state3_coverage_to_color_enable
                && other.extended_dynamic_state3_coverage_to_color_enable)
            || (self.extended_dynamic_state3_coverage_to_color_location
                && other.extended_dynamic_state3_coverage_to_color_location)
            || (self.extended_dynamic_state3_depth_clamp_enable
                && other.extended_dynamic_state3_depth_clamp_enable)
            || (self.extended_dynamic_state3_depth_clip_enable
                && other.extended_dynamic_state3_depth_clip_enable)
            || (self.extended_dynamic_state3_depth_clip_negative_one_to_one
                && other.extended_dynamic_state3_depth_clip_negative_one_to_one)
            || (self.extended_dynamic_state3_extra_primitive_overestimation_size
                && other.extended_dynamic_state3_extra_primitive_overestimation_size)
            || (self.extended_dynamic_state3_line_rasterization_mode
                && other.extended_dynamic_state3_line_rasterization_mode)
            || (self.extended_dynamic_state3_line_stipple_enable
                && other.extended_dynamic_state3_line_stipple_enable)
            || (self.extended_dynamic_state3_logic_op_enable
                && other.extended_dynamic_state3_logic_op_enable)
            || (self.extended_dynamic_state3_polygon_mode
                && other.extended_dynamic_state3_polygon_mode)
            || (self.extended_dynamic_state3_provoking_vertex_mode
                && other.extended_dynamic_state3_provoking_vertex_mode)
            || (self.extended_dynamic_state3_rasterization_samples
                && other.extended_dynamic_state3_rasterization_samples)
            || (self.extended_dynamic_state3_rasterization_stream
                && other.extended_dynamic_state3_rasterization_stream)
            || (self.extended_dynamic_state3_representative_fragment_test_enable
                && other.extended_dynamic_state3_representative_fragment_test_enable)
            || (self.extended_dynamic_state3_sample_locations_enable
                && other.extended_dynamic_state3_sample_locations_enable)
            || (self.extended_dynamic_state3_sample_mask
                && other.extended_dynamic_state3_sample_mask)
            || (self.extended_dynamic_state3_shading_rate_image_enable
                && other.extended_dynamic_state3_shading_rate_image_enable)
            || (self.extended_dynamic_state3_tessellation_domain_origin
                && other.extended_dynamic_state3_tessellation_domain_origin)
            || (self.extended_dynamic_state3_viewport_swizzle
                && other.extended_dynamic_state3_viewport_swizzle)
            || (self.extended_dynamic_state3_viewport_w_scaling_enable
                && other.extended_dynamic_state3_viewport_w_scaling_enable)
            || (self.external_memory_rdma && other.external_memory_rdma)
            || (self.fill_mode_non_solid && other.fill_mode_non_solid)
            || (self.format_a4b4g4r4 && other.format_a4b4g4r4)
            || (self.format_a4r4g4b4 && other.format_a4r4g4b4)
            || (self.format_rgba10x6_without_y_cb_cr_sampler
                && other.format_rgba10x6_without_y_cb_cr_sampler)
            || (self.fragment_density_map && other.fragment_density_map)
            || (self.fragment_density_map_deferred && other.fragment_density_map_deferred)
            || (self.fragment_density_map_dynamic && other.fragment_density_map_dynamic)
            || (self.fragment_density_map_non_subsampled_images
                && other.fragment_density_map_non_subsampled_images)
            || (self.fragment_density_map_offset && other.fragment_density_map_offset)
            || (self.fragment_shader_barycentric && other.fragment_shader_barycentric)
            || (self.fragment_shader_pixel_interlock && other.fragment_shader_pixel_interlock)
            || (self.fragment_shader_sample_interlock && other.fragment_shader_sample_interlock)
            || (self.fragment_shader_shading_rate_interlock
                && other.fragment_shader_shading_rate_interlock)
            || (self.fragment_shading_rate_enums && other.fragment_shading_rate_enums)
            || (self.fragment_stores_and_atomics && other.fragment_stores_and_atomics)
            || (self.full_draw_index_uint32 && other.full_draw_index_uint32)
            || (self.geometry_shader && other.geometry_shader)
            || (self.geometry_streams && other.geometry_streams)
            || (self.global_priority_query && other.global_priority_query)
            || (self.graphics_pipeline_library && other.graphics_pipeline_library)
            || (self.host_query_reset && other.host_query_reset)
            || (self.image2_d_view_of3_d && other.image2_d_view_of3_d)
            || (self.image_compression_control && other.image_compression_control)
            || (self.image_compression_control_swapchain
                && other.image_compression_control_swapchain)
            || (self.image_cube_array && other.image_cube_array)
            || (self.image_footprint && other.image_footprint)
            || (self.image_view2_d_on3_d_image && other.image_view2_d_on3_d_image)
            || (self.image_view_format_reinterpretation && other.image_view_format_reinterpretation)
            || (self.image_view_format_swizzle && other.image_view_format_swizzle)
            || (self.imageless_framebuffer && other.imageless_framebuffer)
            || (self.independent_blend && other.independent_blend)
            || (self.index_type_uint8 && other.index_type_uint8)
            || (self.indirect_copy && other.indirect_copy)
            || (self.inherited_conditional_rendering && other.inherited_conditional_rendering)
            || (self.inherited_queries && other.inherited_queries)
            || (self.inherited_viewport_scissor2_d && other.inherited_viewport_scissor2_d)
            || (self.inline_uniform_block && other.inline_uniform_block)
            || (self.invocation_mask && other.invocation_mask)
            || (self.large_points && other.large_points)
            || (self.legacy_dithering && other.legacy_dithering)
            || (self.linear_color_attachment && other.linear_color_attachment)
            || (self.logic_op && other.logic_op)
            || (self.maintenance4 && other.maintenance4)
            || (self.memory_decompression && other.memory_decompression)
            || (self.memory_priority && other.memory_priority)
            || (self.mesh_shader && other.mesh_shader)
            || (self.mesh_shader_queries && other.mesh_shader_queries)
            || (self.micromap && other.micromap)
            || (self.micromap_capture_replay && other.micromap_capture_replay)
            || (self.micromap_host_commands && other.micromap_host_commands)
            || (self.min_lod && other.min_lod)
            || (self.multi_draw && other.multi_draw)
            || (self.multi_draw_indirect && other.multi_draw_indirect)
            || (self.multi_viewport && other.multi_viewport)
            || (self.multisample_array_image && other.multisample_array_image)
            || (self.multisampled_render_to_single_sampled
                && other.multisampled_render_to_single_sampled)
            || (self.multiview && other.multiview)
            || (self.multiview_geometry_shader && other.multiview_geometry_shader)
            || (self.multiview_mesh_shader && other.multiview_mesh_shader)
            || (self.multiview_per_view_viewports && other.multiview_per_view_viewports)
            || (self.multiview_tessellation_shader && other.multiview_tessellation_shader)
            || (self.mutable_comparison_samplers && other.mutable_comparison_samplers)
            || (self.mutable_descriptor_type && other.mutable_descriptor_type)
            || (self.no_invocation_fragment_shading_rates
                && other.no_invocation_fragment_shading_rates)
            || (self.non_seamless_cube_map && other.non_seamless_cube_map)
            || (self.null_descriptor && other.null_descriptor)
            || (self.occlusion_query_precise && other.occlusion_query_precise)
            || (self.optical_flow && other.optical_flow)
            || (self.pageable_device_local_memory && other.pageable_device_local_memory)
            || (self.performance_counter_multiple_query_pools
                && other.performance_counter_multiple_query_pools)
            || (self.performance_counter_query_pools && other.performance_counter_query_pools)
            || (self.pipeline_creation_cache_control && other.pipeline_creation_cache_control)
            || (self.pipeline_executable_info && other.pipeline_executable_info)
            || (self.pipeline_fragment_shading_rate && other.pipeline_fragment_shading_rate)
            || (self.pipeline_properties_identifier && other.pipeline_properties_identifier)
            || (self.pipeline_protected_access && other.pipeline_protected_access)
            || (self.pipeline_robustness && other.pipeline_robustness)
            || (self.pipeline_statistics_query && other.pipeline_statistics_query)
            || (self.point_polygons && other.point_polygons)
            || (self.present_barrier && other.present_barrier)
            || (self.present_id && other.present_id)
            || (self.present_wait && other.present_wait)
            || (self.primitive_fragment_shading_rate && other.primitive_fragment_shading_rate)
            || (self.primitive_fragment_shading_rate_mesh_shader
                && other.primitive_fragment_shading_rate_mesh_shader)
            || (self.primitive_topology_list_restart && other.primitive_topology_list_restart)
            || (self.primitive_topology_patch_list_restart
                && other.primitive_topology_patch_list_restart)
            || (self.primitives_generated_query && other.primitives_generated_query)
            || (self.primitives_generated_query_with_non_zero_streams
                && other.primitives_generated_query_with_non_zero_streams)
            || (self.primitives_generated_query_with_rasterizer_discard
                && other.primitives_generated_query_with_rasterizer_discard)
            || (self.private_data && other.private_data)
            || (self.protected_memory && other.protected_memory)
            || (self.provoking_vertex_last && other.provoking_vertex_last)
            || (self.rasterization_order_color_attachment_access
                && other.rasterization_order_color_attachment_access)
            || (self.rasterization_order_depth_attachment_access
                && other.rasterization_order_depth_attachment_access)
            || (self.rasterization_order_stencil_attachment_access
                && other.rasterization_order_stencil_attachment_access)
            || (self.ray_query && other.ray_query)
            || (self.ray_tracing_invocation_reorder && other.ray_tracing_invocation_reorder)
            || (self.ray_tracing_maintenance1 && other.ray_tracing_maintenance1)
            || (self.ray_tracing_motion_blur && other.ray_tracing_motion_blur)
            || (self.ray_tracing_motion_blur_pipeline_trace_rays_indirect
                && other.ray_tracing_motion_blur_pipeline_trace_rays_indirect)
            || (self.ray_tracing_pipeline && other.ray_tracing_pipeline)
            || (self.ray_tracing_pipeline_shader_group_handle_capture_replay
                && other.ray_tracing_pipeline_shader_group_handle_capture_replay)
            || (self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
                && other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed)
            || (self.ray_tracing_pipeline_trace_rays_indirect
                && other.ray_tracing_pipeline_trace_rays_indirect)
            || (self.ray_tracing_pipeline_trace_rays_indirect2
                && other.ray_tracing_pipeline_trace_rays_indirect2)
            || (self.ray_traversal_primitive_culling && other.ray_traversal_primitive_culling)
            || (self.rectangular_lines && other.rectangular_lines)
            || (self.report_address_binding && other.report_address_binding)
            || (self.representative_fragment_test && other.representative_fragment_test)
            || (self.robust_buffer_access && other.robust_buffer_access)
            || (self.robust_buffer_access2 && other.robust_buffer_access2)
            || (self.robust_image_access && other.robust_image_access)
            || (self.robust_image_access2 && other.robust_image_access2)
            || (self.runtime_descriptor_array && other.runtime_descriptor_array)
            || (self.sample_rate_shading && other.sample_rate_shading)
            || (self.sampler2_d_view_of3_d && other.sampler2_d_view_of3_d)
            || (self.sampler_anisotropy && other.sampler_anisotropy)
            || (self.sampler_filter_minmax && other.sampler_filter_minmax)
            || (self.sampler_mip_lod_bias && other.sampler_mip_lod_bias)
            || (self.sampler_mirror_clamp_to_edge && other.sampler_mirror_clamp_to_edge)
            || (self.sampler_ycbcr_conversion && other.sampler_ycbcr_conversion)
            || (self.scalar_block_layout && other.scalar_block_layout)
            || (self.separate_depth_stencil_layouts && other.separate_depth_stencil_layouts)
            || (self.separate_stencil_mask_ref && other.separate_stencil_mask_ref)
            || (self.shader_buffer_float16_atomic_add && other.shader_buffer_float16_atomic_add)
            || (self.shader_buffer_float16_atomic_min_max
                && other.shader_buffer_float16_atomic_min_max)
            || (self.shader_buffer_float16_atomics && other.shader_buffer_float16_atomics)
            || (self.shader_buffer_float32_atomic_add && other.shader_buffer_float32_atomic_add)
            || (self.shader_buffer_float32_atomic_min_max
                && other.shader_buffer_float32_atomic_min_max)
            || (self.shader_buffer_float32_atomics && other.shader_buffer_float32_atomics)
            || (self.shader_buffer_float64_atomic_add && other.shader_buffer_float64_atomic_add)
            || (self.shader_buffer_float64_atomic_min_max
                && other.shader_buffer_float64_atomic_min_max)
            || (self.shader_buffer_float64_atomics && other.shader_buffer_float64_atomics)
            || (self.shader_buffer_int64_atomics && other.shader_buffer_int64_atomics)
            || (self.shader_clip_distance && other.shader_clip_distance)
            || (self.shader_core_builtins && other.shader_core_builtins)
            || (self.shader_cull_distance && other.shader_cull_distance)
            || (self.shader_demote_to_helper_invocation && other.shader_demote_to_helper_invocation)
            || (self.shader_device_clock && other.shader_device_clock)
            || (self.shader_draw_parameters && other.shader_draw_parameters)
            || (self.shader_early_and_late_fragment_tests
                && other.shader_early_and_late_fragment_tests)
            || (self.shader_float16 && other.shader_float16)
            || (self.shader_float64 && other.shader_float64)
            || (self.shader_image_float32_atomic_add && other.shader_image_float32_atomic_add)
            || (self.shader_image_float32_atomic_min_max
                && other.shader_image_float32_atomic_min_max)
            || (self.shader_image_float32_atomics && other.shader_image_float32_atomics)
            || (self.shader_image_gather_extended && other.shader_image_gather_extended)
            || (self.shader_image_int64_atomics && other.shader_image_int64_atomics)
            || (self.shader_input_attachment_array_dynamic_indexing
                && other.shader_input_attachment_array_dynamic_indexing)
            || (self.shader_input_attachment_array_non_uniform_indexing
                && other.shader_input_attachment_array_non_uniform_indexing)
            || (self.shader_int16 && other.shader_int16)
            || (self.shader_int64 && other.shader_int64)
            || (self.shader_int8 && other.shader_int8)
            || (self.shader_integer_dot_product && other.shader_integer_dot_product)
            || (self.shader_integer_functions2 && other.shader_integer_functions2)
            || (self.shader_module_identifier && other.shader_module_identifier)
            || (self.shader_output_layer && other.shader_output_layer)
            || (self.shader_output_viewport_index && other.shader_output_viewport_index)
            || (self.shader_resource_min_lod && other.shader_resource_min_lod)
            || (self.shader_resource_residency && other.shader_resource_residency)
            || (self.shader_sample_rate_interpolation_functions
                && other.shader_sample_rate_interpolation_functions)
            || (self.shader_sampled_image_array_dynamic_indexing
                && other.shader_sampled_image_array_dynamic_indexing)
            || (self.shader_sampled_image_array_non_uniform_indexing
                && other.shader_sampled_image_array_non_uniform_indexing)
            || (self.shader_shared_float16_atomic_add && other.shader_shared_float16_atomic_add)
            || (self.shader_shared_float16_atomic_min_max
                && other.shader_shared_float16_atomic_min_max)
            || (self.shader_shared_float16_atomics && other.shader_shared_float16_atomics)
            || (self.shader_shared_float32_atomic_add && other.shader_shared_float32_atomic_add)
            || (self.shader_shared_float32_atomic_min_max
                && other.shader_shared_float32_atomic_min_max)
            || (self.shader_shared_float32_atomics && other.shader_shared_float32_atomics)
            || (self.shader_shared_float64_atomic_add && other.shader_shared_float64_atomic_add)
            || (self.shader_shared_float64_atomic_min_max
                && other.shader_shared_float64_atomic_min_max)
            || (self.shader_shared_float64_atomics && other.shader_shared_float64_atomics)
            || (self.shader_shared_int64_atomics && other.shader_shared_int64_atomics)
            || (self.shader_sm_builtins && other.shader_sm_builtins)
            || (self.shader_storage_buffer_array_dynamic_indexing
                && other.shader_storage_buffer_array_dynamic_indexing)
            || (self.shader_storage_buffer_array_non_uniform_indexing
                && other.shader_storage_buffer_array_non_uniform_indexing)
            || (self.shader_storage_image_array_dynamic_indexing
                && other.shader_storage_image_array_dynamic_indexing)
            || (self.shader_storage_image_array_non_uniform_indexing
                && other.shader_storage_image_array_non_uniform_indexing)
            || (self.shader_storage_image_extended_formats
                && other.shader_storage_image_extended_formats)
            || (self.shader_storage_image_multisample && other.shader_storage_image_multisample)
            || (self.shader_storage_image_read_without_format
                && other.shader_storage_image_read_without_format)
            || (self.shader_storage_image_write_without_format
                && other.shader_storage_image_write_without_format)
            || (self.shader_storage_texel_buffer_array_dynamic_indexing
                && other.shader_storage_texel_buffer_array_dynamic_indexing)
            || (self.shader_storage_texel_buffer_array_non_uniform_indexing
                && other.shader_storage_texel_buffer_array_non_uniform_indexing)
            || (self.shader_subgroup_clock && other.shader_subgroup_clock)
            || (self.shader_subgroup_extended_types && other.shader_subgroup_extended_types)
            || (self.shader_subgroup_uniform_control_flow
                && other.shader_subgroup_uniform_control_flow)
            || (self.shader_terminate_invocation && other.shader_terminate_invocation)
            || (self.shader_tessellation_and_geometry_point_size
                && other.shader_tessellation_and_geometry_point_size)
            || (self.shader_uniform_buffer_array_dynamic_indexing
                && other.shader_uniform_buffer_array_dynamic_indexing)
            || (self.shader_uniform_buffer_array_non_uniform_indexing
                && other.shader_uniform_buffer_array_non_uniform_indexing)
            || (self.shader_uniform_texel_buffer_array_dynamic_indexing
                && other.shader_uniform_texel_buffer_array_dynamic_indexing)
            || (self.shader_uniform_texel_buffer_array_non_uniform_indexing
                && other.shader_uniform_texel_buffer_array_non_uniform_indexing)
            || (self.shader_zero_initialize_workgroup_memory
                && other.shader_zero_initialize_workgroup_memory)
            || (self.shading_rate_coarse_sample_order && other.shading_rate_coarse_sample_order)
            || (self.shading_rate_image && other.shading_rate_image)
            || (self.smooth_lines && other.smooth_lines)
            || (self.sparse_binding && other.sparse_binding)
            || (self.sparse_image_float32_atomic_add && other.sparse_image_float32_atomic_add)
            || (self.sparse_image_float32_atomic_min_max
                && other.sparse_image_float32_atomic_min_max)
            || (self.sparse_image_float32_atomics && other.sparse_image_float32_atomics)
            || (self.sparse_image_int64_atomics && other.sparse_image_int64_atomics)
            || (self.sparse_residency16_samples && other.sparse_residency16_samples)
            || (self.sparse_residency2_samples && other.sparse_residency2_samples)
            || (self.sparse_residency4_samples && other.sparse_residency4_samples)
            || (self.sparse_residency8_samples && other.sparse_residency8_samples)
            || (self.sparse_residency_aliased && other.sparse_residency_aliased)
            || (self.sparse_residency_buffer && other.sparse_residency_buffer)
            || (self.sparse_residency_image2_d && other.sparse_residency_image2_d)
            || (self.sparse_residency_image3_d && other.sparse_residency_image3_d)
            || (self.stippled_bresenham_lines && other.stippled_bresenham_lines)
            || (self.stippled_rectangular_lines && other.stippled_rectangular_lines)
            || (self.stippled_smooth_lines && other.stippled_smooth_lines)
            || (self.storage_buffer16_bit_access && other.storage_buffer16_bit_access)
            || (self.storage_buffer8_bit_access && other.storage_buffer8_bit_access)
            || (self.storage_input_output16 && other.storage_input_output16)
            || (self.storage_push_constant16 && other.storage_push_constant16)
            || (self.storage_push_constant8 && other.storage_push_constant8)
            || (self.subgroup_broadcast_dynamic_id && other.subgroup_broadcast_dynamic_id)
            || (self.subgroup_size_control && other.subgroup_size_control)
            || (self.subpass_merge_feedback && other.subpass_merge_feedback)
            || (self.subpass_shading && other.subpass_shading)
            || (self.supersample_fragment_shading_rates && other.supersample_fragment_shading_rates)
            || (self.swapchain_maintenance1 && other.swapchain_maintenance1)
            || (self.synchronization2 && other.synchronization2)
            || (self.task_shader && other.task_shader)
            || (self.tessellation_isolines && other.tessellation_isolines)
            || (self.tessellation_point_mode && other.tessellation_point_mode)
            || (self.tessellation_shader && other.tessellation_shader)
            || (self.texel_buffer_alignment && other.texel_buffer_alignment)
            || (self.texture_block_match && other.texture_block_match)
            || (self.texture_box_filter && other.texture_box_filter)
            || (self.texture_compression_astc_hdr && other.texture_compression_astc_hdr)
            || (self.texture_compression_astc_ldr && other.texture_compression_astc_ldr)
            || (self.texture_compression_bc && other.texture_compression_bc)
            || (self.texture_compression_etc2 && other.texture_compression_etc2)
            || (self.texture_sample_weighted && other.texture_sample_weighted)
            || (self.tile_properties && other.tile_properties)
            || (self.timeline_semaphore && other.timeline_semaphore)
            || (self.transform_feedback && other.transform_feedback)
            || (self.transform_feedback_preserves_provoking_vertex
                && other.transform_feedback_preserves_provoking_vertex)
            || (self.triangle_fans && other.triangle_fans)
            || (self.uniform_and_storage_buffer16_bit_access
                && other.uniform_and_storage_buffer16_bit_access)
            || (self.uniform_and_storage_buffer8_bit_access
                && other.uniform_and_storage_buffer8_bit_access)
            || (self.uniform_buffer_standard_layout && other.uniform_buffer_standard_layout)
            || (self.variable_multisample_rate && other.variable_multisample_rate)
            || (self.variable_pointers && other.variable_pointers)
            || (self.variable_pointers_storage_buffer && other.variable_pointers_storage_buffer)
            || (self.vertex_attribute_access_beyond_stride
                && other.vertex_attribute_access_beyond_stride)
            || (self.vertex_attribute_instance_rate_divisor
                && other.vertex_attribute_instance_rate_divisor)
            || (self.vertex_attribute_instance_rate_zero_divisor
                && other.vertex_attribute_instance_rate_zero_divisor)
            || (self.vertex_input_dynamic_state && other.vertex_input_dynamic_state)
            || (self.vertex_pipeline_stores_and_atomics && other.vertex_pipeline_stores_and_atomics)
            || (self.vulkan_memory_model && other.vulkan_memory_model)
            || (self.vulkan_memory_model_availability_visibility_chains
                && other.vulkan_memory_model_availability_visibility_chains)
            || (self.vulkan_memory_model_device_scope && other.vulkan_memory_model_device_scope)
            || (self.wide_lines && other.wide_lines)
            || (self.workgroup_memory_explicit_layout && other.workgroup_memory_explicit_layout)
            || (self.workgroup_memory_explicit_layout16_bit_access
                && other.workgroup_memory_explicit_layout16_bit_access)
            || (self.workgroup_memory_explicit_layout8_bit_access
                && other.workgroup_memory_explicit_layout8_bit_access)
            || (self.workgroup_memory_explicit_layout_scalar_block_layout
                && other.workgroup_memory_explicit_layout_scalar_block_layout)
            || (self.ycbcr2plane444_formats && other.ycbcr2plane444_formats)
            || (self.ycbcr_image_arrays && other.ycbcr_image_arrays)
    }
    #[doc = r" Returns whether all members in `other` are set in `self`."]
    #[inline]
    pub const fn contains(&self, other: &Self) -> bool {
        (self.acceleration_structure || !other.acceleration_structure)
            && (self.acceleration_structure_capture_replay
                || !other.acceleration_structure_capture_replay)
            && (self.acceleration_structure_host_commands
                || !other.acceleration_structure_host_commands)
            && (self.acceleration_structure_indirect_build
                || !other.acceleration_structure_indirect_build)
            && (self.advanced_blend_coherent_operations
                || !other.advanced_blend_coherent_operations)
            && (self.alpha_to_one || !other.alpha_to_one)
            && (self.amigo_profiling || !other.amigo_profiling)
            && (self.attachment_feedback_loop_layout || !other.attachment_feedback_loop_layout)
            && (self.attachment_fragment_shading_rate || !other.attachment_fragment_shading_rate)
            && (self.border_color_swizzle || !other.border_color_swizzle)
            && (self.border_color_swizzle_from_image || !other.border_color_swizzle_from_image)
            && (self.bresenham_lines || !other.bresenham_lines)
            && (self.buffer_device_address || !other.buffer_device_address)
            && (self.buffer_device_address_capture_replay
                || !other.buffer_device_address_capture_replay)
            && (self.buffer_device_address_multi_device
                || !other.buffer_device_address_multi_device)
            && (self.color_write_enable || !other.color_write_enable)
            && (self.compute_derivative_group_linear || !other.compute_derivative_group_linear)
            && (self.compute_derivative_group_quads || !other.compute_derivative_group_quads)
            && (self.compute_full_subgroups || !other.compute_full_subgroups)
            && (self.conditional_rendering || !other.conditional_rendering)
            && (self.constant_alpha_color_blend_factors
                || !other.constant_alpha_color_blend_factors)
            && (self.cooperative_matrix || !other.cooperative_matrix)
            && (self.cooperative_matrix_robust_buffer_access
                || !other.cooperative_matrix_robust_buffer_access)
            && (self.corner_sampled_image || !other.corner_sampled_image)
            && (self.coverage_reduction_mode || !other.coverage_reduction_mode)
            && (self.custom_border_color_without_format
                || !other.custom_border_color_without_format)
            && (self.custom_border_colors || !other.custom_border_colors)
            && (self.decode_mode_shared_exponent || !other.decode_mode_shared_exponent)
            && (self.dedicated_allocation_image_aliasing
                || !other.dedicated_allocation_image_aliasing)
            && (self.depth_bias_clamp || !other.depth_bias_clamp)
            && (self.depth_bounds || !other.depth_bounds)
            && (self.depth_clamp || !other.depth_clamp)
            && (self.depth_clamp_zero_one || !other.depth_clamp_zero_one)
            && (self.depth_clip_control || !other.depth_clip_control)
            && (self.depth_clip_enable || !other.depth_clip_enable)
            && (self.descriptor_binding_acceleration_structure_update_after_bind
                || !other.descriptor_binding_acceleration_structure_update_after_bind)
            && (self.descriptor_binding_inline_uniform_block_update_after_bind
                || !other.descriptor_binding_inline_uniform_block_update_after_bind)
            && (self.descriptor_binding_partially_bound
                || !other.descriptor_binding_partially_bound)
            && (self.descriptor_binding_sampled_image_update_after_bind
                || !other.descriptor_binding_sampled_image_update_after_bind)
            && (self.descriptor_binding_storage_buffer_update_after_bind
                || !other.descriptor_binding_storage_buffer_update_after_bind)
            && (self.descriptor_binding_storage_image_update_after_bind
                || !other.descriptor_binding_storage_image_update_after_bind)
            && (self.descriptor_binding_storage_texel_buffer_update_after_bind
                || !other.descriptor_binding_storage_texel_buffer_update_after_bind)
            && (self.descriptor_binding_uniform_buffer_update_after_bind
                || !other.descriptor_binding_uniform_buffer_update_after_bind)
            && (self.descriptor_binding_uniform_texel_buffer_update_after_bind
                || !other.descriptor_binding_uniform_texel_buffer_update_after_bind)
            && (self.descriptor_binding_update_unused_while_pending
                || !other.descriptor_binding_update_unused_while_pending)
            && (self.descriptor_binding_variable_descriptor_count
                || !other.descriptor_binding_variable_descriptor_count)
            && (self.descriptor_buffer || !other.descriptor_buffer)
            && (self.descriptor_buffer_capture_replay || !other.descriptor_buffer_capture_replay)
            && (self.descriptor_buffer_image_layout_ignored
                || !other.descriptor_buffer_image_layout_ignored)
            && (self.descriptor_buffer_push_descriptors
                || !other.descriptor_buffer_push_descriptors)
            && (self.descriptor_indexing || !other.descriptor_indexing)
            && (self.descriptor_set_host_mapping || !other.descriptor_set_host_mapping)
            && (self.device_coherent_memory || !other.device_coherent_memory)
            && (self.device_fault || !other.device_fault)
            && (self.device_fault_vendor_binary || !other.device_fault_vendor_binary)
            && (self.device_generated_commands || !other.device_generated_commands)
            && (self.device_memory_report || !other.device_memory_report)
            && (self.diagnostics_config || !other.diagnostics_config)
            && (self.draw_indirect_count || !other.draw_indirect_count)
            && (self.draw_indirect_first_instance || !other.draw_indirect_first_instance)
            && (self.dual_src_blend || !other.dual_src_blend)
            && (self.dynamic_rendering || !other.dynamic_rendering)
            && (self.events || !other.events)
            && (self.exclusive_scissor || !other.exclusive_scissor)
            && (self.extended_dynamic_state || !other.extended_dynamic_state)
            && (self.extended_dynamic_state2 || !other.extended_dynamic_state2)
            && (self.extended_dynamic_state2_logic_op || !other.extended_dynamic_state2_logic_op)
            && (self.extended_dynamic_state2_patch_control_points
                || !other.extended_dynamic_state2_patch_control_points)
            && (self.extended_dynamic_state3_alpha_to_coverage_enable
                || !other.extended_dynamic_state3_alpha_to_coverage_enable)
            && (self.extended_dynamic_state3_alpha_to_one_enable
                || !other.extended_dynamic_state3_alpha_to_one_enable)
            && (self.extended_dynamic_state3_color_blend_advanced
                || !other.extended_dynamic_state3_color_blend_advanced)
            && (self.extended_dynamic_state3_color_blend_enable
                || !other.extended_dynamic_state3_color_blend_enable)
            && (self.extended_dynamic_state3_color_blend_equation
                || !other.extended_dynamic_state3_color_blend_equation)
            && (self.extended_dynamic_state3_color_write_mask
                || !other.extended_dynamic_state3_color_write_mask)
            && (self.extended_dynamic_state3_conservative_rasterization_mode
                || !other.extended_dynamic_state3_conservative_rasterization_mode)
            && (self.extended_dynamic_state3_coverage_modulation_mode
                || !other.extended_dynamic_state3_coverage_modulation_mode)
            && (self.extended_dynamic_state3_coverage_modulation_table
                || !other.extended_dynamic_state3_coverage_modulation_table)
            && (self.extended_dynamic_state3_coverage_modulation_table_enable
                || !other.extended_dynamic_state3_coverage_modulation_table_enable)
            && (self.extended_dynamic_state3_coverage_reduction_mode
                || !other.extended_dynamic_state3_coverage_reduction_mode)
            && (self.extended_dynamic_state3_coverage_to_color_enable
                || !other.extended_dynamic_state3_coverage_to_color_enable)
            && (self.extended_dynamic_state3_coverage_to_color_location
                || !other.extended_dynamic_state3_coverage_to_color_location)
            && (self.extended_dynamic_state3_depth_clamp_enable
                || !other.extended_dynamic_state3_depth_clamp_enable)
            && (self.extended_dynamic_state3_depth_clip_enable
                || !other.extended_dynamic_state3_depth_clip_enable)
            && (self.extended_dynamic_state3_depth_clip_negative_one_to_one
                || !other.extended_dynamic_state3_depth_clip_negative_one_to_one)
            && (self.extended_dynamic_state3_extra_primitive_overestimation_size
                || !other.extended_dynamic_state3_extra_primitive_overestimation_size)
            && (self.extended_dynamic_state3_line_rasterization_mode
                || !other.extended_dynamic_state3_line_rasterization_mode)
            && (self.extended_dynamic_state3_line_stipple_enable
                || !other.extended_dynamic_state3_line_stipple_enable)
            && (self.extended_dynamic_state3_logic_op_enable
                || !other.extended_dynamic_state3_logic_op_enable)
            && (self.extended_dynamic_state3_polygon_mode
                || !other.extended_dynamic_state3_polygon_mode)
            && (self.extended_dynamic_state3_provoking_vertex_mode
                || !other.extended_dynamic_state3_provoking_vertex_mode)
            && (self.extended_dynamic_state3_rasterization_samples
                || !other.extended_dynamic_state3_rasterization_samples)
            && (self.extended_dynamic_state3_rasterization_stream
                || !other.extended_dynamic_state3_rasterization_stream)
            && (self.extended_dynamic_state3_representative_fragment_test_enable
                || !other.extended_dynamic_state3_representative_fragment_test_enable)
            && (self.extended_dynamic_state3_sample_locations_enable
                || !other.extended_dynamic_state3_sample_locations_enable)
            && (self.extended_dynamic_state3_sample_mask
                || !other.extended_dynamic_state3_sample_mask)
            && (self.extended_dynamic_state3_shading_rate_image_enable
                || !other.extended_dynamic_state3_shading_rate_image_enable)
            && (self.extended_dynamic_state3_tessellation_domain_origin
                || !other.extended_dynamic_state3_tessellation_domain_origin)
            && (self.extended_dynamic_state3_viewport_swizzle
                || !other.extended_dynamic_state3_viewport_swizzle)
            && (self.extended_dynamic_state3_viewport_w_scaling_enable
                || !other.extended_dynamic_state3_viewport_w_scaling_enable)
            && (self.external_memory_rdma || !other.external_memory_rdma)
            && (self.fill_mode_non_solid || !other.fill_mode_non_solid)
            && (self.format_a4b4g4r4 || !other.format_a4b4g4r4)
            && (self.format_a4r4g4b4 || !other.format_a4r4g4b4)
            && (self.format_rgba10x6_without_y_cb_cr_sampler
                || !other.format_rgba10x6_without_y_cb_cr_sampler)
            && (self.fragment_density_map || !other.fragment_density_map)
            && (self.fragment_density_map_deferred || !other.fragment_density_map_deferred)
            && (self.fragment_density_map_dynamic || !other.fragment_density_map_dynamic)
            && (self.fragment_density_map_non_subsampled_images
                || !other.fragment_density_map_non_subsampled_images)
            && (self.fragment_density_map_offset || !other.fragment_density_map_offset)
            && (self.fragment_shader_barycentric || !other.fragment_shader_barycentric)
            && (self.fragment_shader_pixel_interlock || !other.fragment_shader_pixel_interlock)
            && (self.fragment_shader_sample_interlock || !other.fragment_shader_sample_interlock)
            && (self.fragment_shader_shading_rate_interlock
                || !other.fragment_shader_shading_rate_interlock)
            && (self.fragment_shading_rate_enums || !other.fragment_shading_rate_enums)
            && (self.fragment_stores_and_atomics || !other.fragment_stores_and_atomics)
            && (self.full_draw_index_uint32 || !other.full_draw_index_uint32)
            && (self.geometry_shader || !other.geometry_shader)
            && (self.geometry_streams || !other.geometry_streams)
            && (self.global_priority_query || !other.global_priority_query)
            && (self.graphics_pipeline_library || !other.graphics_pipeline_library)
            && (self.host_query_reset || !other.host_query_reset)
            && (self.image2_d_view_of3_d || !other.image2_d_view_of3_d)
            && (self.image_compression_control || !other.image_compression_control)
            && (self.image_compression_control_swapchain
                || !other.image_compression_control_swapchain)
            && (self.image_cube_array || !other.image_cube_array)
            && (self.image_footprint || !other.image_footprint)
            && (self.image_view2_d_on3_d_image || !other.image_view2_d_on3_d_image)
            && (self.image_view_format_reinterpretation
                || !other.image_view_format_reinterpretation)
            && (self.image_view_format_swizzle || !other.image_view_format_swizzle)
            && (self.imageless_framebuffer || !other.imageless_framebuffer)
            && (self.independent_blend || !other.independent_blend)
            && (self.index_type_uint8 || !other.index_type_uint8)
            && (self.indirect_copy || !other.indirect_copy)
            && (self.inherited_conditional_rendering || !other.inherited_conditional_rendering)
            && (self.inherited_queries || !other.inherited_queries)
            && (self.inherited_viewport_scissor2_d || !other.inherited_viewport_scissor2_d)
            && (self.inline_uniform_block || !other.inline_uniform_block)
            && (self.invocation_mask || !other.invocation_mask)
            && (self.large_points || !other.large_points)
            && (self.legacy_dithering || !other.legacy_dithering)
            && (self.linear_color_attachment || !other.linear_color_attachment)
            && (self.logic_op || !other.logic_op)
            && (self.maintenance4 || !other.maintenance4)
            && (self.memory_decompression || !other.memory_decompression)
            && (self.memory_priority || !other.memory_priority)
            && (self.mesh_shader || !other.mesh_shader)
            && (self.mesh_shader_queries || !other.mesh_shader_queries)
            && (self.micromap || !other.micromap)
            && (self.micromap_capture_replay || !other.micromap_capture_replay)
            && (self.micromap_host_commands || !other.micromap_host_commands)
            && (self.min_lod || !other.min_lod)
            && (self.multi_draw || !other.multi_draw)
            && (self.multi_draw_indirect || !other.multi_draw_indirect)
            && (self.multi_viewport || !other.multi_viewport)
            && (self.multisample_array_image || !other.multisample_array_image)
            && (self.multisampled_render_to_single_sampled
                || !other.multisampled_render_to_single_sampled)
            && (self.multiview || !other.multiview)
            && (self.multiview_geometry_shader || !other.multiview_geometry_shader)
            && (self.multiview_mesh_shader || !other.multiview_mesh_shader)
            && (self.multiview_per_view_viewports || !other.multiview_per_view_viewports)
            && (self.multiview_tessellation_shader || !other.multiview_tessellation_shader)
            && (self.mutable_comparison_samplers || !other.mutable_comparison_samplers)
            && (self.mutable_descriptor_type || !other.mutable_descriptor_type)
            && (self.no_invocation_fragment_shading_rates
                || !other.no_invocation_fragment_shading_rates)
            && (self.non_seamless_cube_map || !other.non_seamless_cube_map)
            && (self.null_descriptor || !other.null_descriptor)
            && (self.occlusion_query_precise || !other.occlusion_query_precise)
            && (self.optical_flow || !other.optical_flow)
            && (self.pageable_device_local_memory || !other.pageable_device_local_memory)
            && (self.performance_counter_multiple_query_pools
                || !other.performance_counter_multiple_query_pools)
            && (self.performance_counter_query_pools || !other.performance_counter_query_pools)
            && (self.pipeline_creation_cache_control || !other.pipeline_creation_cache_control)
            && (self.pipeline_executable_info || !other.pipeline_executable_info)
            && (self.pipeline_fragment_shading_rate || !other.pipeline_fragment_shading_rate)
            && (self.pipeline_properties_identifier || !other.pipeline_properties_identifier)
            && (self.pipeline_protected_access || !other.pipeline_protected_access)
            && (self.pipeline_robustness || !other.pipeline_robustness)
            && (self.pipeline_statistics_query || !other.pipeline_statistics_query)
            && (self.point_polygons || !other.point_polygons)
            && (self.present_barrier || !other.present_barrier)
            && (self.present_id || !other.present_id)
            && (self.present_wait || !other.present_wait)
            && (self.primitive_fragment_shading_rate || !other.primitive_fragment_shading_rate)
            && (self.primitive_fragment_shading_rate_mesh_shader
                || !other.primitive_fragment_shading_rate_mesh_shader)
            && (self.primitive_topology_list_restart || !other.primitive_topology_list_restart)
            && (self.primitive_topology_patch_list_restart
                || !other.primitive_topology_patch_list_restart)
            && (self.primitives_generated_query || !other.primitives_generated_query)
            && (self.primitives_generated_query_with_non_zero_streams
                || !other.primitives_generated_query_with_non_zero_streams)
            && (self.primitives_generated_query_with_rasterizer_discard
                || !other.primitives_generated_query_with_rasterizer_discard)
            && (self.private_data || !other.private_data)
            && (self.protected_memory || !other.protected_memory)
            && (self.provoking_vertex_last || !other.provoking_vertex_last)
            && (self.rasterization_order_color_attachment_access
                || !other.rasterization_order_color_attachment_access)
            && (self.rasterization_order_depth_attachment_access
                || !other.rasterization_order_depth_attachment_access)
            && (self.rasterization_order_stencil_attachment_access
                || !other.rasterization_order_stencil_attachment_access)
            && (self.ray_query || !other.ray_query)
            && (self.ray_tracing_invocation_reorder || !other.ray_tracing_invocation_reorder)
            && (self.ray_tracing_maintenance1 || !other.ray_tracing_maintenance1)
            && (self.ray_tracing_motion_blur || !other.ray_tracing_motion_blur)
            && (self.ray_tracing_motion_blur_pipeline_trace_rays_indirect
                || !other.ray_tracing_motion_blur_pipeline_trace_rays_indirect)
            && (self.ray_tracing_pipeline || !other.ray_tracing_pipeline)
            && (self.ray_tracing_pipeline_shader_group_handle_capture_replay
                || !other.ray_tracing_pipeline_shader_group_handle_capture_replay)
            && (self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
                || !other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed)
            && (self.ray_tracing_pipeline_trace_rays_indirect
                || !other.ray_tracing_pipeline_trace_rays_indirect)
            && (self.ray_tracing_pipeline_trace_rays_indirect2
                || !other.ray_tracing_pipeline_trace_rays_indirect2)
            && (self.ray_traversal_primitive_culling || !other.ray_traversal_primitive_culling)
            && (self.rectangular_lines || !other.rectangular_lines)
            && (self.report_address_binding || !other.report_address_binding)
            && (self.representative_fragment_test || !other.representative_fragment_test)
            && (self.robust_buffer_access || !other.robust_buffer_access)
            && (self.robust_buffer_access2 || !other.robust_buffer_access2)
            && (self.robust_image_access || !other.robust_image_access)
            && (self.robust_image_access2 || !other.robust_image_access2)
            && (self.runtime_descriptor_array || !other.runtime_descriptor_array)
            && (self.sample_rate_shading || !other.sample_rate_shading)
            && (self.sampler2_d_view_of3_d || !other.sampler2_d_view_of3_d)
            && (self.sampler_anisotropy || !other.sampler_anisotropy)
            && (self.sampler_filter_minmax || !other.sampler_filter_minmax)
            && (self.sampler_mip_lod_bias || !other.sampler_mip_lod_bias)
            && (self.sampler_mirror_clamp_to_edge || !other.sampler_mirror_clamp_to_edge)
            && (self.sampler_ycbcr_conversion || !other.sampler_ycbcr_conversion)
            && (self.scalar_block_layout || !other.scalar_block_layout)
            && (self.separate_depth_stencil_layouts || !other.separate_depth_stencil_layouts)
            && (self.separate_stencil_mask_ref || !other.separate_stencil_mask_ref)
            && (self.shader_buffer_float16_atomic_add || !other.shader_buffer_float16_atomic_add)
            && (self.shader_buffer_float16_atomic_min_max
                || !other.shader_buffer_float16_atomic_min_max)
            && (self.shader_buffer_float16_atomics || !other.shader_buffer_float16_atomics)
            && (self.shader_buffer_float32_atomic_add || !other.shader_buffer_float32_atomic_add)
            && (self.shader_buffer_float32_atomic_min_max
                || !other.shader_buffer_float32_atomic_min_max)
            && (self.shader_buffer_float32_atomics || !other.shader_buffer_float32_atomics)
            && (self.shader_buffer_float64_atomic_add || !other.shader_buffer_float64_atomic_add)
            && (self.shader_buffer_float64_atomic_min_max
                || !other.shader_buffer_float64_atomic_min_max)
            && (self.shader_buffer_float64_atomics || !other.shader_buffer_float64_atomics)
            && (self.shader_buffer_int64_atomics || !other.shader_buffer_int64_atomics)
            && (self.shader_clip_distance || !other.shader_clip_distance)
            && (self.shader_core_builtins || !other.shader_core_builtins)
            && (self.shader_cull_distance || !other.shader_cull_distance)
            && (self.shader_demote_to_helper_invocation
                || !other.shader_demote_to_helper_invocation)
            && (self.shader_device_clock || !other.shader_device_clock)
            && (self.shader_draw_parameters || !other.shader_draw_parameters)
            && (self.shader_early_and_late_fragment_tests
                || !other.shader_early_and_late_fragment_tests)
            && (self.shader_float16 || !other.shader_float16)
            && (self.shader_float64 || !other.shader_float64)
            && (self.shader_image_float32_atomic_add || !other.shader_image_float32_atomic_add)
            && (self.shader_image_float32_atomic_min_max
                || !other.shader_image_float32_atomic_min_max)
            && (self.shader_image_float32_atomics || !other.shader_image_float32_atomics)
            && (self.shader_image_gather_extended || !other.shader_image_gather_extended)
            && (self.shader_image_int64_atomics || !other.shader_image_int64_atomics)
            && (self.shader_input_attachment_array_dynamic_indexing
                || !other.shader_input_attachment_array_dynamic_indexing)
            && (self.shader_input_attachment_array_non_uniform_indexing
                || !other.shader_input_attachment_array_non_uniform_indexing)
            && (self.shader_int16 || !other.shader_int16)
            && (self.shader_int64 || !other.shader_int64)
            && (self.shader_int8 || !other.shader_int8)
            && (self.shader_integer_dot_product || !other.shader_integer_dot_product)
            && (self.shader_integer_functions2 || !other.shader_integer_functions2)
            && (self.shader_module_identifier || !other.shader_module_identifier)
            && (self.shader_output_layer || !other.shader_output_layer)
            && (self.shader_output_viewport_index || !other.shader_output_viewport_index)
            && (self.shader_resource_min_lod || !other.shader_resource_min_lod)
            && (self.shader_resource_residency || !other.shader_resource_residency)
            && (self.shader_sample_rate_interpolation_functions
                || !other.shader_sample_rate_interpolation_functions)
            && (self.shader_sampled_image_array_dynamic_indexing
                || !other.shader_sampled_image_array_dynamic_indexing)
            && (self.shader_sampled_image_array_non_uniform_indexing
                || !other.shader_sampled_image_array_non_uniform_indexing)
            && (self.shader_shared_float16_atomic_add || !other.shader_shared_float16_atomic_add)
            && (self.shader_shared_float16_atomic_min_max
                || !other.shader_shared_float16_atomic_min_max)
            && (self.shader_shared_float16_atomics || !other.shader_shared_float16_atomics)
            && (self.shader_shared_float32_atomic_add || !other.shader_shared_float32_atomic_add)
            && (self.shader_shared_float32_atomic_min_max
                || !other.shader_shared_float32_atomic_min_max)
            && (self.shader_shared_float32_atomics || !other.shader_shared_float32_atomics)
            && (self.shader_shared_float64_atomic_add || !other.shader_shared_float64_atomic_add)
            && (self.shader_shared_float64_atomic_min_max
                || !other.shader_shared_float64_atomic_min_max)
            && (self.shader_shared_float64_atomics || !other.shader_shared_float64_atomics)
            && (self.shader_shared_int64_atomics || !other.shader_shared_int64_atomics)
            && (self.shader_sm_builtins || !other.shader_sm_builtins)
            && (self.shader_storage_buffer_array_dynamic_indexing
                || !other.shader_storage_buffer_array_dynamic_indexing)
            && (self.shader_storage_buffer_array_non_uniform_indexing
                || !other.shader_storage_buffer_array_non_uniform_indexing)
            && (self.shader_storage_image_array_dynamic_indexing
                || !other.shader_storage_image_array_dynamic_indexing)
            && (self.shader_storage_image_array_non_uniform_indexing
                || !other.shader_storage_image_array_non_uniform_indexing)
            && (self.shader_storage_image_extended_formats
                || !other.shader_storage_image_extended_formats)
            && (self.shader_storage_image_multisample || !other.shader_storage_image_multisample)
            && (self.shader_storage_image_read_without_format
                || !other.shader_storage_image_read_without_format)
            && (self.shader_storage_image_write_without_format
                || !other.shader_storage_image_write_without_format)
            && (self.shader_storage_texel_buffer_array_dynamic_indexing
                || !other.shader_storage_texel_buffer_array_dynamic_indexing)
            && (self.shader_storage_texel_buffer_array_non_uniform_indexing
                || !other.shader_storage_texel_buffer_array_non_uniform_indexing)
            && (self.shader_subgroup_clock || !other.shader_subgroup_clock)
            && (self.shader_subgroup_extended_types || !other.shader_subgroup_extended_types)
            && (self.shader_subgroup_uniform_control_flow
                || !other.shader_subgroup_uniform_control_flow)
            && (self.shader_terminate_invocation || !other.shader_terminate_invocation)
            && (self.shader_tessellation_and_geometry_point_size
                || !other.shader_tessellation_and_geometry_point_size)
            && (self.shader_uniform_buffer_array_dynamic_indexing
                || !other.shader_uniform_buffer_array_dynamic_indexing)
            && (self.shader_uniform_buffer_array_non_uniform_indexing
                || !other.shader_uniform_buffer_array_non_uniform_indexing)
            && (self.shader_uniform_texel_buffer_array_dynamic_indexing
                || !other.shader_uniform_texel_buffer_array_dynamic_indexing)
            && (self.shader_uniform_texel_buffer_array_non_uniform_indexing
                || !other.shader_uniform_texel_buffer_array_non_uniform_indexing)
            && (self.shader_zero_initialize_workgroup_memory
                || !other.shader_zero_initialize_workgroup_memory)
            && (self.shading_rate_coarse_sample_order || !other.shading_rate_coarse_sample_order)
            && (self.shading_rate_image || !other.shading_rate_image)
            && (self.smooth_lines || !other.smooth_lines)
            && (self.sparse_binding || !other.sparse_binding)
            && (self.sparse_image_float32_atomic_add || !other.sparse_image_float32_atomic_add)
            && (self.sparse_image_float32_atomic_min_max
                || !other.sparse_image_float32_atomic_min_max)
            && (self.sparse_image_float32_atomics || !other.sparse_image_float32_atomics)
            && (self.sparse_image_int64_atomics || !other.sparse_image_int64_atomics)
            && (self.sparse_residency16_samples || !other.sparse_residency16_samples)
            && (self.sparse_residency2_samples || !other.sparse_residency2_samples)
            && (self.sparse_residency4_samples || !other.sparse_residency4_samples)
            && (self.sparse_residency8_samples || !other.sparse_residency8_samples)
            && (self.sparse_residency_aliased || !other.sparse_residency_aliased)
            && (self.sparse_residency_buffer || !other.sparse_residency_buffer)
            && (self.sparse_residency_image2_d || !other.sparse_residency_image2_d)
            && (self.sparse_residency_image3_d || !other.sparse_residency_image3_d)
            && (self.stippled_bresenham_lines || !other.stippled_bresenham_lines)
            && (self.stippled_rectangular_lines || !other.stippled_rectangular_lines)
            && (self.stippled_smooth_lines || !other.stippled_smooth_lines)
            && (self.storage_buffer16_bit_access || !other.storage_buffer16_bit_access)
            && (self.storage_buffer8_bit_access || !other.storage_buffer8_bit_access)
            && (self.storage_input_output16 || !other.storage_input_output16)
            && (self.storage_push_constant16 || !other.storage_push_constant16)
            && (self.storage_push_constant8 || !other.storage_push_constant8)
            && (self.subgroup_broadcast_dynamic_id || !other.subgroup_broadcast_dynamic_id)
            && (self.subgroup_size_control || !other.subgroup_size_control)
            && (self.subpass_merge_feedback || !other.subpass_merge_feedback)
            && (self.subpass_shading || !other.subpass_shading)
            && (self.supersample_fragment_shading_rates
                || !other.supersample_fragment_shading_rates)
            && (self.swapchain_maintenance1 || !other.swapchain_maintenance1)
            && (self.synchronization2 || !other.synchronization2)
            && (self.task_shader || !other.task_shader)
            && (self.tessellation_isolines || !other.tessellation_isolines)
            && (self.tessellation_point_mode || !other.tessellation_point_mode)
            && (self.tessellation_shader || !other.tessellation_shader)
            && (self.texel_buffer_alignment || !other.texel_buffer_alignment)
            && (self.texture_block_match || !other.texture_block_match)
            && (self.texture_box_filter || !other.texture_box_filter)
            && (self.texture_compression_astc_hdr || !other.texture_compression_astc_hdr)
            && (self.texture_compression_astc_ldr || !other.texture_compression_astc_ldr)
            && (self.texture_compression_bc || !other.texture_compression_bc)
            && (self.texture_compression_etc2 || !other.texture_compression_etc2)
            && (self.texture_sample_weighted || !other.texture_sample_weighted)
            && (self.tile_properties || !other.tile_properties)
            && (self.timeline_semaphore || !other.timeline_semaphore)
            && (self.transform_feedback || !other.transform_feedback)
            && (self.transform_feedback_preserves_provoking_vertex
                || !other.transform_feedback_preserves_provoking_vertex)
            && (self.triangle_fans || !other.triangle_fans)
            && (self.uniform_and_storage_buffer16_bit_access
                || !other.uniform_and_storage_buffer16_bit_access)
            && (self.uniform_and_storage_buffer8_bit_access
                || !other.uniform_and_storage_buffer8_bit_access)
            && (self.uniform_buffer_standard_layout || !other.uniform_buffer_standard_layout)
            && (self.variable_multisample_rate || !other.variable_multisample_rate)
            && (self.variable_pointers || !other.variable_pointers)
            && (self.variable_pointers_storage_buffer || !other.variable_pointers_storage_buffer)
            && (self.vertex_attribute_access_beyond_stride
                || !other.vertex_attribute_access_beyond_stride)
            && (self.vertex_attribute_instance_rate_divisor
                || !other.vertex_attribute_instance_rate_divisor)
            && (self.vertex_attribute_instance_rate_zero_divisor
                || !other.vertex_attribute_instance_rate_zero_divisor)
            && (self.vertex_input_dynamic_state || !other.vertex_input_dynamic_state)
            && (self.vertex_pipeline_stores_and_atomics
                || !other.vertex_pipeline_stores_and_atomics)
            && (self.vulkan_memory_model || !other.vulkan_memory_model)
            && (self.vulkan_memory_model_availability_visibility_chains
                || !other.vulkan_memory_model_availability_visibility_chains)
            && (self.vulkan_memory_model_device_scope || !other.vulkan_memory_model_device_scope)
            && (self.wide_lines || !other.wide_lines)
            && (self.workgroup_memory_explicit_layout || !other.workgroup_memory_explicit_layout)
            && (self.workgroup_memory_explicit_layout16_bit_access
                || !other.workgroup_memory_explicit_layout16_bit_access)
            && (self.workgroup_memory_explicit_layout8_bit_access
                || !other.workgroup_memory_explicit_layout8_bit_access)
            && (self.workgroup_memory_explicit_layout_scalar_block_layout
                || !other.workgroup_memory_explicit_layout_scalar_block_layout)
            && (self.ycbcr2plane444_formats || !other.ycbcr2plane444_formats)
            && (self.ycbcr_image_arrays || !other.ycbcr_image_arrays)
    }
    #[doc = r" Returns whether all members in `other` are set in `self`."]
    #[deprecated(since = "0.31.0", note = "Use `contains` instead.")]
    #[inline]
    pub const fn is_superset_of(&self, other: &Self) -> bool {
        self.contains(other)
    }
    #[doc = r" Returns the union of `self` and `other`."]
    #[inline]
    pub const fn union(&self, other: &Self) -> Self {
        Self {
            acceleration_structure: self.acceleration_structure || other.acceleration_structure,
            acceleration_structure_capture_replay: self.acceleration_structure_capture_replay
                || other.acceleration_structure_capture_replay,
            acceleration_structure_host_commands: self.acceleration_structure_host_commands
                || other.acceleration_structure_host_commands,
            acceleration_structure_indirect_build: self.acceleration_structure_indirect_build
                || other.acceleration_structure_indirect_build,
            advanced_blend_coherent_operations: self.advanced_blend_coherent_operations
                || other.advanced_blend_coherent_operations,
            alpha_to_one: self.alpha_to_one || other.alpha_to_one,
            amigo_profiling: self.amigo_profiling || other.amigo_profiling,
            attachment_feedback_loop_layout: self.attachment_feedback_loop_layout
                || other.attachment_feedback_loop_layout,
            attachment_fragment_shading_rate: self.attachment_fragment_shading_rate
                || other.attachment_fragment_shading_rate,
            border_color_swizzle: self.border_color_swizzle || other.border_color_swizzle,
            border_color_swizzle_from_image: self.border_color_swizzle_from_image
                || other.border_color_swizzle_from_image,
            bresenham_lines: self.bresenham_lines || other.bresenham_lines,
            buffer_device_address: self.buffer_device_address || other.buffer_device_address,
            buffer_device_address_capture_replay: self.buffer_device_address_capture_replay
                || other.buffer_device_address_capture_replay,
            buffer_device_address_multi_device: self.buffer_device_address_multi_device
                || other.buffer_device_address_multi_device,
            color_write_enable: self.color_write_enable || other.color_write_enable,
            compute_derivative_group_linear: self.compute_derivative_group_linear
                || other.compute_derivative_group_linear,
            compute_derivative_group_quads: self.compute_derivative_group_quads
                || other.compute_derivative_group_quads,
            compute_full_subgroups: self.compute_full_subgroups || other.compute_full_subgroups,
            conditional_rendering: self.conditional_rendering || other.conditional_rendering,
            constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors
                || other.constant_alpha_color_blend_factors,
            cooperative_matrix: self.cooperative_matrix || other.cooperative_matrix,
            cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access
                || other.cooperative_matrix_robust_buffer_access,
            corner_sampled_image: self.corner_sampled_image || other.corner_sampled_image,
            coverage_reduction_mode: self.coverage_reduction_mode || other.coverage_reduction_mode,
            custom_border_color_without_format: self.custom_border_color_without_format
                || other.custom_border_color_without_format,
            custom_border_colors: self.custom_border_colors || other.custom_border_colors,
            decode_mode_shared_exponent: self.decode_mode_shared_exponent
                || other.decode_mode_shared_exponent,
            dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing
                || other.dedicated_allocation_image_aliasing,
            depth_bias_clamp: self.depth_bias_clamp || other.depth_bias_clamp,
            depth_bounds: self.depth_bounds || other.depth_bounds,
            depth_clamp: self.depth_clamp || other.depth_clamp,
            depth_clamp_zero_one: self.depth_clamp_zero_one || other.depth_clamp_zero_one,
            depth_clip_control: self.depth_clip_control || other.depth_clip_control,
            depth_clip_enable: self.depth_clip_enable || other.depth_clip_enable,
            descriptor_binding_acceleration_structure_update_after_bind: self
                .descriptor_binding_acceleration_structure_update_after_bind
                || other.descriptor_binding_acceleration_structure_update_after_bind,
            descriptor_binding_inline_uniform_block_update_after_bind: self
                .descriptor_binding_inline_uniform_block_update_after_bind
                || other.descriptor_binding_inline_uniform_block_update_after_bind,
            descriptor_binding_partially_bound: self.descriptor_binding_partially_bound
                || other.descriptor_binding_partially_bound,
            descriptor_binding_sampled_image_update_after_bind: self
                .descriptor_binding_sampled_image_update_after_bind
                || other.descriptor_binding_sampled_image_update_after_bind,
            descriptor_binding_storage_buffer_update_after_bind: self
                .descriptor_binding_storage_buffer_update_after_bind
                || other.descriptor_binding_storage_buffer_update_after_bind,
            descriptor_binding_storage_image_update_after_bind: self
                .descriptor_binding_storage_image_update_after_bind
                || other.descriptor_binding_storage_image_update_after_bind,
            descriptor_binding_storage_texel_buffer_update_after_bind: self
                .descriptor_binding_storage_texel_buffer_update_after_bind
                || other.descriptor_binding_storage_texel_buffer_update_after_bind,
            descriptor_binding_uniform_buffer_update_after_bind: self
                .descriptor_binding_uniform_buffer_update_after_bind
                || other.descriptor_binding_uniform_buffer_update_after_bind,
            descriptor_binding_uniform_texel_buffer_update_after_bind: self
                .descriptor_binding_uniform_texel_buffer_update_after_bind
                || other.descriptor_binding_uniform_texel_buffer_update_after_bind,
            descriptor_binding_update_unused_while_pending: self
                .descriptor_binding_update_unused_while_pending
                || other.descriptor_binding_update_unused_while_pending,
            descriptor_binding_variable_descriptor_count: self
                .descriptor_binding_variable_descriptor_count
                || other.descriptor_binding_variable_descriptor_count,
            descriptor_buffer: self.descriptor_buffer || other.descriptor_buffer,
            descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay
                || other.descriptor_buffer_capture_replay,
            descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored
                || other.descriptor_buffer_image_layout_ignored,
            descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors
                || other.descriptor_buffer_push_descriptors,
            descriptor_indexing: self.descriptor_indexing || other.descriptor_indexing,
            descriptor_set_host_mapping: self.descriptor_set_host_mapping
                || other.descriptor_set_host_mapping,
            device_coherent_memory: self.device_coherent_memory || other.device_coherent_memory,
            device_fault: self.device_fault || other.device_fault,
            device_fault_vendor_binary: self.device_fault_vendor_binary
                || other.device_fault_vendor_binary,
            device_generated_commands: self.device_generated_commands
                || other.device_generated_commands,
            device_memory_report: self.device_memory_report || other.device_memory_report,
            diagnostics_config: self.diagnostics_config || other.diagnostics_config,
            draw_indirect_count: self.draw_indirect_count || other.draw_indirect_count,
            draw_indirect_first_instance: self.draw_indirect_first_instance
                || other.draw_indirect_first_instance,
            dual_src_blend: self.dual_src_blend || other.dual_src_blend,
            dynamic_rendering: self.dynamic_rendering || other.dynamic_rendering,
            events: self.events || other.events,
            exclusive_scissor: self.exclusive_scissor || other.exclusive_scissor,
            extended_dynamic_state: self.extended_dynamic_state || other.extended_dynamic_state,
            extended_dynamic_state2: self.extended_dynamic_state2 || other.extended_dynamic_state2,
            extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op
                || other.extended_dynamic_state2_logic_op,
            extended_dynamic_state2_patch_control_points: self
                .extended_dynamic_state2_patch_control_points
                || other.extended_dynamic_state2_patch_control_points,
            extended_dynamic_state3_alpha_to_coverage_enable: self
                .extended_dynamic_state3_alpha_to_coverage_enable
                || other.extended_dynamic_state3_alpha_to_coverage_enable,
            extended_dynamic_state3_alpha_to_one_enable: self
                .extended_dynamic_state3_alpha_to_one_enable
                || other.extended_dynamic_state3_alpha_to_one_enable,
            extended_dynamic_state3_color_blend_advanced: self
                .extended_dynamic_state3_color_blend_advanced
                || other.extended_dynamic_state3_color_blend_advanced,
            extended_dynamic_state3_color_blend_enable: self
                .extended_dynamic_state3_color_blend_enable
                || other.extended_dynamic_state3_color_blend_enable,
            extended_dynamic_state3_color_blend_equation: self
                .extended_dynamic_state3_color_blend_equation
                || other.extended_dynamic_state3_color_blend_equation,
            extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask
                || other.extended_dynamic_state3_color_write_mask,
            extended_dynamic_state3_conservative_rasterization_mode: self
                .extended_dynamic_state3_conservative_rasterization_mode
                || other.extended_dynamic_state3_conservative_rasterization_mode,
            extended_dynamic_state3_coverage_modulation_mode: self
                .extended_dynamic_state3_coverage_modulation_mode
                || other.extended_dynamic_state3_coverage_modulation_mode,
            extended_dynamic_state3_coverage_modulation_table: self
                .extended_dynamic_state3_coverage_modulation_table
                || other.extended_dynamic_state3_coverage_modulation_table,
            extended_dynamic_state3_coverage_modulation_table_enable: self
                .extended_dynamic_state3_coverage_modulation_table_enable
                || other.extended_dynamic_state3_coverage_modulation_table_enable,
            extended_dynamic_state3_coverage_reduction_mode: self
                .extended_dynamic_state3_coverage_reduction_mode
                || other.extended_dynamic_state3_coverage_reduction_mode,
            extended_dynamic_state3_coverage_to_color_enable: self
                .extended_dynamic_state3_coverage_to_color_enable
                || other.extended_dynamic_state3_coverage_to_color_enable,
            extended_dynamic_state3_coverage_to_color_location: self
                .extended_dynamic_state3_coverage_to_color_location
                || other.extended_dynamic_state3_coverage_to_color_location,
            extended_dynamic_state3_depth_clamp_enable: self
                .extended_dynamic_state3_depth_clamp_enable
                || other.extended_dynamic_state3_depth_clamp_enable,
            extended_dynamic_state3_depth_clip_enable: self
                .extended_dynamic_state3_depth_clip_enable
                || other.extended_dynamic_state3_depth_clip_enable,
            extended_dynamic_state3_depth_clip_negative_one_to_one: self
                .extended_dynamic_state3_depth_clip_negative_one_to_one
                || other.extended_dynamic_state3_depth_clip_negative_one_to_one,
            extended_dynamic_state3_extra_primitive_overestimation_size: self
                .extended_dynamic_state3_extra_primitive_overestimation_size
                || other.extended_dynamic_state3_extra_primitive_overestimation_size,
            extended_dynamic_state3_line_rasterization_mode: self
                .extended_dynamic_state3_line_rasterization_mode
                || other.extended_dynamic_state3_line_rasterization_mode,
            extended_dynamic_state3_line_stipple_enable: self
                .extended_dynamic_state3_line_stipple_enable
                || other.extended_dynamic_state3_line_stipple_enable,
            extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable
                || other.extended_dynamic_state3_logic_op_enable,
            extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode
                || other.extended_dynamic_state3_polygon_mode,
            extended_dynamic_state3_provoking_vertex_mode: self
                .extended_dynamic_state3_provoking_vertex_mode
                || other.extended_dynamic_state3_provoking_vertex_mode,
            extended_dynamic_state3_rasterization_samples: self
                .extended_dynamic_state3_rasterization_samples
                || other.extended_dynamic_state3_rasterization_samples,
            extended_dynamic_state3_rasterization_stream: self
                .extended_dynamic_state3_rasterization_stream
                || other.extended_dynamic_state3_rasterization_stream,
            extended_dynamic_state3_representative_fragment_test_enable: self
                .extended_dynamic_state3_representative_fragment_test_enable
                || other.extended_dynamic_state3_representative_fragment_test_enable,
            extended_dynamic_state3_sample_locations_enable: self
                .extended_dynamic_state3_sample_locations_enable
                || other.extended_dynamic_state3_sample_locations_enable,
            extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask
                || other.extended_dynamic_state3_sample_mask,
            extended_dynamic_state3_shading_rate_image_enable: self
                .extended_dynamic_state3_shading_rate_image_enable
                || other.extended_dynamic_state3_shading_rate_image_enable,
            extended_dynamic_state3_tessellation_domain_origin: self
                .extended_dynamic_state3_tessellation_domain_origin
                || other.extended_dynamic_state3_tessellation_domain_origin,
            extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle
                || other.extended_dynamic_state3_viewport_swizzle,
            extended_dynamic_state3_viewport_w_scaling_enable: self
                .extended_dynamic_state3_viewport_w_scaling_enable
                || other.extended_dynamic_state3_viewport_w_scaling_enable,
            external_memory_rdma: self.external_memory_rdma || other.external_memory_rdma,
            fill_mode_non_solid: self.fill_mode_non_solid || other.fill_mode_non_solid,
            format_a4b4g4r4: self.format_a4b4g4r4 || other.format_a4b4g4r4,
            format_a4r4g4b4: self.format_a4r4g4b4 || other.format_a4r4g4b4,
            format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler
                || other.format_rgba10x6_without_y_cb_cr_sampler,
            fragment_density_map: self.fragment_density_map || other.fragment_density_map,
            fragment_density_map_deferred: self.fragment_density_map_deferred
                || other.fragment_density_map_deferred,
            fragment_density_map_dynamic: self.fragment_density_map_dynamic
                || other.fragment_density_map_dynamic,
            fragment_density_map_non_subsampled_images: self
                .fragment_density_map_non_subsampled_images
                || other.fragment_density_map_non_subsampled_images,
            fragment_density_map_offset: self.fragment_density_map_offset
                || other.fragment_density_map_offset,
            fragment_shader_barycentric: self.fragment_shader_barycentric
                || other.fragment_shader_barycentric,
            fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock
                || other.fragment_shader_pixel_interlock,
            fragment_shader_sample_interlock: self.fragment_shader_sample_interlock
                || other.fragment_shader_sample_interlock,
            fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock
                || other.fragment_shader_shading_rate_interlock,
            fragment_shading_rate_enums: self.fragment_shading_rate_enums
                || other.fragment_shading_rate_enums,
            fragment_stores_and_atomics: self.fragment_stores_and_atomics
                || other.fragment_stores_and_atomics,
            full_draw_index_uint32: self.full_draw_index_uint32 || other.full_draw_index_uint32,
            geometry_shader: self.geometry_shader || other.geometry_shader,
            geometry_streams: self.geometry_streams || other.geometry_streams,
            global_priority_query: self.global_priority_query || other.global_priority_query,
            graphics_pipeline_library: self.graphics_pipeline_library
                || other.graphics_pipeline_library,
            host_query_reset: self.host_query_reset || other.host_query_reset,
            image2_d_view_of3_d: self.image2_d_view_of3_d || other.image2_d_view_of3_d,
            image_compression_control: self.image_compression_control
                || other.image_compression_control,
            image_compression_control_swapchain: self.image_compression_control_swapchain
                || other.image_compression_control_swapchain,
            image_cube_array: self.image_cube_array || other.image_cube_array,
            image_footprint: self.image_footprint || other.image_footprint,
            image_view2_d_on3_d_image: self.image_view2_d_on3_d_image
                || other.image_view2_d_on3_d_image,
            image_view_format_reinterpretation: self.image_view_format_reinterpretation
                || other.image_view_format_reinterpretation,
            image_view_format_swizzle: self.image_view_format_swizzle
                || other.image_view_format_swizzle,
            imageless_framebuffer: self.imageless_framebuffer || other.imageless_framebuffer,
            independent_blend: self.independent_blend || other.independent_blend,
            index_type_uint8: self.index_type_uint8 || other.index_type_uint8,
            indirect_copy: self.indirect_copy || other.indirect_copy,
            inherited_conditional_rendering: self.inherited_conditional_rendering
                || other.inherited_conditional_rendering,
            inherited_queries: self.inherited_queries || other.inherited_queries,
            inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d
                || other.inherited_viewport_scissor2_d,
            inline_uniform_block: self.inline_uniform_block || other.inline_uniform_block,
            invocation_mask: self.invocation_mask || other.invocation_mask,
            large_points: self.large_points || other.large_points,
            legacy_dithering: self.legacy_dithering || other.legacy_dithering,
            linear_color_attachment: self.linear_color_attachment || other.linear_color_attachment,
            logic_op: self.logic_op || other.logic_op,
            maintenance4: self.maintenance4 || other.maintenance4,
            memory_decompression: self.memory_decompression || other.memory_decompression,
            memory_priority: self.memory_priority || other.memory_priority,
            mesh_shader: self.mesh_shader || other.mesh_shader,
            mesh_shader_queries: self.mesh_shader_queries || other.mesh_shader_queries,
            micromap: self.micromap || other.micromap,
            micromap_capture_replay: self.micromap_capture_replay || other.micromap_capture_replay,
            micromap_host_commands: self.micromap_host_commands || other.micromap_host_commands,
            min_lod: self.min_lod || other.min_lod,
            multi_draw: self.multi_draw || other.multi_draw,
            multi_draw_indirect: self.multi_draw_indirect || other.multi_draw_indirect,
            multi_viewport: self.multi_viewport || other.multi_viewport,
            multisample_array_image: self.multisample_array_image || other.multisample_array_image,
            multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled
                || other.multisampled_render_to_single_sampled,
            multiview: self.multiview || other.multiview,
            multiview_geometry_shader: self.multiview_geometry_shader
                || other.multiview_geometry_shader,
            multiview_mesh_shader: self.multiview_mesh_shader || other.multiview_mesh_shader,
            multiview_per_view_viewports: self.multiview_per_view_viewports
                || other.multiview_per_view_viewports,
            multiview_tessellation_shader: self.multiview_tessellation_shader
                || other.multiview_tessellation_shader,
            mutable_comparison_samplers: self.mutable_comparison_samplers
                || other.mutable_comparison_samplers,
            mutable_descriptor_type: self.mutable_descriptor_type || other.mutable_descriptor_type,
            no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates
                || other.no_invocation_fragment_shading_rates,
            non_seamless_cube_map: self.non_seamless_cube_map || other.non_seamless_cube_map,
            null_descriptor: self.null_descriptor || other.null_descriptor,
            occlusion_query_precise: self.occlusion_query_precise || other.occlusion_query_precise,
            optical_flow: self.optical_flow || other.optical_flow,
            pageable_device_local_memory: self.pageable_device_local_memory
                || other.pageable_device_local_memory,
            performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools
                || other.performance_counter_multiple_query_pools,
            performance_counter_query_pools: self.performance_counter_query_pools
                || other.performance_counter_query_pools,
            pipeline_creation_cache_control: self.pipeline_creation_cache_control
                || other.pipeline_creation_cache_control,
            pipeline_executable_info: self.pipeline_executable_info
                || other.pipeline_executable_info,
            pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate
                || other.pipeline_fragment_shading_rate,
            pipeline_properties_identifier: self.pipeline_properties_identifier
                || other.pipeline_properties_identifier,
            pipeline_protected_access: self.pipeline_protected_access
                || other.pipeline_protected_access,
            pipeline_robustness: self.pipeline_robustness || other.pipeline_robustness,
            pipeline_statistics_query: self.pipeline_statistics_query
                || other.pipeline_statistics_query,
            point_polygons: self.point_polygons || other.point_polygons,
            present_barrier: self.present_barrier || other.present_barrier,
            present_id: self.present_id || other.present_id,
            present_wait: self.present_wait || other.present_wait,
            primitive_fragment_shading_rate: self.primitive_fragment_shading_rate
                || other.primitive_fragment_shading_rate,
            primitive_fragment_shading_rate_mesh_shader: self
                .primitive_fragment_shading_rate_mesh_shader
                || other.primitive_fragment_shading_rate_mesh_shader,
            primitive_topology_list_restart: self.primitive_topology_list_restart
                || other.primitive_topology_list_restart,
            primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart
                || other.primitive_topology_patch_list_restart,
            primitives_generated_query: self.primitives_generated_query
                || other.primitives_generated_query,
            primitives_generated_query_with_non_zero_streams: self
                .primitives_generated_query_with_non_zero_streams
                || other.primitives_generated_query_with_non_zero_streams,
            primitives_generated_query_with_rasterizer_discard: self
                .primitives_generated_query_with_rasterizer_discard
                || other.primitives_generated_query_with_rasterizer_discard,
            private_data: self.private_data || other.private_data,
            protected_memory: self.protected_memory || other.protected_memory,
            provoking_vertex_last: self.provoking_vertex_last || other.provoking_vertex_last,
            rasterization_order_color_attachment_access: self
                .rasterization_order_color_attachment_access
                || other.rasterization_order_color_attachment_access,
            rasterization_order_depth_attachment_access: self
                .rasterization_order_depth_attachment_access
                || other.rasterization_order_depth_attachment_access,
            rasterization_order_stencil_attachment_access: self
                .rasterization_order_stencil_attachment_access
                || other.rasterization_order_stencil_attachment_access,
            ray_query: self.ray_query || other.ray_query,
            ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder
                || other.ray_tracing_invocation_reorder,
            ray_tracing_maintenance1: self.ray_tracing_maintenance1
                || other.ray_tracing_maintenance1,
            ray_tracing_motion_blur: self.ray_tracing_motion_blur || other.ray_tracing_motion_blur,
            ray_tracing_motion_blur_pipeline_trace_rays_indirect: self
                .ray_tracing_motion_blur_pipeline_trace_rays_indirect
                || other.ray_tracing_motion_blur_pipeline_trace_rays_indirect,
            ray_tracing_pipeline: self.ray_tracing_pipeline || other.ray_tracing_pipeline,
            ray_tracing_pipeline_shader_group_handle_capture_replay: self
                .ray_tracing_pipeline_shader_group_handle_capture_replay
                || other.ray_tracing_pipeline_shader_group_handle_capture_replay,
            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self
                .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
                || other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed,
            ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect
                || other.ray_tracing_pipeline_trace_rays_indirect,
            ray_tracing_pipeline_trace_rays_indirect2: self
                .ray_tracing_pipeline_trace_rays_indirect2
                || other.ray_tracing_pipeline_trace_rays_indirect2,
            ray_traversal_primitive_culling: self.ray_traversal_primitive_culling
                || other.ray_traversal_primitive_culling,
            rectangular_lines: self.rectangular_lines || other.rectangular_lines,
            report_address_binding: self.report_address_binding || other.report_address_binding,
            representative_fragment_test: self.representative_fragment_test
                || other.representative_fragment_test,
            robust_buffer_access: self.robust_buffer_access || other.robust_buffer_access,
            robust_buffer_access2: self.robust_buffer_access2 || other.robust_buffer_access2,
            robust_image_access: self.robust_image_access || other.robust_image_access,
            robust_image_access2: self.robust_image_access2 || other.robust_image_access2,
            runtime_descriptor_array: self.runtime_descriptor_array
                || other.runtime_descriptor_array,
            sample_rate_shading: self.sample_rate_shading || other.sample_rate_shading,
            sampler2_d_view_of3_d: self.sampler2_d_view_of3_d || other.sampler2_d_view_of3_d,
            sampler_anisotropy: self.sampler_anisotropy || other.sampler_anisotropy,
            sampler_filter_minmax: self.sampler_filter_minmax || other.sampler_filter_minmax,
            sampler_mip_lod_bias: self.sampler_mip_lod_bias || other.sampler_mip_lod_bias,
            sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge
                || other.sampler_mirror_clamp_to_edge,
            sampler_ycbcr_conversion: self.sampler_ycbcr_conversion
                || other.sampler_ycbcr_conversion,
            scalar_block_layout: self.scalar_block_layout || other.scalar_block_layout,
            separate_depth_stencil_layouts: self.separate_depth_stencil_layouts
                || other.separate_depth_stencil_layouts,
            separate_stencil_mask_ref: self.separate_stencil_mask_ref
                || other.separate_stencil_mask_ref,
            shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add
                || other.shader_buffer_float16_atomic_add,
            shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max
                || other.shader_buffer_float16_atomic_min_max,
            shader_buffer_float16_atomics: self.shader_buffer_float16_atomics
                || other.shader_buffer_float16_atomics,
            shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add
                || other.shader_buffer_float32_atomic_add,
            shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max
                || other.shader_buffer_float32_atomic_min_max,
            shader_buffer_float32_atomics: self.shader_buffer_float32_atomics
                || other.shader_buffer_float32_atomics,
            shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add
                || other.shader_buffer_float64_atomic_add,
            shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max
                || other.shader_buffer_float64_atomic_min_max,
            shader_buffer_float64_atomics: self.shader_buffer_float64_atomics
                || other.shader_buffer_float64_atomics,
            shader_buffer_int64_atomics: self.shader_buffer_int64_atomics
                || other.shader_buffer_int64_atomics,
            shader_clip_distance: self.shader_clip_distance || other.shader_clip_distance,
            shader_core_builtins: self.shader_core_builtins || other.shader_core_builtins,
            shader_cull_distance: self.shader_cull_distance || other.shader_cull_distance,
            shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation
                || other.shader_demote_to_helper_invocation,
            shader_device_clock: self.shader_device_clock || other.shader_device_clock,
            shader_draw_parameters: self.shader_draw_parameters || other.shader_draw_parameters,
            shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests
                || other.shader_early_and_late_fragment_tests,
            shader_float16: self.shader_float16 || other.shader_float16,
            shader_float64: self.shader_float64 || other.shader_float64,
            shader_image_float32_atomic_add: self.shader_image_float32_atomic_add
                || other.shader_image_float32_atomic_add,
            shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max
                || other.shader_image_float32_atomic_min_max,
            shader_image_float32_atomics: self.shader_image_float32_atomics
                || other.shader_image_float32_atomics,
            shader_image_gather_extended: self.shader_image_gather_extended
                || other.shader_image_gather_extended,
            shader_image_int64_atomics: self.shader_image_int64_atomics
                || other.shader_image_int64_atomics,
            shader_input_attachment_array_dynamic_indexing: self
                .shader_input_attachment_array_dynamic_indexing
                || other.shader_input_attachment_array_dynamic_indexing,
            shader_input_attachment_array_non_uniform_indexing: self
                .shader_input_attachment_array_non_uniform_indexing
                || other.shader_input_attachment_array_non_uniform_indexing,
            shader_int16: self.shader_int16 || other.shader_int16,
            shader_int64: self.shader_int64 || other.shader_int64,
            shader_int8: self.shader_int8 || other.shader_int8,
            shader_integer_dot_product: self.shader_integer_dot_product
                || other.shader_integer_dot_product,
            shader_integer_functions2: self.shader_integer_functions2
                || other.shader_integer_functions2,
            shader_module_identifier: self.shader_module_identifier
                || other.shader_module_identifier,
            shader_output_layer: self.shader_output_layer || other.shader_output_layer,
            shader_output_viewport_index: self.shader_output_viewport_index
                || other.shader_output_viewport_index,
            shader_resource_min_lod: self.shader_resource_min_lod || other.shader_resource_min_lod,
            shader_resource_residency: self.shader_resource_residency
                || other.shader_resource_residency,
            shader_sample_rate_interpolation_functions: self
                .shader_sample_rate_interpolation_functions
                || other.shader_sample_rate_interpolation_functions,
            shader_sampled_image_array_dynamic_indexing: self
                .shader_sampled_image_array_dynamic_indexing
                || other.shader_sampled_image_array_dynamic_indexing,
            shader_sampled_image_array_non_uniform_indexing: self
                .shader_sampled_image_array_non_uniform_indexing
                || other.shader_sampled_image_array_non_uniform_indexing,
            shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add
                || other.shader_shared_float16_atomic_add,
            shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max
                || other.shader_shared_float16_atomic_min_max,
            shader_shared_float16_atomics: self.shader_shared_float16_atomics
                || other.shader_shared_float16_atomics,
            shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add
                || other.shader_shared_float32_atomic_add,
            shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max
                || other.shader_shared_float32_atomic_min_max,
            shader_shared_float32_atomics: self.shader_shared_float32_atomics
                || other.shader_shared_float32_atomics,
            shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add
                || other.shader_shared_float64_atomic_add,
            shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max
                || other.shader_shared_float64_atomic_min_max,
            shader_shared_float64_atomics: self.shader_shared_float64_atomics
                || other.shader_shared_float64_atomics,
            shader_shared_int64_atomics: self.shader_shared_int64_atomics
                || other.shader_shared_int64_atomics,
            shader_sm_builtins: self.shader_sm_builtins || other.shader_sm_builtins,
            shader_storage_buffer_array_dynamic_indexing: self
                .shader_storage_buffer_array_dynamic_indexing
                || other.shader_storage_buffer_array_dynamic_indexing,
            shader_storage_buffer_array_non_uniform_indexing: self
                .shader_storage_buffer_array_non_uniform_indexing
                || other.shader_storage_buffer_array_non_uniform_indexing,
            shader_storage_image_array_dynamic_indexing: self
                .shader_storage_image_array_dynamic_indexing
                || other.shader_storage_image_array_dynamic_indexing,
            shader_storage_image_array_non_uniform_indexing: self
                .shader_storage_image_array_non_uniform_indexing
                || other.shader_storage_image_array_non_uniform_indexing,
            shader_storage_image_extended_formats: self.shader_storage_image_extended_formats
                || other.shader_storage_image_extended_formats,
            shader_storage_image_multisample: self.shader_storage_image_multisample
                || other.shader_storage_image_multisample,
            shader_storage_image_read_without_format: self.shader_storage_image_read_without_format
                || other.shader_storage_image_read_without_format,
            shader_storage_image_write_without_format: self
                .shader_storage_image_write_without_format
                || other.shader_storage_image_write_without_format,
            shader_storage_texel_buffer_array_dynamic_indexing: self
                .shader_storage_texel_buffer_array_dynamic_indexing
                || other.shader_storage_texel_buffer_array_dynamic_indexing,
            shader_storage_texel_buffer_array_non_uniform_indexing: self
                .shader_storage_texel_buffer_array_non_uniform_indexing
                || other.shader_storage_texel_buffer_array_non_uniform_indexing,
            shader_subgroup_clock: self.shader_subgroup_clock || other.shader_subgroup_clock,
            shader_subgroup_extended_types: self.shader_subgroup_extended_types
                || other.shader_subgroup_extended_types,
            shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow
                || other.shader_subgroup_uniform_control_flow,
            shader_terminate_invocation: self.shader_terminate_invocation
                || other.shader_terminate_invocation,
            shader_tessellation_and_geometry_point_size: self
                .shader_tessellation_and_geometry_point_size
                || other.shader_tessellation_and_geometry_point_size,
            shader_uniform_buffer_array_dynamic_indexing: self
                .shader_uniform_buffer_array_dynamic_indexing
                || other.shader_uniform_buffer_array_dynamic_indexing,
            shader_uniform_buffer_array_non_uniform_indexing: self
                .shader_uniform_buffer_array_non_uniform_indexing
                || other.shader_uniform_buffer_array_non_uniform_indexing,
            shader_uniform_texel_buffer_array_dynamic_indexing: self
                .shader_uniform_texel_buffer_array_dynamic_indexing
                || other.shader_uniform_texel_buffer_array_dynamic_indexing,
            shader_uniform_texel_buffer_array_non_uniform_indexing: self
                .shader_uniform_texel_buffer_array_non_uniform_indexing
                || other.shader_uniform_texel_buffer_array_non_uniform_indexing,
            shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory
                || other.shader_zero_initialize_workgroup_memory,
            shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order
                || other.shading_rate_coarse_sample_order,
            shading_rate_image: self.shading_rate_image || other.shading_rate_image,
            smooth_lines: self.smooth_lines || other.smooth_lines,
            sparse_binding: self.sparse_binding || other.sparse_binding,
            sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add
                || other.sparse_image_float32_atomic_add,
            sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max
                || other.sparse_image_float32_atomic_min_max,
            sparse_image_float32_atomics: self.sparse_image_float32_atomics
                || other.sparse_image_float32_atomics,
            sparse_image_int64_atomics: self.sparse_image_int64_atomics
                || other.sparse_image_int64_atomics,
            sparse_residency16_samples: self.sparse_residency16_samples
                || other.sparse_residency16_samples,
            sparse_residency2_samples: self.sparse_residency2_samples
                || other.sparse_residency2_samples,
            sparse_residency4_samples: self.sparse_residency4_samples
                || other.sparse_residency4_samples,
            sparse_residency8_samples: self.sparse_residency8_samples
                || other.sparse_residency8_samples,
            sparse_residency_aliased: self.sparse_residency_aliased
                || other.sparse_residency_aliased,
            sparse_residency_buffer: self.sparse_residency_buffer || other.sparse_residency_buffer,
            sparse_residency_image2_d: self.sparse_residency_image2_d
                || other.sparse_residency_image2_d,
            sparse_residency_image3_d: self.sparse_residency_image3_d
                || other.sparse_residency_image3_d,
            stippled_bresenham_lines: self.stippled_bresenham_lines
                || other.stippled_bresenham_lines,
            stippled_rectangular_lines: self.stippled_rectangular_lines
                || other.stippled_rectangular_lines,
            stippled_smooth_lines: self.stippled_smooth_lines || other.stippled_smooth_lines,
            storage_buffer16_bit_access: self.storage_buffer16_bit_access
                || other.storage_buffer16_bit_access,
            storage_buffer8_bit_access: self.storage_buffer8_bit_access
                || other.storage_buffer8_bit_access,
            storage_input_output16: self.storage_input_output16 || other.storage_input_output16,
            storage_push_constant16: self.storage_push_constant16 || other.storage_push_constant16,
            storage_push_constant8: self.storage_push_constant8 || other.storage_push_constant8,
            subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id
                || other.subgroup_broadcast_dynamic_id,
            subgroup_size_control: self.subgroup_size_control || other.subgroup_size_control,
            subpass_merge_feedback: self.subpass_merge_feedback || other.subpass_merge_feedback,
            subpass_shading: self.subpass_shading || other.subpass_shading,
            supersample_fragment_shading_rates: self.supersample_fragment_shading_rates
                || other.supersample_fragment_shading_rates,
            swapchain_maintenance1: self.swapchain_maintenance1 || other.swapchain_maintenance1,
            synchronization2: self.synchronization2 || other.synchronization2,
            task_shader: self.task_shader || other.task_shader,
            tessellation_isolines: self.tessellation_isolines || other.tessellation_isolines,
            tessellation_point_mode: self.tessellation_point_mode || other.tessellation_point_mode,
            tessellation_shader: self.tessellation_shader || other.tessellation_shader,
            texel_buffer_alignment: self.texel_buffer_alignment || other.texel_buffer_alignment,
            texture_block_match: self.texture_block_match || other.texture_block_match,
            texture_box_filter: self.texture_box_filter || other.texture_box_filter,
            texture_compression_astc_hdr: self.texture_compression_astc_hdr
                || other.texture_compression_astc_hdr,
            texture_compression_astc_ldr: self.texture_compression_astc_ldr
                || other.texture_compression_astc_ldr,
            texture_compression_bc: self.texture_compression_bc || other.texture_compression_bc,
            texture_compression_etc2: self.texture_compression_etc2
                || other.texture_compression_etc2,
            texture_sample_weighted: self.texture_sample_weighted || other.texture_sample_weighted,
            tile_properties: self.tile_properties || other.tile_properties,
            timeline_semaphore: self.timeline_semaphore || other.timeline_semaphore,
            transform_feedback: self.transform_feedback || other.transform_feedback,
            transform_feedback_preserves_provoking_vertex: self
                .transform_feedback_preserves_provoking_vertex
                || other.transform_feedback_preserves_provoking_vertex,
            triangle_fans: self.triangle_fans || other.triangle_fans,
            uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access
                || other.uniform_and_storage_buffer16_bit_access,
            uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access
                || other.uniform_and_storage_buffer8_bit_access,
            uniform_buffer_standard_layout: self.uniform_buffer_standard_layout
                || other.uniform_buffer_standard_layout,
            variable_multisample_rate: self.variable_multisample_rate
                || other.variable_multisample_rate,
            variable_pointers: self.variable_pointers || other.variable_pointers,
            variable_pointers_storage_buffer: self.variable_pointers_storage_buffer
                || other.variable_pointers_storage_buffer,
            vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride
                || other.vertex_attribute_access_beyond_stride,
            vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor
                || other.vertex_attribute_instance_rate_divisor,
            vertex_attribute_instance_rate_zero_divisor: self
                .vertex_attribute_instance_rate_zero_divisor
                || other.vertex_attribute_instance_rate_zero_divisor,
            vertex_input_dynamic_state: self.vertex_input_dynamic_state
                || other.vertex_input_dynamic_state,
            vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics
                || other.vertex_pipeline_stores_and_atomics,
            vulkan_memory_model: self.vulkan_memory_model || other.vulkan_memory_model,
            vulkan_memory_model_availability_visibility_chains: self
                .vulkan_memory_model_availability_visibility_chains
                || other.vulkan_memory_model_availability_visibility_chains,
            vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope
                || other.vulkan_memory_model_device_scope,
            wide_lines: self.wide_lines || other.wide_lines,
            workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout
                || other.workgroup_memory_explicit_layout,
            workgroup_memory_explicit_layout16_bit_access: self
                .workgroup_memory_explicit_layout16_bit_access
                || other.workgroup_memory_explicit_layout16_bit_access,
            workgroup_memory_explicit_layout8_bit_access: self
                .workgroup_memory_explicit_layout8_bit_access
                || other.workgroup_memory_explicit_layout8_bit_access,
            workgroup_memory_explicit_layout_scalar_block_layout: self
                .workgroup_memory_explicit_layout_scalar_block_layout
                || other.workgroup_memory_explicit_layout_scalar_block_layout,
            ycbcr2plane444_formats: self.ycbcr2plane444_formats || other.ycbcr2plane444_formats,
            ycbcr_image_arrays: self.ycbcr_image_arrays || other.ycbcr_image_arrays,
            _ne: crate::NonExhaustive(()),
        }
    }
    #[doc = r" Returns the intersection of `self` and `other`."]
    #[inline]
    pub const fn intersection(&self, other: &Self) -> Self {
        Self {
            acceleration_structure: self.acceleration_structure && other.acceleration_structure,
            acceleration_structure_capture_replay: self.acceleration_structure_capture_replay
                && other.acceleration_structure_capture_replay,
            acceleration_structure_host_commands: self.acceleration_structure_host_commands
                && other.acceleration_structure_host_commands,
            acceleration_structure_indirect_build: self.acceleration_structure_indirect_build
                && other.acceleration_structure_indirect_build,
            advanced_blend_coherent_operations: self.advanced_blend_coherent_operations
                && other.advanced_blend_coherent_operations,
            alpha_to_one: self.alpha_to_one && other.alpha_to_one,
            amigo_profiling: self.amigo_profiling && other.amigo_profiling,
            attachment_feedback_loop_layout: self.attachment_feedback_loop_layout
                && other.attachment_feedback_loop_layout,
            attachment_fragment_shading_rate: self.attachment_fragment_shading_rate
                && other.attachment_fragment_shading_rate,
            border_color_swizzle: self.border_color_swizzle && other.border_color_swizzle,
            border_color_swizzle_from_image: self.border_color_swizzle_from_image
                && other.border_color_swizzle_from_image,
            bresenham_lines: self.bresenham_lines && other.bresenham_lines,
            buffer_device_address: self.buffer_device_address && other.buffer_device_address,
            buffer_device_address_capture_replay: self.buffer_device_address_capture_replay
                && other.buffer_device_address_capture_replay,
            buffer_device_address_multi_device: self.buffer_device_address_multi_device
                && other.buffer_device_address_multi_device,
            color_write_enable: self.color_write_enable && other.color_write_enable,
            compute_derivative_group_linear: self.compute_derivative_group_linear
                && other.compute_derivative_group_linear,
            compute_derivative_group_quads: self.compute_derivative_group_quads
                && other.compute_derivative_group_quads,
            compute_full_subgroups: self.compute_full_subgroups && other.compute_full_subgroups,
            conditional_rendering: self.conditional_rendering && other.conditional_rendering,
            constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors
                && other.constant_alpha_color_blend_factors,
            cooperative_matrix: self.cooperative_matrix && other.cooperative_matrix,
            cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access
                && other.cooperative_matrix_robust_buffer_access,
            corner_sampled_image: self.corner_sampled_image && other.corner_sampled_image,
            coverage_reduction_mode: self.coverage_reduction_mode && other.coverage_reduction_mode,
            custom_border_color_without_format: self.custom_border_color_without_format
                && other.custom_border_color_without_format,
            custom_border_colors: self.custom_border_colors && other.custom_border_colors,
            decode_mode_shared_exponent: self.decode_mode_shared_exponent
                && other.decode_mode_shared_exponent,
            dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing
                && other.dedicated_allocation_image_aliasing,
            depth_bias_clamp: self.depth_bias_clamp && other.depth_bias_clamp,
            depth_bounds: self.depth_bounds && other.depth_bounds,
            depth_clamp: self.depth_clamp && other.depth_clamp,
            depth_clamp_zero_one: self.depth_clamp_zero_one && other.depth_clamp_zero_one,
            depth_clip_control: self.depth_clip_control && other.depth_clip_control,
            depth_clip_enable: self.depth_clip_enable && other.depth_clip_enable,
            descriptor_binding_acceleration_structure_update_after_bind: self
                .descriptor_binding_acceleration_structure_update_after_bind
                && other.descriptor_binding_acceleration_structure_update_after_bind,
            descriptor_binding_inline_uniform_block_update_after_bind: self
                .descriptor_binding_inline_uniform_block_update_after_bind
                && other.descriptor_binding_inline_uniform_block_update_after_bind,
            descriptor_binding_partially_bound: self.descriptor_binding_partially_bound
                && other.descriptor_binding_partially_bound,
            descriptor_binding_sampled_image_update_after_bind: self
                .descriptor_binding_sampled_image_update_after_bind
                && other.descriptor_binding_sampled_image_update_after_bind,
            descriptor_binding_storage_buffer_update_after_bind: self
                .descriptor_binding_storage_buffer_update_after_bind
                && other.descriptor_binding_storage_buffer_update_after_bind,
            descriptor_binding_storage_image_update_after_bind: self
                .descriptor_binding_storage_image_update_after_bind
                && other.descriptor_binding_storage_image_update_after_bind,
            descriptor_binding_storage_texel_buffer_update_after_bind: self
                .descriptor_binding_storage_texel_buffer_update_after_bind
                && other.descriptor_binding_storage_texel_buffer_update_after_bind,
            descriptor_binding_uniform_buffer_update_after_bind: self
                .descriptor_binding_uniform_buffer_update_after_bind
                && other.descriptor_binding_uniform_buffer_update_after_bind,
            descriptor_binding_uniform_texel_buffer_update_after_bind: self
                .descriptor_binding_uniform_texel_buffer_update_after_bind
                && other.descriptor_binding_uniform_texel_buffer_update_after_bind,
            descriptor_binding_update_unused_while_pending: self
                .descriptor_binding_update_unused_while_pending
                && other.descriptor_binding_update_unused_while_pending,
            descriptor_binding_variable_descriptor_count: self
                .descriptor_binding_variable_descriptor_count
                && other.descriptor_binding_variable_descriptor_count,
            descriptor_buffer: self.descriptor_buffer && other.descriptor_buffer,
            descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay
                && other.descriptor_buffer_capture_replay,
            descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored
                && other.descriptor_buffer_image_layout_ignored,
            descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors
                && other.descriptor_buffer_push_descriptors,
            descriptor_indexing: self.descriptor_indexing && other.descriptor_indexing,
            descriptor_set_host_mapping: self.descriptor_set_host_mapping
                && other.descriptor_set_host_mapping,
            device_coherent_memory: self.device_coherent_memory && other.device_coherent_memory,
            device_fault: self.device_fault && other.device_fault,
            device_fault_vendor_binary: self.device_fault_vendor_binary
                && other.device_fault_vendor_binary,
            device_generated_commands: self.device_generated_commands
                && other.device_generated_commands,
            device_memory_report: self.device_memory_report && other.device_memory_report,
            diagnostics_config: self.diagnostics_config && other.diagnostics_config,
            draw_indirect_count: self.draw_indirect_count && other.draw_indirect_count,
            draw_indirect_first_instance: self.draw_indirect_first_instance
                && other.draw_indirect_first_instance,
            dual_src_blend: self.dual_src_blend && other.dual_src_blend,
            dynamic_rendering: self.dynamic_rendering && other.dynamic_rendering,
            events: self.events && other.events,
            exclusive_scissor: self.exclusive_scissor && other.exclusive_scissor,
            extended_dynamic_state: self.extended_dynamic_state && other.extended_dynamic_state,
            extended_dynamic_state2: self.extended_dynamic_state2 && other.extended_dynamic_state2,
            extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op
                && other.extended_dynamic_state2_logic_op,
            extended_dynamic_state2_patch_control_points: self
                .extended_dynamic_state2_patch_control_points
                && other.extended_dynamic_state2_patch_control_points,
            extended_dynamic_state3_alpha_to_coverage_enable: self
                .extended_dynamic_state3_alpha_to_coverage_enable
                && other.extended_dynamic_state3_alpha_to_coverage_enable,
            extended_dynamic_state3_alpha_to_one_enable: self
                .extended_dynamic_state3_alpha_to_one_enable
                && other.extended_dynamic_state3_alpha_to_one_enable,
            extended_dynamic_state3_color_blend_advanced: self
                .extended_dynamic_state3_color_blend_advanced
                && other.extended_dynamic_state3_color_blend_advanced,
            extended_dynamic_state3_color_blend_enable: self
                .extended_dynamic_state3_color_blend_enable
                && other.extended_dynamic_state3_color_blend_enable,
            extended_dynamic_state3_color_blend_equation: self
                .extended_dynamic_state3_color_blend_equation
                && other.extended_dynamic_state3_color_blend_equation,
            extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask
                && other.extended_dynamic_state3_color_write_mask,
            extended_dynamic_state3_conservative_rasterization_mode: self
                .extended_dynamic_state3_conservative_rasterization_mode
                && other.extended_dynamic_state3_conservative_rasterization_mode,
            extended_dynamic_state3_coverage_modulation_mode: self
                .extended_dynamic_state3_coverage_modulation_mode
                && other.extended_dynamic_state3_coverage_modulation_mode,
            extended_dynamic_state3_coverage_modulation_table: self
                .extended_dynamic_state3_coverage_modulation_table
                && other.extended_dynamic_state3_coverage_modulation_table,
            extended_dynamic_state3_coverage_modulation_table_enable: self
                .extended_dynamic_state3_coverage_modulation_table_enable
                && other.extended_dynamic_state3_coverage_modulation_table_enable,
            extended_dynamic_state3_coverage_reduction_mode: self
                .extended_dynamic_state3_coverage_reduction_mode
                && other.extended_dynamic_state3_coverage_reduction_mode,
            extended_dynamic_state3_coverage_to_color_enable: self
                .extended_dynamic_state3_coverage_to_color_enable
                && other.extended_dynamic_state3_coverage_to_color_enable,
            extended_dynamic_state3_coverage_to_color_location: self
                .extended_dynamic_state3_coverage_to_color_location
                && other.extended_dynamic_state3_coverage_to_color_location,
            extended_dynamic_state3_depth_clamp_enable: self
                .extended_dynamic_state3_depth_clamp_enable
                && other.extended_dynamic_state3_depth_clamp_enable,
            extended_dynamic_state3_depth_clip_enable: self
                .extended_dynamic_state3_depth_clip_enable
                && other.extended_dynamic_state3_depth_clip_enable,
            extended_dynamic_state3_depth_clip_negative_one_to_one: self
                .extended_dynamic_state3_depth_clip_negative_one_to_one
                && other.extended_dynamic_state3_depth_clip_negative_one_to_one,
            extended_dynamic_state3_extra_primitive_overestimation_size: self
                .extended_dynamic_state3_extra_primitive_overestimation_size
                && other.extended_dynamic_state3_extra_primitive_overestimation_size,
            extended_dynamic_state3_line_rasterization_mode: self
                .extended_dynamic_state3_line_rasterization_mode
                && other.extended_dynamic_state3_line_rasterization_mode,
            extended_dynamic_state3_line_stipple_enable: self
                .extended_dynamic_state3_line_stipple_enable
                && other.extended_dynamic_state3_line_stipple_enable,
            extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable
                && other.extended_dynamic_state3_logic_op_enable,
            extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode
                && other.extended_dynamic_state3_polygon_mode,
            extended_dynamic_state3_provoking_vertex_mode: self
                .extended_dynamic_state3_provoking_vertex_mode
                && other.extended_dynamic_state3_provoking_vertex_mode,
            extended_dynamic_state3_rasterization_samples: self
                .extended_dynamic_state3_rasterization_samples
                && other.extended_dynamic_state3_rasterization_samples,
            extended_dynamic_state3_rasterization_stream: self
                .extended_dynamic_state3_rasterization_stream
                && other.extended_dynamic_state3_rasterization_stream,
            extended_dynamic_state3_representative_fragment_test_enable: self
                .extended_dynamic_state3_representative_fragment_test_enable
                && other.extended_dynamic_state3_representative_fragment_test_enable,
            extended_dynamic_state3_sample_locations_enable: self
                .extended_dynamic_state3_sample_locations_enable
                && other.extended_dynamic_state3_sample_locations_enable,
            extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask
                && other.extended_dynamic_state3_sample_mask,
            extended_dynamic_state3_shading_rate_image_enable: self
                .extended_dynamic_state3_shading_rate_image_enable
                && other.extended_dynamic_state3_shading_rate_image_enable,
            extended_dynamic_state3_tessellation_domain_origin: self
                .extended_dynamic_state3_tessellation_domain_origin
                && other.extended_dynamic_state3_tessellation_domain_origin,
            extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle
                && other.extended_dynamic_state3_viewport_swizzle,
            extended_dynamic_state3_viewport_w_scaling_enable: self
                .extended_dynamic_state3_viewport_w_scaling_enable
                && other.extended_dynamic_state3_viewport_w_scaling_enable,
            external_memory_rdma: self.external_memory_rdma && other.external_memory_rdma,
            fill_mode_non_solid: self.fill_mode_non_solid && other.fill_mode_non_solid,
            format_a4b4g4r4: self.format_a4b4g4r4 && other.format_a4b4g4r4,
            format_a4r4g4b4: self.format_a4r4g4b4 && other.format_a4r4g4b4,
            format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler
                && other.format_rgba10x6_without_y_cb_cr_sampler,
            fragment_density_map: self.fragment_density_map && other.fragment_density_map,
            fragment_density_map_deferred: self.fragment_density_map_deferred
                && other.fragment_density_map_deferred,
            fragment_density_map_dynamic: self.fragment_density_map_dynamic
                && other.fragment_density_map_dynamic,
            fragment_density_map_non_subsampled_images: self
                .fragment_density_map_non_subsampled_images
                && other.fragment_density_map_non_subsampled_images,
            fragment_density_map_offset: self.fragment_density_map_offset
                && other.fragment_density_map_offset,
            fragment_shader_barycentric: self.fragment_shader_barycentric
                && other.fragment_shader_barycentric,
            fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock
                && other.fragment_shader_pixel_interlock,
            fragment_shader_sample_interlock: self.fragment_shader_sample_interlock
                && other.fragment_shader_sample_interlock,
            fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock
                && other.fragment_shader_shading_rate_interlock,
            fragment_shading_rate_enums: self.fragment_shading_rate_enums
                && other.fragment_shading_rate_enums,
            fragment_stores_and_atomics: self.fragment_stores_and_atomics
                && other.fragment_stores_and_atomics,
            full_draw_index_uint32: self.full_draw_index_uint32 && other.full_draw_index_uint32,
            geometry_shader: self.geometry_shader && other.geometry_shader,
            geometry_streams: self.geometry_streams && other.geometry_streams,
            global_priority_query: self.global_priority_query && other.global_priority_query,
            graphics_pipeline_library: self.graphics_pipeline_library
                && other.graphics_pipeline_library,
            host_query_reset: self.host_query_reset && other.host_query_reset,
            image2_d_view_of3_d: self.image2_d_view_of3_d && other.image2_d_view_of3_d,
            image_compression_control: self.image_compression_control
                && other.image_compression_control,
            image_compression_control_swapchain: self.image_compression_control_swapchain
                && other.image_compression_control_swapchain,
            image_cube_array: self.image_cube_array && other.image_cube_array,
            image_footprint: self.image_footprint && other.image_footprint,
            image_view2_d_on3_d_image: self.image_view2_d_on3_d_image
                && other.image_view2_d_on3_d_image,
            image_view_format_reinterpretation: self.image_view_format_reinterpretation
                && other.image_view_format_reinterpretation,
            image_view_format_swizzle: self.image_view_format_swizzle
                && other.image_view_format_swizzle,
            imageless_framebuffer: self.imageless_framebuffer && other.imageless_framebuffer,
            independent_blend: self.independent_blend && other.independent_blend,
            index_type_uint8: self.index_type_uint8 && other.index_type_uint8,
            indirect_copy: self.indirect_copy && other.indirect_copy,
            inherited_conditional_rendering: self.inherited_conditional_rendering
                && other.inherited_conditional_rendering,
            inherited_queries: self.inherited_queries && other.inherited_queries,
            inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d
                && other.inherited_viewport_scissor2_d,
            inline_uniform_block: self.inline_uniform_block && other.inline_uniform_block,
            invocation_mask: self.invocation_mask && other.invocation_mask,
            large_points: self.large_points && other.large_points,
            legacy_dithering: self.legacy_dithering && other.legacy_dithering,
            linear_color_attachment: self.linear_color_attachment && other.linear_color_attachment,
            logic_op: self.logic_op && other.logic_op,
            maintenance4: self.maintenance4 && other.maintenance4,
            memory_decompression: self.memory_decompression && other.memory_decompression,
            memory_priority: self.memory_priority && other.memory_priority,
            mesh_shader: self.mesh_shader && other.mesh_shader,
            mesh_shader_queries: self.mesh_shader_queries && other.mesh_shader_queries,
            micromap: self.micromap && other.micromap,
            micromap_capture_replay: self.micromap_capture_replay && other.micromap_capture_replay,
            micromap_host_commands: self.micromap_host_commands && other.micromap_host_commands,
            min_lod: self.min_lod && other.min_lod,
            multi_draw: self.multi_draw && other.multi_draw,
            multi_draw_indirect: self.multi_draw_indirect && other.multi_draw_indirect,
            multi_viewport: self.multi_viewport && other.multi_viewport,
            multisample_array_image: self.multisample_array_image && other.multisample_array_image,
            multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled
                && other.multisampled_render_to_single_sampled,
            multiview: self.multiview && other.multiview,
            multiview_geometry_shader: self.multiview_geometry_shader
                && other.multiview_geometry_shader,
            multiview_mesh_shader: self.multiview_mesh_shader && other.multiview_mesh_shader,
            multiview_per_view_viewports: self.multiview_per_view_viewports
                && other.multiview_per_view_viewports,
            multiview_tessellation_shader: self.multiview_tessellation_shader
                && other.multiview_tessellation_shader,
            mutable_comparison_samplers: self.mutable_comparison_samplers
                && other.mutable_comparison_samplers,
            mutable_descriptor_type: self.mutable_descriptor_type && other.mutable_descriptor_type,
            no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates
                && other.no_invocation_fragment_shading_rates,
            non_seamless_cube_map: self.non_seamless_cube_map && other.non_seamless_cube_map,
            null_descriptor: self.null_descriptor && other.null_descriptor,
            occlusion_query_precise: self.occlusion_query_precise && other.occlusion_query_precise,
            optical_flow: self.optical_flow && other.optical_flow,
            pageable_device_local_memory: self.pageable_device_local_memory
                && other.pageable_device_local_memory,
            performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools
                && other.performance_counter_multiple_query_pools,
            performance_counter_query_pools: self.performance_counter_query_pools
                && other.performance_counter_query_pools,
            pipeline_creation_cache_control: self.pipeline_creation_cache_control
                && other.pipeline_creation_cache_control,
            pipeline_executable_info: self.pipeline_executable_info
                && other.pipeline_executable_info,
            pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate
                && other.pipeline_fragment_shading_rate,
            pipeline_properties_identifier: self.pipeline_properties_identifier
                && other.pipeline_properties_identifier,
            pipeline_protected_access: self.pipeline_protected_access
                && other.pipeline_protected_access,
            pipeline_robustness: self.pipeline_robustness && other.pipeline_robustness,
            pipeline_statistics_query: self.pipeline_statistics_query
                && other.pipeline_statistics_query,
            point_polygons: self.point_polygons && other.point_polygons,
            present_barrier: self.present_barrier && other.present_barrier,
            present_id: self.present_id && other.present_id,
            present_wait: self.present_wait && other.present_wait,
            primitive_fragment_shading_rate: self.primitive_fragment_shading_rate
                && other.primitive_fragment_shading_rate,
            primitive_fragment_shading_rate_mesh_shader: self
                .primitive_fragment_shading_rate_mesh_shader
                && other.primitive_fragment_shading_rate_mesh_shader,
            primitive_topology_list_restart: self.primitive_topology_list_restart
                && other.primitive_topology_list_restart,
            primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart
                && other.primitive_topology_patch_list_restart,
            primitives_generated_query: self.primitives_generated_query
                && other.primitives_generated_query,
            primitives_generated_query_with_non_zero_streams: self
                .primitives_generated_query_with_non_zero_streams
                && other.primitives_generated_query_with_non_zero_streams,
            primitives_generated_query_with_rasterizer_discard: self
                .primitives_generated_query_with_rasterizer_discard
                && other.primitives_generated_query_with_rasterizer_discard,
            private_data: self.private_data && other.private_data,
            protected_memory: self.protected_memory && other.protected_memory,
            provoking_vertex_last: self.provoking_vertex_last && other.provoking_vertex_last,
            rasterization_order_color_attachment_access: self
                .rasterization_order_color_attachment_access
                && other.rasterization_order_color_attachment_access,
            rasterization_order_depth_attachment_access: self
                .rasterization_order_depth_attachment_access
                && other.rasterization_order_depth_attachment_access,
            rasterization_order_stencil_attachment_access: self
                .rasterization_order_stencil_attachment_access
                && other.rasterization_order_stencil_attachment_access,
            ray_query: self.ray_query && other.ray_query,
            ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder
                && other.ray_tracing_invocation_reorder,
            ray_tracing_maintenance1: self.ray_tracing_maintenance1
                && other.ray_tracing_maintenance1,
            ray_tracing_motion_blur: self.ray_tracing_motion_blur && other.ray_tracing_motion_blur,
            ray_tracing_motion_blur_pipeline_trace_rays_indirect: self
                .ray_tracing_motion_blur_pipeline_trace_rays_indirect
                && other.ray_tracing_motion_blur_pipeline_trace_rays_indirect,
            ray_tracing_pipeline: self.ray_tracing_pipeline && other.ray_tracing_pipeline,
            ray_tracing_pipeline_shader_group_handle_capture_replay: self
                .ray_tracing_pipeline_shader_group_handle_capture_replay
                && other.ray_tracing_pipeline_shader_group_handle_capture_replay,
            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self
                .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
                && other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed,
            ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect
                && other.ray_tracing_pipeline_trace_rays_indirect,
            ray_tracing_pipeline_trace_rays_indirect2: self
                .ray_tracing_pipeline_trace_rays_indirect2
                && other.ray_tracing_pipeline_trace_rays_indirect2,
            ray_traversal_primitive_culling: self.ray_traversal_primitive_culling
                && other.ray_traversal_primitive_culling,
            rectangular_lines: self.rectangular_lines && other.rectangular_lines,
            report_address_binding: self.report_address_binding && other.report_address_binding,
            representative_fragment_test: self.representative_fragment_test
                && other.representative_fragment_test,
            robust_buffer_access: self.robust_buffer_access && other.robust_buffer_access,
            robust_buffer_access2: self.robust_buffer_access2 && other.robust_buffer_access2,
            robust_image_access: self.robust_image_access && other.robust_image_access,
            robust_image_access2: self.robust_image_access2 && other.robust_image_access2,
            runtime_descriptor_array: self.runtime_descriptor_array
                && other.runtime_descriptor_array,
            sample_rate_shading: self.sample_rate_shading && other.sample_rate_shading,
            sampler2_d_view_of3_d: self.sampler2_d_view_of3_d && other.sampler2_d_view_of3_d,
            sampler_anisotropy: self.sampler_anisotropy && other.sampler_anisotropy,
            sampler_filter_minmax: self.sampler_filter_minmax && other.sampler_filter_minmax,
            sampler_mip_lod_bias: self.sampler_mip_lod_bias && other.sampler_mip_lod_bias,
            sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge
                && other.sampler_mirror_clamp_to_edge,
            sampler_ycbcr_conversion: self.sampler_ycbcr_conversion
                && other.sampler_ycbcr_conversion,
            scalar_block_layout: self.scalar_block_layout && other.scalar_block_layout,
            separate_depth_stencil_layouts: self.separate_depth_stencil_layouts
                && other.separate_depth_stencil_layouts,
            separate_stencil_mask_ref: self.separate_stencil_mask_ref
                && other.separate_stencil_mask_ref,
            shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add
                && other.shader_buffer_float16_atomic_add,
            shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max
                && other.shader_buffer_float16_atomic_min_max,
            shader_buffer_float16_atomics: self.shader_buffer_float16_atomics
                && other.shader_buffer_float16_atomics,
            shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add
                && other.shader_buffer_float32_atomic_add,
            shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max
                && other.shader_buffer_float32_atomic_min_max,
            shader_buffer_float32_atomics: self.shader_buffer_float32_atomics
                && other.shader_buffer_float32_atomics,
            shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add
                && other.shader_buffer_float64_atomic_add,
            shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max
                && other.shader_buffer_float64_atomic_min_max,
            shader_buffer_float64_atomics: self.shader_buffer_float64_atomics
                && other.shader_buffer_float64_atomics,
            shader_buffer_int64_atomics: self.shader_buffer_int64_atomics
                && other.shader_buffer_int64_atomics,
            shader_clip_distance: self.shader_clip_distance && other.shader_clip_distance,
            shader_core_builtins: self.shader_core_builtins && other.shader_core_builtins,
            shader_cull_distance: self.shader_cull_distance && other.shader_cull_distance,
            shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation
                && other.shader_demote_to_helper_invocation,
            shader_device_clock: self.shader_device_clock && other.shader_device_clock,
            shader_draw_parameters: self.shader_draw_parameters && other.shader_draw_parameters,
            shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests
                && other.shader_early_and_late_fragment_tests,
            shader_float16: self.shader_float16 && other.shader_float16,
            shader_float64: self.shader_float64 && other.shader_float64,
            shader_image_float32_atomic_add: self.shader_image_float32_atomic_add
                && other.shader_image_float32_atomic_add,
            shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max
                && other.shader_image_float32_atomic_min_max,
            shader_image_float32_atomics: self.shader_image_float32_atomics
                && other.shader_image_float32_atomics,
            shader_image_gather_extended: self.shader_image_gather_extended
                && other.shader_image_gather_extended,
            shader_image_int64_atomics: self.shader_image_int64_atomics
                && other.shader_image_int64_atomics,
            shader_input_attachment_array_dynamic_indexing: self
                .shader_input_attachment_array_dynamic_indexing
                && other.shader_input_attachment_array_dynamic_indexing,
            shader_input_attachment_array_non_uniform_indexing: self
                .shader_input_attachment_array_non_uniform_indexing
                && other.shader_input_attachment_array_non_uniform_indexing,
            shader_int16: self.shader_int16 && other.shader_int16,
            shader_int64: self.shader_int64 && other.shader_int64,
            shader_int8: self.shader_int8 && other.shader_int8,
            shader_integer_dot_product: self.shader_integer_dot_product
                && other.shader_integer_dot_product,
            shader_integer_functions2: self.shader_integer_functions2
                && other.shader_integer_functions2,
            shader_module_identifier: self.shader_module_identifier
                && other.shader_module_identifier,
            shader_output_layer: self.shader_output_layer && other.shader_output_layer,
            shader_output_viewport_index: self.shader_output_viewport_index
                && other.shader_output_viewport_index,
            shader_resource_min_lod: self.shader_resource_min_lod && other.shader_resource_min_lod,
            shader_resource_residency: self.shader_resource_residency
                && other.shader_resource_residency,
            shader_sample_rate_interpolation_functions: self
                .shader_sample_rate_interpolation_functions
                && other.shader_sample_rate_interpolation_functions,
            shader_sampled_image_array_dynamic_indexing: self
                .shader_sampled_image_array_dynamic_indexing
                && other.shader_sampled_image_array_dynamic_indexing,
            shader_sampled_image_array_non_uniform_indexing: self
                .shader_sampled_image_array_non_uniform_indexing
                && other.shader_sampled_image_array_non_uniform_indexing,
            shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add
                && other.shader_shared_float16_atomic_add,
            shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max
                && other.shader_shared_float16_atomic_min_max,
            shader_shared_float16_atomics: self.shader_shared_float16_atomics
                && other.shader_shared_float16_atomics,
            shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add
                && other.shader_shared_float32_atomic_add,
            shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max
                && other.shader_shared_float32_atomic_min_max,
            shader_shared_float32_atomics: self.shader_shared_float32_atomics
                && other.shader_shared_float32_atomics,
            shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add
                && other.shader_shared_float64_atomic_add,
            shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max
                && other.shader_shared_float64_atomic_min_max,
            shader_shared_float64_atomics: self.shader_shared_float64_atomics
                && other.shader_shared_float64_atomics,
            shader_shared_int64_atomics: self.shader_shared_int64_atomics
                && other.shader_shared_int64_atomics,
            shader_sm_builtins: self.shader_sm_builtins && other.shader_sm_builtins,
            shader_storage_buffer_array_dynamic_indexing: self
                .shader_storage_buffer_array_dynamic_indexing
                && other.shader_storage_buffer_array_dynamic_indexing,
            shader_storage_buffer_array_non_uniform_indexing: self
                .shader_storage_buffer_array_non_uniform_indexing
                && other.shader_storage_buffer_array_non_uniform_indexing,
            shader_storage_image_array_dynamic_indexing: self
                .shader_storage_image_array_dynamic_indexing
                && other.shader_storage_image_array_dynamic_indexing,
            shader_storage_image_array_non_uniform_indexing: self
                .shader_storage_image_array_non_uniform_indexing
                && other.shader_storage_image_array_non_uniform_indexing,
            shader_storage_image_extended_formats: self.shader_storage_image_extended_formats
                && other.shader_storage_image_extended_formats,
            shader_storage_image_multisample: self.shader_storage_image_multisample
                && other.shader_storage_image_multisample,
            shader_storage_image_read_without_format: self.shader_storage_image_read_without_format
                && other.shader_storage_image_read_without_format,
            shader_storage_image_write_without_format: self
                .shader_storage_image_write_without_format
                && other.shader_storage_image_write_without_format,
            shader_storage_texel_buffer_array_dynamic_indexing: self
                .shader_storage_texel_buffer_array_dynamic_indexing
                && other.shader_storage_texel_buffer_array_dynamic_indexing,
            shader_storage_texel_buffer_array_non_uniform_indexing: self
                .shader_storage_texel_buffer_array_non_uniform_indexing
                && other.shader_storage_texel_buffer_array_non_uniform_indexing,
            shader_subgroup_clock: self.shader_subgroup_clock && other.shader_subgroup_clock,
            shader_subgroup_extended_types: self.shader_subgroup_extended_types
                && other.shader_subgroup_extended_types,
            shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow
                && other.shader_subgroup_uniform_control_flow,
            shader_terminate_invocation: self.shader_terminate_invocation
                && other.shader_terminate_invocation,
            shader_tessellation_and_geometry_point_size: self
                .shader_tessellation_and_geometry_point_size
                && other.shader_tessellation_and_geometry_point_size,
            shader_uniform_buffer_array_dynamic_indexing: self
                .shader_uniform_buffer_array_dynamic_indexing
                && other.shader_uniform_buffer_array_dynamic_indexing,
            shader_uniform_buffer_array_non_uniform_indexing: self
                .shader_uniform_buffer_array_non_uniform_indexing
                && other.shader_uniform_buffer_array_non_uniform_indexing,
            shader_uniform_texel_buffer_array_dynamic_indexing: self
                .shader_uniform_texel_buffer_array_dynamic_indexing
                && other.shader_uniform_texel_buffer_array_dynamic_indexing,
            shader_uniform_texel_buffer_array_non_uniform_indexing: self
                .shader_uniform_texel_buffer_array_non_uniform_indexing
                && other.shader_uniform_texel_buffer_array_non_uniform_indexing,
            shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory
                && other.shader_zero_initialize_workgroup_memory,
            shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order
                && other.shading_rate_coarse_sample_order,
            shading_rate_image: self.shading_rate_image && other.shading_rate_image,
            smooth_lines: self.smooth_lines && other.smooth_lines,
            sparse_binding: self.sparse_binding && other.sparse_binding,
            sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add
                && other.sparse_image_float32_atomic_add,
            sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max
                && other.sparse_image_float32_atomic_min_max,
            sparse_image_float32_atomics: self.sparse_image_float32_atomics
                && other.sparse_image_float32_atomics,
            sparse_image_int64_atomics: self.sparse_image_int64_atomics
                && other.sparse_image_int64_atomics,
            sparse_residency16_samples: self.sparse_residency16_samples
                && other.sparse_residency16_samples,
            sparse_residency2_samples: self.sparse_residency2_samples
                && other.sparse_residency2_samples,
            sparse_residency4_samples: self.sparse_residency4_samples
                && other.sparse_residency4_samples,
            sparse_residency8_samples: self.sparse_residency8_samples
                && other.sparse_residency8_samples,
            sparse_residency_aliased: self.sparse_residency_aliased
                && other.sparse_residency_aliased,
            sparse_residency_buffer: self.sparse_residency_buffer && other.sparse_residency_buffer,
            sparse_residency_image2_d: self.sparse_residency_image2_d
                && other.sparse_residency_image2_d,
            sparse_residency_image3_d: self.sparse_residency_image3_d
                && other.sparse_residency_image3_d,
            stippled_bresenham_lines: self.stippled_bresenham_lines
                && other.stippled_bresenham_lines,
            stippled_rectangular_lines: self.stippled_rectangular_lines
                && other.stippled_rectangular_lines,
            stippled_smooth_lines: self.stippled_smooth_lines && other.stippled_smooth_lines,
            storage_buffer16_bit_access: self.storage_buffer16_bit_access
                && other.storage_buffer16_bit_access,
            storage_buffer8_bit_access: self.storage_buffer8_bit_access
                && other.storage_buffer8_bit_access,
            storage_input_output16: self.storage_input_output16 && other.storage_input_output16,
            storage_push_constant16: self.storage_push_constant16 && other.storage_push_constant16,
            storage_push_constant8: self.storage_push_constant8 && other.storage_push_constant8,
            subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id
                && other.subgroup_broadcast_dynamic_id,
            subgroup_size_control: self.subgroup_size_control && other.subgroup_size_control,
            subpass_merge_feedback: self.subpass_merge_feedback && other.subpass_merge_feedback,
            subpass_shading: self.subpass_shading && other.subpass_shading,
            supersample_fragment_shading_rates: self.supersample_fragment_shading_rates
                && other.supersample_fragment_shading_rates,
            swapchain_maintenance1: self.swapchain_maintenance1 && other.swapchain_maintenance1,
            synchronization2: self.synchronization2 && other.synchronization2,
            task_shader: self.task_shader && other.task_shader,
            tessellation_isolines: self.tessellation_isolines && other.tessellation_isolines,
            tessellation_point_mode: self.tessellation_point_mode && other.tessellation_point_mode,
            tessellation_shader: self.tessellation_shader && other.tessellation_shader,
            texel_buffer_alignment: self.texel_buffer_alignment && other.texel_buffer_alignment,
            texture_block_match: self.texture_block_match && other.texture_block_match,
            texture_box_filter: self.texture_box_filter && other.texture_box_filter,
            texture_compression_astc_hdr: self.texture_compression_astc_hdr
                && other.texture_compression_astc_hdr,
            texture_compression_astc_ldr: self.texture_compression_astc_ldr
                && other.texture_compression_astc_ldr,
            texture_compression_bc: self.texture_compression_bc && other.texture_compression_bc,
            texture_compression_etc2: self.texture_compression_etc2
                && other.texture_compression_etc2,
            texture_sample_weighted: self.texture_sample_weighted && other.texture_sample_weighted,
            tile_properties: self.tile_properties && other.tile_properties,
            timeline_semaphore: self.timeline_semaphore && other.timeline_semaphore,
            transform_feedback: self.transform_feedback && other.transform_feedback,
            transform_feedback_preserves_provoking_vertex: self
                .transform_feedback_preserves_provoking_vertex
                && other.transform_feedback_preserves_provoking_vertex,
            triangle_fans: self.triangle_fans && other.triangle_fans,
            uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access
                && other.uniform_and_storage_buffer16_bit_access,
            uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access
                && other.uniform_and_storage_buffer8_bit_access,
            uniform_buffer_standard_layout: self.uniform_buffer_standard_layout
                && other.uniform_buffer_standard_layout,
            variable_multisample_rate: self.variable_multisample_rate
                && other.variable_multisample_rate,
            variable_pointers: self.variable_pointers && other.variable_pointers,
            variable_pointers_storage_buffer: self.variable_pointers_storage_buffer
                && other.variable_pointers_storage_buffer,
            vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride
                && other.vertex_attribute_access_beyond_stride,
            vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor
                && other.vertex_attribute_instance_rate_divisor,
            vertex_attribute_instance_rate_zero_divisor: self
                .vertex_attribute_instance_rate_zero_divisor
                && other.vertex_attribute_instance_rate_zero_divisor,
            vertex_input_dynamic_state: self.vertex_input_dynamic_state
                && other.vertex_input_dynamic_state,
            vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics
                && other.vertex_pipeline_stores_and_atomics,
            vulkan_memory_model: self.vulkan_memory_model && other.vulkan_memory_model,
            vulkan_memory_model_availability_visibility_chains: self
                .vulkan_memory_model_availability_visibility_chains
                && other.vulkan_memory_model_availability_visibility_chains,
            vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope
                && other.vulkan_memory_model_device_scope,
            wide_lines: self.wide_lines && other.wide_lines,
            workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout
                && other.workgroup_memory_explicit_layout,
            workgroup_memory_explicit_layout16_bit_access: self
                .workgroup_memory_explicit_layout16_bit_access
                && other.workgroup_memory_explicit_layout16_bit_access,
            workgroup_memory_explicit_layout8_bit_access: self
                .workgroup_memory_explicit_layout8_bit_access
                && other.workgroup_memory_explicit_layout8_bit_access,
            workgroup_memory_explicit_layout_scalar_block_layout: self
                .workgroup_memory_explicit_layout_scalar_block_layout
                && other.workgroup_memory_explicit_layout_scalar_block_layout,
            ycbcr2plane444_formats: self.ycbcr2plane444_formats && other.ycbcr2plane444_formats,
            ycbcr_image_arrays: self.ycbcr_image_arrays && other.ycbcr_image_arrays,
            _ne: crate::NonExhaustive(()),
        }
    }
    #[doc = r" Returns `self` without the members set in `other`."]
    #[inline]
    pub const fn difference(&self, other: &Self) -> Self {
        Self {
            acceleration_structure: self.acceleration_structure && !other.acceleration_structure,
            acceleration_structure_capture_replay: self.acceleration_structure_capture_replay
                && !other.acceleration_structure_capture_replay,
            acceleration_structure_host_commands: self.acceleration_structure_host_commands
                && !other.acceleration_structure_host_commands,
            acceleration_structure_indirect_build: self.acceleration_structure_indirect_build
                && !other.acceleration_structure_indirect_build,
            advanced_blend_coherent_operations: self.advanced_blend_coherent_operations
                && !other.advanced_blend_coherent_operations,
            alpha_to_one: self.alpha_to_one && !other.alpha_to_one,
            amigo_profiling: self.amigo_profiling && !other.amigo_profiling,
            attachment_feedback_loop_layout: self.attachment_feedback_loop_layout
                && !other.attachment_feedback_loop_layout,
            attachment_fragment_shading_rate: self.attachment_fragment_shading_rate
                && !other.attachment_fragment_shading_rate,
            border_color_swizzle: self.border_color_swizzle && !other.border_color_swizzle,
            border_color_swizzle_from_image: self.border_color_swizzle_from_image
                && !other.border_color_swizzle_from_image,
            bresenham_lines: self.bresenham_lines && !other.bresenham_lines,
            buffer_device_address: self.buffer_device_address && !other.buffer_device_address,
            buffer_device_address_capture_replay: self.buffer_device_address_capture_replay
                && !other.buffer_device_address_capture_replay,
            buffer_device_address_multi_device: self.buffer_device_address_multi_device
                && !other.buffer_device_address_multi_device,
            color_write_enable: self.color_write_enable && !other.color_write_enable,
            compute_derivative_group_linear: self.compute_derivative_group_linear
                && !other.compute_derivative_group_linear,
            compute_derivative_group_quads: self.compute_derivative_group_quads
                && !other.compute_derivative_group_quads,
            compute_full_subgroups: self.compute_full_subgroups && !other.compute_full_subgroups,
            conditional_rendering: self.conditional_rendering && !other.conditional_rendering,
            constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors
                && !other.constant_alpha_color_blend_factors,
            cooperative_matrix: self.cooperative_matrix && !other.cooperative_matrix,
            cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access
                && !other.cooperative_matrix_robust_buffer_access,
            corner_sampled_image: self.corner_sampled_image && !other.corner_sampled_image,
            coverage_reduction_mode: self.coverage_reduction_mode && !other.coverage_reduction_mode,
            custom_border_color_without_format: self.custom_border_color_without_format
                && !other.custom_border_color_without_format,
            custom_border_colors: self.custom_border_colors && !other.custom_border_colors,
            decode_mode_shared_exponent: self.decode_mode_shared_exponent
                && !other.decode_mode_shared_exponent,
            dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing
                && !other.dedicated_allocation_image_aliasing,
            depth_bias_clamp: self.depth_bias_clamp && !other.depth_bias_clamp,
            depth_bounds: self.depth_bounds && !other.depth_bounds,
            depth_clamp: self.depth_clamp && !other.depth_clamp,
            depth_clamp_zero_one: self.depth_clamp_zero_one && !other.depth_clamp_zero_one,
            depth_clip_control: self.depth_clip_control && !other.depth_clip_control,
            depth_clip_enable: self.depth_clip_enable && !other.depth_clip_enable,
            descriptor_binding_acceleration_structure_update_after_bind: self
                .descriptor_binding_acceleration_structure_update_after_bind
                && !other.descriptor_binding_acceleration_structure_update_after_bind,
            descriptor_binding_inline_uniform_block_update_after_bind: self
                .descriptor_binding_inline_uniform_block_update_after_bind
                && !other.descriptor_binding_inline_uniform_block_update_after_bind,
            descriptor_binding_partially_bound: self.descriptor_binding_partially_bound
                && !other.descriptor_binding_partially_bound,
            descriptor_binding_sampled_image_update_after_bind: self
                .descriptor_binding_sampled_image_update_after_bind
                && !other.descriptor_binding_sampled_image_update_after_bind,
            descriptor_binding_storage_buffer_update_after_bind: self
                .descriptor_binding_storage_buffer_update_after_bind
                && !other.descriptor_binding_storage_buffer_update_after_bind,
            descriptor_binding_storage_image_update_after_bind: self
                .descriptor_binding_storage_image_update_after_bind
                && !other.descriptor_binding_storage_image_update_after_bind,
            descriptor_binding_storage_texel_buffer_update_after_bind: self
                .descriptor_binding_storage_texel_buffer_update_after_bind
                && !other.descriptor_binding_storage_texel_buffer_update_after_bind,
            descriptor_binding_uniform_buffer_update_after_bind: self
                .descriptor_binding_uniform_buffer_update_after_bind
                && !other.descriptor_binding_uniform_buffer_update_after_bind,
            descriptor_binding_uniform_texel_buffer_update_after_bind: self
                .descriptor_binding_uniform_texel_buffer_update_after_bind
                && !other.descriptor_binding_uniform_texel_buffer_update_after_bind,
            descriptor_binding_update_unused_while_pending: self
                .descriptor_binding_update_unused_while_pending
                && !other.descriptor_binding_update_unused_while_pending,
            descriptor_binding_variable_descriptor_count: self
                .descriptor_binding_variable_descriptor_count
                && !other.descriptor_binding_variable_descriptor_count,
            descriptor_buffer: self.descriptor_buffer && !other.descriptor_buffer,
            descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay
                && !other.descriptor_buffer_capture_replay,
            descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored
                && !other.descriptor_buffer_image_layout_ignored,
            descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors
                && !other.descriptor_buffer_push_descriptors,
            descriptor_indexing: self.descriptor_indexing && !other.descriptor_indexing,
            descriptor_set_host_mapping: self.descriptor_set_host_mapping
                && !other.descriptor_set_host_mapping,
            device_coherent_memory: self.device_coherent_memory && !other.device_coherent_memory,
            device_fault: self.device_fault && !other.device_fault,
            device_fault_vendor_binary: self.device_fault_vendor_binary
                && !other.device_fault_vendor_binary,
            device_generated_commands: self.device_generated_commands
                && !other.device_generated_commands,
            device_memory_report: self.device_memory_report && !other.device_memory_report,
            diagnostics_config: self.diagnostics_config && !other.diagnostics_config,
            draw_indirect_count: self.draw_indirect_count && !other.draw_indirect_count,
            draw_indirect_first_instance: self.draw_indirect_first_instance
                && !other.draw_indirect_first_instance,
            dual_src_blend: self.dual_src_blend && !other.dual_src_blend,
            dynamic_rendering: self.dynamic_rendering && !other.dynamic_rendering,
            events: self.events && !other.events,
            exclusive_scissor: self.exclusive_scissor && !other.exclusive_scissor,
            extended_dynamic_state: self.extended_dynamic_state && !other.extended_dynamic_state,
            extended_dynamic_state2: self.extended_dynamic_state2 && !other.extended_dynamic_state2,
            extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op
                && !other.extended_dynamic_state2_logic_op,
            extended_dynamic_state2_patch_control_points: self
                .extended_dynamic_state2_patch_control_points
                && !other.extended_dynamic_state2_patch_control_points,
            extended_dynamic_state3_alpha_to_coverage_enable: self
                .extended_dynamic_state3_alpha_to_coverage_enable
                && !other.extended_dynamic_state3_alpha_to_coverage_enable,
            extended_dynamic_state3_alpha_to_one_enable: self
                .extended_dynamic_state3_alpha_to_one_enable
                && !other.extended_dynamic_state3_alpha_to_one_enable,
            extended_dynamic_state3_color_blend_advanced: self
                .extended_dynamic_state3_color_blend_advanced
                && !other.extended_dynamic_state3_color_blend_advanced,
            extended_dynamic_state3_color_blend_enable: self
                .extended_dynamic_state3_color_blend_enable
                && !other.extended_dynamic_state3_color_blend_enable,
            extended_dynamic_state3_color_blend_equation: self
                .extended_dynamic_state3_color_blend_equation
                && !other.extended_dynamic_state3_color_blend_equation,
            extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask
                && !other.extended_dynamic_state3_color_write_mask,
            extended_dynamic_state3_conservative_rasterization_mode: self
                .extended_dynamic_state3_conservative_rasterization_mode
                && !other.extended_dynamic_state3_conservative_rasterization_mode,
            extended_dynamic_state3_coverage_modulation_mode: self
                .extended_dynamic_state3_coverage_modulation_mode
                && !other.extended_dynamic_state3_coverage_modulation_mode,
            extended_dynamic_state3_coverage_modulation_table: self
                .extended_dynamic_state3_coverage_modulation_table
                && !other.extended_dynamic_state3_coverage_modulation_table,
            extended_dynamic_state3_coverage_modulation_table_enable: self
                .extended_dynamic_state3_coverage_modulation_table_enable
                && !other.extended_dynamic_state3_coverage_modulation_table_enable,
            extended_dynamic_state3_coverage_reduction_mode: self
                .extended_dynamic_state3_coverage_reduction_mode
                && !other.extended_dynamic_state3_coverage_reduction_mode,
            extended_dynamic_state3_coverage_to_color_enable: self
                .extended_dynamic_state3_coverage_to_color_enable
                && !other.extended_dynamic_state3_coverage_to_color_enable,
            extended_dynamic_state3_coverage_to_color_location: self
                .extended_dynamic_state3_coverage_to_color_location
                && !other.extended_dynamic_state3_coverage_to_color_location,
            extended_dynamic_state3_depth_clamp_enable: self
                .extended_dynamic_state3_depth_clamp_enable
                && !other.extended_dynamic_state3_depth_clamp_enable,
            extended_dynamic_state3_depth_clip_enable: self
                .extended_dynamic_state3_depth_clip_enable
                && !other.extended_dynamic_state3_depth_clip_enable,
            extended_dynamic_state3_depth_clip_negative_one_to_one: self
                .extended_dynamic_state3_depth_clip_negative_one_to_one
                && !other.extended_dynamic_state3_depth_clip_negative_one_to_one,
            extended_dynamic_state3_extra_primitive_overestimation_size: self
                .extended_dynamic_state3_extra_primitive_overestimation_size
                && !other.extended_dynamic_state3_extra_primitive_overestimation_size,
            extended_dynamic_state3_line_rasterization_mode: self
                .extended_dynamic_state3_line_rasterization_mode
                && !other.extended_dynamic_state3_line_rasterization_mode,
            extended_dynamic_state3_line_stipple_enable: self
                .extended_dynamic_state3_line_stipple_enable
                && !other.extended_dynamic_state3_line_stipple_enable,
            extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable
                && !other.extended_dynamic_state3_logic_op_enable,
            extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode
                && !other.extended_dynamic_state3_polygon_mode,
            extended_dynamic_state3_provoking_vertex_mode: self
                .extended_dynamic_state3_provoking_vertex_mode
                && !other.extended_dynamic_state3_provoking_vertex_mode,
            extended_dynamic_state3_rasterization_samples: self
                .extended_dynamic_state3_rasterization_samples
                && !other.extended_dynamic_state3_rasterization_samples,
            extended_dynamic_state3_rasterization_stream: self
                .extended_dynamic_state3_rasterization_stream
                && !other.extended_dynamic_state3_rasterization_stream,
            extended_dynamic_state3_representative_fragment_test_enable: self
                .extended_dynamic_state3_representative_fragment_test_enable
                && !other.extended_dynamic_state3_representative_fragment_test_enable,
            extended_dynamic_state3_sample_locations_enable: self
                .extended_dynamic_state3_sample_locations_enable
                && !other.extended_dynamic_state3_sample_locations_enable,
            extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask
                && !other.extended_dynamic_state3_sample_mask,
            extended_dynamic_state3_shading_rate_image_enable: self
                .extended_dynamic_state3_shading_rate_image_enable
                && !other.extended_dynamic_state3_shading_rate_image_enable,
            extended_dynamic_state3_tessellation_domain_origin: self
                .extended_dynamic_state3_tessellation_domain_origin
                && !other.extended_dynamic_state3_tessellation_domain_origin,
            extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle
                && !other.extended_dynamic_state3_viewport_swizzle,
            extended_dynamic_state3_viewport_w_scaling_enable: self
                .extended_dynamic_state3_viewport_w_scaling_enable
                && !other.extended_dynamic_state3_viewport_w_scaling_enable,
            external_memory_rdma: self.external_memory_rdma && !other.external_memory_rdma,
            fill_mode_non_solid: self.fill_mode_non_solid && !other.fill_mode_non_solid,
            format_a4b4g4r4: self.format_a4b4g4r4 && !other.format_a4b4g4r4,
            format_a4r4g4b4: self.format_a4r4g4b4 && !other.format_a4r4g4b4,
            format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler
                && !other.format_rgba10x6_without_y_cb_cr_sampler,
            fragment_density_map: self.fragment_density_map && !other.fragment_density_map,
            fragment_density_map_deferred: self.fragment_density_map_deferred
                && !other.fragment_density_map_deferred,
            fragment_density_map_dynamic: self.fragment_density_map_dynamic
                && !other.fragment_density_map_dynamic,
            fragment_density_map_non_subsampled_images: self
                .fragment_density_map_non_subsampled_images
                && !other.fragment_density_map_non_subsampled_images,
            fragment_density_map_offset: self.fragment_density_map_offset
                && !other.fragment_density_map_offset,
            fragment_shader_barycentric: self.fragment_shader_barycentric
                && !other.fragment_shader_barycentric,
            fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock
                && !other.fragment_shader_pixel_interlock,
            fragment_shader_sample_interlock: self.fragment_shader_sample_interlock
                && !other.fragment_shader_sample_interlock,
            fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock
                && !other.fragment_shader_shading_rate_interlock,
            fragment_shading_rate_enums: self.fragment_shading_rate_enums
                && !other.fragment_shading_rate_enums,
            fragment_stores_and_atomics: self.fragment_stores_and_atomics
                && !other.fragment_stores_and_atomics,
            full_draw_index_uint32: self.full_draw_index_uint32 && !other.full_draw_index_uint32,
            geometry_shader: self.geometry_shader && !other.geometry_shader,
            geometry_streams: self.geometry_streams && !other.geometry_streams,
            global_priority_query: self.global_priority_query && !other.global_priority_query,
            graphics_pipeline_library: self.graphics_pipeline_library
                && !other.graphics_pipeline_library,
            host_query_reset: self.host_query_reset && !other.host_query_reset,
            image2_d_view_of3_d: self.image2_d_view_of3_d && !other.image2_d_view_of3_d,
            image_compression_control: self.image_compression_control
                && !other.image_compression_control,
            image_compression_control_swapchain: self.image_compression_control_swapchain
                && !other.image_compression_control_swapchain,
            image_cube_array: self.image_cube_array && !other.image_cube_array,
            image_footprint: self.image_footprint && !other.image_footprint,
            image_view2_d_on3_d_image: self.image_view2_d_on3_d_image
                && !other.image_view2_d_on3_d_image,
            image_view_format_reinterpretation: self.image_view_format_reinterpretation
                && !other.image_view_format_reinterpretation,
            image_view_format_swizzle: self.image_view_format_swizzle
                && !other.image_view_format_swizzle,
            imageless_framebuffer: self.imageless_framebuffer && !other.imageless_framebuffer,
            independent_blend: self.independent_blend && !other.independent_blend,
            index_type_uint8: self.index_type_uint8 && !other.index_type_uint8,
            indirect_copy: self.indirect_copy && !other.indirect_copy,
            inherited_conditional_rendering: self.inherited_conditional_rendering
                && !other.inherited_conditional_rendering,
            inherited_queries: self.inherited_queries && !other.inherited_queries,
            inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d
                && !other.inherited_viewport_scissor2_d,
            inline_uniform_block: self.inline_uniform_block && !other.inline_uniform_block,
            invocation_mask: self.invocation_mask && !other.invocation_mask,
            large_points: self.large_points && !other.large_points,
            legacy_dithering: self.legacy_dithering && !other.legacy_dithering,
            linear_color_attachment: self.linear_color_attachment && !other.linear_color_attachment,
            logic_op: self.logic_op && !other.logic_op,
            maintenance4: self.maintenance4 && !other.maintenance4,
            memory_decompression: self.memory_decompression && !other.memory_decompression,
            memory_priority: self.memory_priority && !other.memory_priority,
            mesh_shader: self.mesh_shader && !other.mesh_shader,
            mesh_shader_queries: self.mesh_shader_queries && !other.mesh_shader_queries,
            micromap: self.micromap && !other.micromap,
            micromap_capture_replay: self.micromap_capture_replay && !other.micromap_capture_replay,
            micromap_host_commands: self.micromap_host_commands && !other.micromap_host_commands,
            min_lod: self.min_lod && !other.min_lod,
            multi_draw: self.multi_draw && !other.multi_draw,
            multi_draw_indirect: self.multi_draw_indirect && !other.multi_draw_indirect,
            multi_viewport: self.multi_viewport && !other.multi_viewport,
            multisample_array_image: self.multisample_array_image && !other.multisample_array_image,
            multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled
                && !other.multisampled_render_to_single_sampled,
            multiview: self.multiview && !other.multiview,
            multiview_geometry_shader: self.multiview_geometry_shader
                && !other.multiview_geometry_shader,
            multiview_mesh_shader: self.multiview_mesh_shader && !other.multiview_mesh_shader,
            multiview_per_view_viewports: self.multiview_per_view_viewports
                && !other.multiview_per_view_viewports,
            multiview_tessellation_shader: self.multiview_tessellation_shader
                && !other.multiview_tessellation_shader,
            mutable_comparison_samplers: self.mutable_comparison_samplers
                && !other.mutable_comparison_samplers,
            mutable_descriptor_type: self.mutable_descriptor_type && !other.mutable_descriptor_type,
            no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates
                && !other.no_invocation_fragment_shading_rates,
            non_seamless_cube_map: self.non_seamless_cube_map && !other.non_seamless_cube_map,
            null_descriptor: self.null_descriptor && !other.null_descriptor,
            occlusion_query_precise: self.occlusion_query_precise && !other.occlusion_query_precise,
            optical_flow: self.optical_flow && !other.optical_flow,
            pageable_device_local_memory: self.pageable_device_local_memory
                && !other.pageable_device_local_memory,
            performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools
                && !other.performance_counter_multiple_query_pools,
            performance_counter_query_pools: self.performance_counter_query_pools
                && !other.performance_counter_query_pools,
            pipeline_creation_cache_control: self.pipeline_creation_cache_control
                && !other.pipeline_creation_cache_control,
            pipeline_executable_info: self.pipeline_executable_info
                && !other.pipeline_executable_info,
            pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate
                && !other.pipeline_fragment_shading_rate,
            pipeline_properties_identifier: self.pipeline_properties_identifier
                && !other.pipeline_properties_identifier,
            pipeline_protected_access: self.pipeline_protected_access
                && !other.pipeline_protected_access,
            pipeline_robustness: self.pipeline_robustness && !other.pipeline_robustness,
            pipeline_statistics_query: self.pipeline_statistics_query
                && !other.pipeline_statistics_query,
            point_polygons: self.point_polygons && !other.point_polygons,
            present_barrier: self.present_barrier && !other.present_barrier,
            present_id: self.present_id && !other.present_id,
            present_wait: self.present_wait && !other.present_wait,
            primitive_fragment_shading_rate: self.primitive_fragment_shading_rate
                && !other.primitive_fragment_shading_rate,
            primitive_fragment_shading_rate_mesh_shader: self
                .primitive_fragment_shading_rate_mesh_shader
                && !other.primitive_fragment_shading_rate_mesh_shader,
            primitive_topology_list_restart: self.primitive_topology_list_restart
                && !other.primitive_topology_list_restart,
            primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart
                && !other.primitive_topology_patch_list_restart,
            primitives_generated_query: self.primitives_generated_query
                && !other.primitives_generated_query,
            primitives_generated_query_with_non_zero_streams: self
                .primitives_generated_query_with_non_zero_streams
                && !other.primitives_generated_query_with_non_zero_streams,
            primitives_generated_query_with_rasterizer_discard: self
                .primitives_generated_query_with_rasterizer_discard
                && !other.primitives_generated_query_with_rasterizer_discard,
            private_data: self.private_data && !other.private_data,
            protected_memory: self.protected_memory && !other.protected_memory,
            provoking_vertex_last: self.provoking_vertex_last && !other.provoking_vertex_last,
            rasterization_order_color_attachment_access: self
                .rasterization_order_color_attachment_access
                && !other.rasterization_order_color_attachment_access,
            rasterization_order_depth_attachment_access: self
                .rasterization_order_depth_attachment_access
                && !other.rasterization_order_depth_attachment_access,
            rasterization_order_stencil_attachment_access: self
                .rasterization_order_stencil_attachment_access
                && !other.rasterization_order_stencil_attachment_access,
            ray_query: self.ray_query && !other.ray_query,
            ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder
                && !other.ray_tracing_invocation_reorder,
            ray_tracing_maintenance1: self.ray_tracing_maintenance1
                && !other.ray_tracing_maintenance1,
            ray_tracing_motion_blur: self.ray_tracing_motion_blur && !other.ray_tracing_motion_blur,
            ray_tracing_motion_blur_pipeline_trace_rays_indirect: self
                .ray_tracing_motion_blur_pipeline_trace_rays_indirect
                && !other.ray_tracing_motion_blur_pipeline_trace_rays_indirect,
            ray_tracing_pipeline: self.ray_tracing_pipeline && !other.ray_tracing_pipeline,
            ray_tracing_pipeline_shader_group_handle_capture_replay: self
                .ray_tracing_pipeline_shader_group_handle_capture_replay
                && !other.ray_tracing_pipeline_shader_group_handle_capture_replay,
            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self
                .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
                && !other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed,
            ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect
                && !other.ray_tracing_pipeline_trace_rays_indirect,
            ray_tracing_pipeline_trace_rays_indirect2: self
                .ray_tracing_pipeline_trace_rays_indirect2
                && !other.ray_tracing_pipeline_trace_rays_indirect2,
            ray_traversal_primitive_culling: self.ray_traversal_primitive_culling
                && !other.ray_traversal_primitive_culling,
            rectangular_lines: self.rectangular_lines && !other.rectangular_lines,
            report_address_binding: self.report_address_binding && !other.report_address_binding,
            representative_fragment_test: self.representative_fragment_test
                && !other.representative_fragment_test,
            robust_buffer_access: self.robust_buffer_access && !other.robust_buffer_access,
            robust_buffer_access2: self.robust_buffer_access2 && !other.robust_buffer_access2,
            robust_image_access: self.robust_image_access && !other.robust_image_access,
            robust_image_access2: self.robust_image_access2 && !other.robust_image_access2,
            runtime_descriptor_array: self.runtime_descriptor_array
                && !other.runtime_descriptor_array,
            sample_rate_shading: self.sample_rate_shading && !other.sample_rate_shading,
            sampler2_d_view_of3_d: self.sampler2_d_view_of3_d && !other.sampler2_d_view_of3_d,
            sampler_anisotropy: self.sampler_anisotropy && !other.sampler_anisotropy,
            sampler_filter_minmax: self.sampler_filter_minmax && !other.sampler_filter_minmax,
            sampler_mip_lod_bias: self.sampler_mip_lod_bias && !other.sampler_mip_lod_bias,
            sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge
                && !other.sampler_mirror_clamp_to_edge,
            sampler_ycbcr_conversion: self.sampler_ycbcr_conversion
                && !other.sampler_ycbcr_conversion,
            scalar_block_layout: self.scalar_block_layout && !other.scalar_block_layout,
            separate_depth_stencil_layouts: self.separate_depth_stencil_layouts
                && !other.separate_depth_stencil_layouts,
            separate_stencil_mask_ref: self.separate_stencil_mask_ref
                && !other.separate_stencil_mask_ref,
            shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add
                && !other.shader_buffer_float16_atomic_add,
            shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max
                && !other.shader_buffer_float16_atomic_min_max,
            shader_buffer_float16_atomics: self.shader_buffer_float16_atomics
                && !other.shader_buffer_float16_atomics,
            shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add
                && !other.shader_buffer_float32_atomic_add,
            shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max
                && !other.shader_buffer_float32_atomic_min_max,
            shader_buffer_float32_atomics: self.shader_buffer_float32_atomics
                && !other.shader_buffer_float32_atomics,
            shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add
                && !other.shader_buffer_float64_atomic_add,
            shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max
                && !other.shader_buffer_float64_atomic_min_max,
            shader_buffer_float64_atomics: self.shader_buffer_float64_atomics
                && !other.shader_buffer_float64_atomics,
            shader_buffer_int64_atomics: self.shader_buffer_int64_atomics
                && !other.shader_buffer_int64_atomics,
            shader_clip_distance: self.shader_clip_distance && !other.shader_clip_distance,
            shader_core_builtins: self.shader_core_builtins && !other.shader_core_builtins,
            shader_cull_distance: self.shader_cull_distance && !other.shader_cull_distance,
            shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation
                && !other.shader_demote_to_helper_invocation,
            shader_device_clock: self.shader_device_clock && !other.shader_device_clock,
            shader_draw_parameters: self.shader_draw_parameters && !other.shader_draw_parameters,
            shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests
                && !other.shader_early_and_late_fragment_tests,
            shader_float16: self.shader_float16 && !other.shader_float16,
            shader_float64: self.shader_float64 && !other.shader_float64,
            shader_image_float32_atomic_add: self.shader_image_float32_atomic_add
                && !other.shader_image_float32_atomic_add,
            shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max
                && !other.shader_image_float32_atomic_min_max,
            shader_image_float32_atomics: self.shader_image_float32_atomics
                && !other.shader_image_float32_atomics,
            shader_image_gather_extended: self.shader_image_gather_extended
                && !other.shader_image_gather_extended,
            shader_image_int64_atomics: self.shader_image_int64_atomics
                && !other.shader_image_int64_atomics,
            shader_input_attachment_array_dynamic_indexing: self
                .shader_input_attachment_array_dynamic_indexing
                && !other.shader_input_attachment_array_dynamic_indexing,
            shader_input_attachment_array_non_uniform_indexing: self
                .shader_input_attachment_array_non_uniform_indexing
                && !other.shader_input_attachment_array_non_uniform_indexing,
            shader_int16: self.shader_int16 && !other.shader_int16,
            shader_int64: self.shader_int64 && !other.shader_int64,
            shader_int8: self.shader_int8 && !other.shader_int8,
            shader_integer_dot_product: self.shader_integer_dot_product
                && !other.shader_integer_dot_product,
            shader_integer_functions2: self.shader_integer_functions2
                && !other.shader_integer_functions2,
            shader_module_identifier: self.shader_module_identifier
                && !other.shader_module_identifier,
            shader_output_layer: self.shader_output_layer && !other.shader_output_layer,
            shader_output_viewport_index: self.shader_output_viewport_index
                && !other.shader_output_viewport_index,
            shader_resource_min_lod: self.shader_resource_min_lod && !other.shader_resource_min_lod,
            shader_resource_residency: self.shader_resource_residency
                && !other.shader_resource_residency,
            shader_sample_rate_interpolation_functions: self
                .shader_sample_rate_interpolation_functions
                && !other.shader_sample_rate_interpolation_functions,
            shader_sampled_image_array_dynamic_indexing: self
                .shader_sampled_image_array_dynamic_indexing
                && !other.shader_sampled_image_array_dynamic_indexing,
            shader_sampled_image_array_non_uniform_indexing: self
                .shader_sampled_image_array_non_uniform_indexing
                && !other.shader_sampled_image_array_non_uniform_indexing,
            shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add
                && !other.shader_shared_float16_atomic_add,
            shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max
                && !other.shader_shared_float16_atomic_min_max,
            shader_shared_float16_atomics: self.shader_shared_float16_atomics
                && !other.shader_shared_float16_atomics,
            shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add
                && !other.shader_shared_float32_atomic_add,
            shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max
                && !other.shader_shared_float32_atomic_min_max,
            shader_shared_float32_atomics: self.shader_shared_float32_atomics
                && !other.shader_shared_float32_atomics,
            shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add
                && !other.shader_shared_float64_atomic_add,
            shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max
                && !other.shader_shared_float64_atomic_min_max,
            shader_shared_float64_atomics: self.shader_shared_float64_atomics
                && !other.shader_shared_float64_atomics,
            shader_shared_int64_atomics: self.shader_shared_int64_atomics
                && !other.shader_shared_int64_atomics,
            shader_sm_builtins: self.shader_sm_builtins && !other.shader_sm_builtins,
            shader_storage_buffer_array_dynamic_indexing: self
                .shader_storage_buffer_array_dynamic_indexing
                && !other.shader_storage_buffer_array_dynamic_indexing,
            shader_storage_buffer_array_non_uniform_indexing: self
                .shader_storage_buffer_array_non_uniform_indexing
                && !other.shader_storage_buffer_array_non_uniform_indexing,
            shader_storage_image_array_dynamic_indexing: self
                .shader_storage_image_array_dynamic_indexing
                && !other.shader_storage_image_array_dynamic_indexing,
            shader_storage_image_array_non_uniform_indexing: self
                .shader_storage_image_array_non_uniform_indexing
                && !other.shader_storage_image_array_non_uniform_indexing,
            shader_storage_image_extended_formats: self.shader_storage_image_extended_formats
                && !other.shader_storage_image_extended_formats,
            shader_storage_image_multisample: self.shader_storage_image_multisample
                && !other.shader_storage_image_multisample,
            shader_storage_image_read_without_format: self.shader_storage_image_read_without_format
                && !other.shader_storage_image_read_without_format,
            shader_storage_image_write_without_format: self
                .shader_storage_image_write_without_format
                && !other.shader_storage_image_write_without_format,
            shader_storage_texel_buffer_array_dynamic_indexing: self
                .shader_storage_texel_buffer_array_dynamic_indexing
                && !other.shader_storage_texel_buffer_array_dynamic_indexing,
            shader_storage_texel_buffer_array_non_uniform_indexing: self
                .shader_storage_texel_buffer_array_non_uniform_indexing
                && !other.shader_storage_texel_buffer_array_non_uniform_indexing,
            shader_subgroup_clock: self.shader_subgroup_clock && !other.shader_subgroup_clock,
            shader_subgroup_extended_types: self.shader_subgroup_extended_types
                && !other.shader_subgroup_extended_types,
            shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow
                && !other.shader_subgroup_uniform_control_flow,
            shader_terminate_invocation: self.shader_terminate_invocation
                && !other.shader_terminate_invocation,
            shader_tessellation_and_geometry_point_size: self
                .shader_tessellation_and_geometry_point_size
                && !other.shader_tessellation_and_geometry_point_size,
            shader_uniform_buffer_array_dynamic_indexing: self
                .shader_uniform_buffer_array_dynamic_indexing
                && !other.shader_uniform_buffer_array_dynamic_indexing,
            shader_uniform_buffer_array_non_uniform_indexing: self
                .shader_uniform_buffer_array_non_uniform_indexing
                && !other.shader_uniform_buffer_array_non_uniform_indexing,
            shader_uniform_texel_buffer_array_dynamic_indexing: self
                .shader_uniform_texel_buffer_array_dynamic_indexing
                && !other.shader_uniform_texel_buffer_array_dynamic_indexing,
            shader_uniform_texel_buffer_array_non_uniform_indexing: self
                .shader_uniform_texel_buffer_array_non_uniform_indexing
                && !other.shader_uniform_texel_buffer_array_non_uniform_indexing,
            shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory
                && !other.shader_zero_initialize_workgroup_memory,
            shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order
                && !other.shading_rate_coarse_sample_order,
            shading_rate_image: self.shading_rate_image && !other.shading_rate_image,
            smooth_lines: self.smooth_lines && !other.smooth_lines,
            sparse_binding: self.sparse_binding && !other.sparse_binding,
            sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add
                && !other.sparse_image_float32_atomic_add,
            sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max
                && !other.sparse_image_float32_atomic_min_max,
            sparse_image_float32_atomics: self.sparse_image_float32_atomics
                && !other.sparse_image_float32_atomics,
            sparse_image_int64_atomics: self.sparse_image_int64_atomics
                && !other.sparse_image_int64_atomics,
            sparse_residency16_samples: self.sparse_residency16_samples
                && !other.sparse_residency16_samples,
            sparse_residency2_samples: self.sparse_residency2_samples
                && !other.sparse_residency2_samples,
            sparse_residency4_samples: self.sparse_residency4_samples
                && !other.sparse_residency4_samples,
            sparse_residency8_samples: self.sparse_residency8_samples
                && !other.sparse_residency8_samples,
            sparse_residency_aliased: self.sparse_residency_aliased
                && !other.sparse_residency_aliased,
            sparse_residency_buffer: self.sparse_residency_buffer && !other.sparse_residency_buffer,
            sparse_residency_image2_d: self.sparse_residency_image2_d
                && !other.sparse_residency_image2_d,
            sparse_residency_image3_d: self.sparse_residency_image3_d
                && !other.sparse_residency_image3_d,
            stippled_bresenham_lines: self.stippled_bresenham_lines
                && !other.stippled_bresenham_lines,
            stippled_rectangular_lines: self.stippled_rectangular_lines
                && !other.stippled_rectangular_lines,
            stippled_smooth_lines: self.stippled_smooth_lines && !other.stippled_smooth_lines,
            storage_buffer16_bit_access: self.storage_buffer16_bit_access
                && !other.storage_buffer16_bit_access,
            storage_buffer8_bit_access: self.storage_buffer8_bit_access
                && !other.storage_buffer8_bit_access,
            storage_input_output16: self.storage_input_output16 && !other.storage_input_output16,
            storage_push_constant16: self.storage_push_constant16 && !other.storage_push_constant16,
            storage_push_constant8: self.storage_push_constant8 && !other.storage_push_constant8,
            subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id
                && !other.subgroup_broadcast_dynamic_id,
            subgroup_size_control: self.subgroup_size_control && !other.subgroup_size_control,
            subpass_merge_feedback: self.subpass_merge_feedback && !other.subpass_merge_feedback,
            subpass_shading: self.subpass_shading && !other.subpass_shading,
            supersample_fragment_shading_rates: self.supersample_fragment_shading_rates
                && !other.supersample_fragment_shading_rates,
            swapchain_maintenance1: self.swapchain_maintenance1 && !other.swapchain_maintenance1,
            synchronization2: self.synchronization2 && !other.synchronization2,
            task_shader: self.task_shader && !other.task_shader,
            tessellation_isolines: self.tessellation_isolines && !other.tessellation_isolines,
            tessellation_point_mode: self.tessellation_point_mode && !other.tessellation_point_mode,
            tessellation_shader: self.tessellation_shader && !other.tessellation_shader,
            texel_buffer_alignment: self.texel_buffer_alignment && !other.texel_buffer_alignment,
            texture_block_match: self.texture_block_match && !other.texture_block_match,
            texture_box_filter: self.texture_box_filter && !other.texture_box_filter,
            texture_compression_astc_hdr: self.texture_compression_astc_hdr
                && !other.texture_compression_astc_hdr,
            texture_compression_astc_ldr: self.texture_compression_astc_ldr
                && !other.texture_compression_astc_ldr,
            texture_compression_bc: self.texture_compression_bc && !other.texture_compression_bc,
            texture_compression_etc2: self.texture_compression_etc2
                && !other.texture_compression_etc2,
            texture_sample_weighted: self.texture_sample_weighted && !other.texture_sample_weighted,
            tile_properties: self.tile_properties && !other.tile_properties,
            timeline_semaphore: self.timeline_semaphore && !other.timeline_semaphore,
            transform_feedback: self.transform_feedback && !other.transform_feedback,
            transform_feedback_preserves_provoking_vertex: self
                .transform_feedback_preserves_provoking_vertex
                && !other.transform_feedback_preserves_provoking_vertex,
            triangle_fans: self.triangle_fans && !other.triangle_fans,
            uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access
                && !other.uniform_and_storage_buffer16_bit_access,
            uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access
                && !other.uniform_and_storage_buffer8_bit_access,
            uniform_buffer_standard_layout: self.uniform_buffer_standard_layout
                && !other.uniform_buffer_standard_layout,
            variable_multisample_rate: self.variable_multisample_rate
                && !other.variable_multisample_rate,
            variable_pointers: self.variable_pointers && !other.variable_pointers,
            variable_pointers_storage_buffer: self.variable_pointers_storage_buffer
                && !other.variable_pointers_storage_buffer,
            vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride
                && !other.vertex_attribute_access_beyond_stride,
            vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor
                && !other.vertex_attribute_instance_rate_divisor,
            vertex_attribute_instance_rate_zero_divisor: self
                .vertex_attribute_instance_rate_zero_divisor
                && !other.vertex_attribute_instance_rate_zero_divisor,
            vertex_input_dynamic_state: self.vertex_input_dynamic_state
                && !other.vertex_input_dynamic_state,
            vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics
                && !other.vertex_pipeline_stores_and_atomics,
            vulkan_memory_model: self.vulkan_memory_model && !other.vulkan_memory_model,
            vulkan_memory_model_availability_visibility_chains: self
                .vulkan_memory_model_availability_visibility_chains
                && !other.vulkan_memory_model_availability_visibility_chains,
            vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope
                && !other.vulkan_memory_model_device_scope,
            wide_lines: self.wide_lines && !other.wide_lines,
            workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout
                && !other.workgroup_memory_explicit_layout,
            workgroup_memory_explicit_layout16_bit_access: self
                .workgroup_memory_explicit_layout16_bit_access
                && !other.workgroup_memory_explicit_layout16_bit_access,
            workgroup_memory_explicit_layout8_bit_access: self
                .workgroup_memory_explicit_layout8_bit_access
                && !other.workgroup_memory_explicit_layout8_bit_access,
            workgroup_memory_explicit_layout_scalar_block_layout: self
                .workgroup_memory_explicit_layout_scalar_block_layout
                && !other.workgroup_memory_explicit_layout_scalar_block_layout,
            ycbcr2plane444_formats: self.ycbcr2plane444_formats && !other.ycbcr2plane444_formats,
            ycbcr_image_arrays: self.ycbcr_image_arrays && !other.ycbcr_image_arrays,
            _ne: crate::NonExhaustive(()),
        }
    }
    #[doc = r" Returns the members set in `self` or `other`, but not both."]
    #[inline]
    pub const fn symmetric_difference(&self, other: &Self) -> Self {
        Self {
            acceleration_structure: self.acceleration_structure ^ other.acceleration_structure,
            acceleration_structure_capture_replay: self.acceleration_structure_capture_replay
                ^ other.acceleration_structure_capture_replay,
            acceleration_structure_host_commands: self.acceleration_structure_host_commands
                ^ other.acceleration_structure_host_commands,
            acceleration_structure_indirect_build: self.acceleration_structure_indirect_build
                ^ other.acceleration_structure_indirect_build,
            advanced_blend_coherent_operations: self.advanced_blend_coherent_operations
                ^ other.advanced_blend_coherent_operations,
            alpha_to_one: self.alpha_to_one ^ other.alpha_to_one,
            amigo_profiling: self.amigo_profiling ^ other.amigo_profiling,
            attachment_feedback_loop_layout: self.attachment_feedback_loop_layout
                ^ other.attachment_feedback_loop_layout,
            attachment_fragment_shading_rate: self.attachment_fragment_shading_rate
                ^ other.attachment_fragment_shading_rate,
            border_color_swizzle: self.border_color_swizzle ^ other.border_color_swizzle,
            border_color_swizzle_from_image: self.border_color_swizzle_from_image
                ^ other.border_color_swizzle_from_image,
            bresenham_lines: self.bresenham_lines ^ other.bresenham_lines,
            buffer_device_address: self.buffer_device_address ^ other.buffer_device_address,
            buffer_device_address_capture_replay: self.buffer_device_address_capture_replay
                ^ other.buffer_device_address_capture_replay,
            buffer_device_address_multi_device: self.buffer_device_address_multi_device
                ^ other.buffer_device_address_multi_device,
            color_write_enable: self.color_write_enable ^ other.color_write_enable,
            compute_derivative_group_linear: self.compute_derivative_group_linear
                ^ other.compute_derivative_group_linear,
            compute_derivative_group_quads: self.compute_derivative_group_quads
                ^ other.compute_derivative_group_quads,
            compute_full_subgroups: self.compute_full_subgroups ^ other.compute_full_subgroups,
            conditional_rendering: self.conditional_rendering ^ other.conditional_rendering,
            constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors
                ^ other.constant_alpha_color_blend_factors,
            cooperative_matrix: self.cooperative_matrix ^ other.cooperative_matrix,
            cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access
                ^ other.cooperative_matrix_robust_buffer_access,
            corner_sampled_image: self.corner_sampled_image ^ other.corner_sampled_image,
            coverage_reduction_mode: self.coverage_reduction_mode ^ other.coverage_reduction_mode,
            custom_border_color_without_format: self.custom_border_color_without_format
                ^ other.custom_border_color_without_format,
            custom_border_colors: self.custom_border_colors ^ other.custom_border_colors,
            decode_mode_shared_exponent: self.decode_mode_shared_exponent
                ^ other.decode_mode_shared_exponent,
            dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing
                ^ other.dedicated_allocation_image_aliasing,
            depth_bias_clamp: self.depth_bias_clamp ^ other.depth_bias_clamp,
            depth_bounds: self.depth_bounds ^ other.depth_bounds,
            depth_clamp: self.depth_clamp ^ other.depth_clamp,
            depth_clamp_zero_one: self.depth_clamp_zero_one ^ other.depth_clamp_zero_one,
            depth_clip_control: self.depth_clip_control ^ other.depth_clip_control,
            depth_clip_enable: self.depth_clip_enable ^ other.depth_clip_enable,
            descriptor_binding_acceleration_structure_update_after_bind: self
                .descriptor_binding_acceleration_structure_update_after_bind
                ^ other.descriptor_binding_acceleration_structure_update_after_bind,
            descriptor_binding_inline_uniform_block_update_after_bind: self
                .descriptor_binding_inline_uniform_block_update_after_bind
                ^ other.descriptor_binding_inline_uniform_block_update_after_bind,
            descriptor_binding_partially_bound: self.descriptor_binding_partially_bound
                ^ other.descriptor_binding_partially_bound,
            descriptor_binding_sampled_image_update_after_bind: self
                .descriptor_binding_sampled_image_update_after_bind
                ^ other.descriptor_binding_sampled_image_update_after_bind,
            descriptor_binding_storage_buffer_update_after_bind: self
                .descriptor_binding_storage_buffer_update_after_bind
                ^ other.descriptor_binding_storage_buffer_update_after_bind,
            descriptor_binding_storage_image_update_after_bind: self
                .descriptor_binding_storage_image_update_after_bind
                ^ other.descriptor_binding_storage_image_update_after_bind,
            descriptor_binding_storage_texel_buffer_update_after_bind: self
                .descriptor_binding_storage_texel_buffer_update_after_bind
                ^ other.descriptor_binding_storage_texel_buffer_update_after_bind,
            descriptor_binding_uniform_buffer_update_after_bind: self
                .descriptor_binding_uniform_buffer_update_after_bind
                ^ other.descriptor_binding_uniform_buffer_update_after_bind,
            descriptor_binding_uniform_texel_buffer_update_after_bind: self
                .descriptor_binding_uniform_texel_buffer_update_after_bind
                ^ other.descriptor_binding_uniform_texel_buffer_update_after_bind,
            descriptor_binding_update_unused_while_pending: self
                .descriptor_binding_update_unused_while_pending
                ^ other.descriptor_binding_update_unused_while_pending,
            descriptor_binding_variable_descriptor_count: self
                .descriptor_binding_variable_descriptor_count
                ^ other.descriptor_binding_variable_descriptor_count,
            descriptor_buffer: self.descriptor_buffer ^ other.descriptor_buffer,
            descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay
                ^ other.descriptor_buffer_capture_replay,
            descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored
                ^ other.descriptor_buffer_image_layout_ignored,
            descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors
                ^ other.descriptor_buffer_push_descriptors,
            descriptor_indexing: self.descriptor_indexing ^ other.descriptor_indexing,
            descriptor_set_host_mapping: self.descriptor_set_host_mapping
                ^ other.descriptor_set_host_mapping,
            device_coherent_memory: self.device_coherent_memory ^ other.device_coherent_memory,
            device_fault: self.device_fault ^ other.device_fault,
            device_fault_vendor_binary: self.device_fault_vendor_binary
                ^ other.device_fault_vendor_binary,
            device_generated_commands: self.device_generated_commands
                ^ other.device_generated_commands,
            device_memory_report: self.device_memory_report ^ other.device_memory_report,
            diagnostics_config: self.diagnostics_config ^ other.diagnostics_config,
            draw_indirect_count: self.draw_indirect_count ^ other.draw_indirect_count,
            draw_indirect_first_instance: self.draw_indirect_first_instance
                ^ other.draw_indirect_first_instance,
            dual_src_blend: self.dual_src_blend ^ other.dual_src_blend,
            dynamic_rendering: self.dynamic_rendering ^ other.dynamic_rendering,
            events: self.events ^ other.events,
            exclusive_scissor: self.exclusive_scissor ^ other.exclusive_scissor,
            extended_dynamic_state: self.extended_dynamic_state ^ other.extended_dynamic_state,
            extended_dynamic_state2: self.extended_dynamic_state2 ^ other.extended_dynamic_state2,
            extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op
                ^ other.extended_dynamic_state2_logic_op,
            extended_dynamic_state2_patch_control_points: self
                .extended_dynamic_state2_patch_control_points
                ^ other.extended_dynamic_state2_patch_control_points,
            extended_dynamic_state3_alpha_to_coverage_enable: self
                .extended_dynamic_state3_alpha_to_coverage_enable
                ^ other.extended_dynamic_state3_alpha_to_coverage_enable,
            extended_dynamic_state3_alpha_to_one_enable: self
                .extended_dynamic_state3_alpha_to_one_enable
                ^ other.extended_dynamic_state3_alpha_to_one_enable,
            extended_dynamic_state3_color_blend_advanced: self
                .extended_dynamic_state3_color_blend_advanced
                ^ other.extended_dynamic_state3_color_blend_advanced,
            extended_dynamic_state3_color_blend_enable: self
                .extended_dynamic_state3_color_blend_enable
                ^ other.extended_dynamic_state3_color_blend_enable,
            extended_dynamic_state3_color_blend_equation: self
                .extended_dynamic_state3_color_blend_equation
                ^ other.extended_dynamic_state3_color_blend_equation,
            extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask
                ^ other.extended_dynamic_state3_color_write_mask,
            extended_dynamic_state3_conservative_rasterization_mode: self
                .extended_dynamic_state3_conservative_rasterization_mode
                ^ other.extended_dynamic_state3_conservative_rasterization_mode,
            extended_dynamic_state3_coverage_modulation_mode: self
                .extended_dynamic_state3_coverage_modulation_mode
                ^ other.extended_dynamic_state3_coverage_modulation_mode,
            extended_dynamic_state3_coverage_modulation_table: self
                .extended_dynamic_state3_coverage_modulation_table
                ^ other.extended_dynamic_state3_coverage_modulation_table,
            extended_dynamic_state3_coverage_modulation_table_enable: self
                .extended_dynamic_state3_coverage_modulation_table_enable
                ^ other.extended_dynamic_state3_coverage_modulation_table_enable,
            extended_dynamic_state3_coverage_reduction_mode: self
                .extended_dynamic_state3_coverage_reduction_mode
                ^ other.extended_dynamic_state3_coverage_reduction_mode,
            extended_dynamic_state3_coverage_to_color_enable: self
                .extended_dynamic_state3_coverage_to_color_enable
                ^ other.extended_dynamic_state3_coverage_to_color_enable,
            extended_dynamic_state3_coverage_to_color_location: self
                .extended_dynamic_state3_coverage_to_color_location
                ^ other.extended_dynamic_state3_coverage_to_color_location,
            extended_dynamic_state3_depth_clamp_enable: self
                .extended_dynamic_state3_depth_clamp_enable
                ^ other.extended_dynamic_state3_depth_clamp_enable,
            extended_dynamic_state3_depth_clip_enable: self
                .extended_dynamic_state3_depth_clip_enable
                ^ other.extended_dynamic_state3_depth_clip_enable,
            extended_dynamic_state3_depth_clip_negative_one_to_one: self
                .extended_dynamic_state3_depth_clip_negative_one_to_one
                ^ other.extended_dynamic_state3_depth_clip_negative_one_to_one,
            extended_dynamic_state3_extra_primitive_overestimation_size: self
                .extended_dynamic_state3_extra_primitive_overestimation_size
                ^ other.extended_dynamic_state3_extra_primitive_overestimation_size,
            extended_dynamic_state3_line_rasterization_mode: self
                .extended_dynamic_state3_line_rasterization_mode
                ^ other.extended_dynamic_state3_line_rasterization_mode,
            extended_dynamic_state3_line_stipple_enable: self
                .extended_dynamic_state3_line_stipple_enable
                ^ other.extended_dynamic_state3_line_stipple_enable,
            extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable
                ^ other.extended_dynamic_state3_logic_op_enable,
            extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode
                ^ other.extended_dynamic_state3_polygon_mode,
            extended_dynamic_state3_provoking_vertex_mode: self
                .extended_dynamic_state3_provoking_vertex_mode
                ^ other.extended_dynamic_state3_provoking_vertex_mode,
            extended_dynamic_state3_rasterization_samples: self
                .extended_dynamic_state3_rasterization_samples
                ^ other.extended_dynamic_state3_rasterization_samples,
            extended_dynamic_state3_rasterization_stream: self
                .extended_dynamic_state3_rasterization_stream
                ^ other.extended_dynamic_state3_rasterization_stream,
            extended_dynamic_state3_representative_fragment_test_enable: self
                .extended_dynamic_state3_representative_fragment_test_enable
                ^ other.extended_dynamic_state3_representative_fragment_test_enable,
            extended_dynamic_state3_sample_locations_enable: self
                .extended_dynamic_state3_sample_locations_enable
                ^ other.extended_dynamic_state3_sample_locations_enable,
            extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask
                ^ other.extended_dynamic_state3_sample_mask,
            extended_dynamic_state3_shading_rate_image_enable: self
                .extended_dynamic_state3_shading_rate_image_enable
                ^ other.extended_dynamic_state3_shading_rate_image_enable,
            extended_dynamic_state3_tessellation_domain_origin: self
                .extended_dynamic_state3_tessellation_domain_origin
                ^ other.extended_dynamic_state3_tessellation_domain_origin,
            extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle
                ^ other.extended_dynamic_state3_viewport_swizzle,
            extended_dynamic_state3_viewport_w_scaling_enable: self
                .extended_dynamic_state3_viewport_w_scaling_enable
                ^ other.extended_dynamic_state3_viewport_w_scaling_enable,
            external_memory_rdma: self.external_memory_rdma ^ other.external_memory_rdma,
            fill_mode_non_solid: self.fill_mode_non_solid ^ other.fill_mode_non_solid,
            format_a4b4g4r4: self.format_a4b4g4r4 ^ other.format_a4b4g4r4,
            format_a4r4g4b4: self.format_a4r4g4b4 ^ other.format_a4r4g4b4,
            format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler
                ^ other.format_rgba10x6_without_y_cb_cr_sampler,
            fragment_density_map: self.fragment_density_map ^ other.fragment_density_map,
            fragment_density_map_deferred: self.fragment_density_map_deferred
                ^ other.fragment_density_map_deferred,
            fragment_density_map_dynamic: self.fragment_density_map_dynamic
                ^ other.fragment_density_map_dynamic,
            fragment_density_map_non_subsampled_images: self
                .fragment_density_map_non_subsampled_images
                ^ other.fragment_density_map_non_subsampled_images,
            fragment_density_map_offset: self.fragment_density_map_offset
                ^ other.fragment_density_map_offset,
            fragment_shader_barycentric: self.fragment_shader_barycentric
                ^ other.fragment_shader_barycentric,
            fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock
                ^ other.fragment_shader_pixel_interlock,
            fragment_shader_sample_interlock: self.fragment_shader_sample_interlock
                ^ other.fragment_shader_sample_interlock,
            fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock
                ^ other.fragment_shader_shading_rate_interlock,
            fragment_shading_rate_enums: self.fragment_shading_rate_enums
                ^ other.fragment_shading_rate_enums,
            fragment_stores_and_atomics: self.fragment_stores_and_atomics
                ^ other.fragment_stores_and_atomics,
            full_draw_index_uint32: self.full_draw_index_uint32 ^ other.full_draw_index_uint32,
            geometry_shader: self.geometry_shader ^ other.geometry_shader,
            geometry_streams: self.geometry_streams ^ other.geometry_streams,
            global_priority_query: self.global_priority_query ^ other.global_priority_query,
            graphics_pipeline_library: self.graphics_pipeline_library
                ^ other.graphics_pipeline_library,
            host_query_reset: self.host_query_reset ^ other.host_query_reset,
            image2_d_view_of3_d: self.image2_d_view_of3_d ^ other.image2_d_view_of3_d,
            image_compression_control: self.image_compression_control
                ^ other.image_compression_control,
            image_compression_control_swapchain: self.image_compression_control_swapchain
                ^ other.image_compression_control_swapchain,
            image_cube_array: self.image_cube_array ^ other.image_cube_array,
            image_footprint: self.image_footprint ^ other.image_footprint,
            image_view2_d_on3_d_image: self.image_view2_d_on3_d_image
                ^ other.image_view2_d_on3_d_image,
            image_view_format_reinterpretation: self.image_view_format_reinterpretation
                ^ other.image_view_format_reinterpretation,
            image_view_format_swizzle: self.image_view_format_swizzle
                ^ other.image_view_format_swizzle,
            imageless_framebuffer: self.imageless_framebuffer ^ other.imageless_framebuffer,
            independent_blend: self.independent_blend ^ other.independent_blend,
            index_type_uint8: self.index_type_uint8 ^ other.index_type_uint8,
            indirect_copy: self.indirect_copy ^ other.indirect_copy,
            inherited_conditional_rendering: self.inherited_conditional_rendering
                ^ other.inherited_conditional_rendering,
            inherited_queries: self.inherited_queries ^ other.inherited_queries,
            inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d
                ^ other.inherited_viewport_scissor2_d,
            inline_uniform_block: self.inline_uniform_block ^ other.inline_uniform_block,
            invocation_mask: self.invocation_mask ^ other.invocation_mask,
            large_points: self.large_points ^ other.large_points,
            legacy_dithering: self.legacy_dithering ^ other.legacy_dithering,
            linear_color_attachment: self.linear_color_attachment ^ other.linear_color_attachment,
            logic_op: self.logic_op ^ other.logic_op,
            maintenance4: self.maintenance4 ^ other.maintenance4,
            memory_decompression: self.memory_decompression ^ other.memory_decompression,
            memory_priority: self.memory_priority ^ other.memory_priority,
            mesh_shader: self.mesh_shader ^ other.mesh_shader,
            mesh_shader_queries: self.mesh_shader_queries ^ other.mesh_shader_queries,
            micromap: self.micromap ^ other.micromap,
            micromap_capture_replay: self.micromap_capture_replay ^ other.micromap_capture_replay,
            micromap_host_commands: self.micromap_host_commands ^ other.micromap_host_commands,
            min_lod: self.min_lod ^ other.min_lod,
            multi_draw: self.multi_draw ^ other.multi_draw,
            multi_draw_indirect: self.multi_draw_indirect ^ other.multi_draw_indirect,
            multi_viewport: self.multi_viewport ^ other.multi_viewport,
            multisample_array_image: self.multisample_array_image ^ other.multisample_array_image,
            multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled
                ^ other.multisampled_render_to_single_sampled,
            multiview: self.multiview ^ other.multiview,
            multiview_geometry_shader: self.multiview_geometry_shader
                ^ other.multiview_geometry_shader,
            multiview_mesh_shader: self.multiview_mesh_shader ^ other.multiview_mesh_shader,
            multiview_per_view_viewports: self.multiview_per_view_viewports
                ^ other.multiview_per_view_viewports,
            multiview_tessellation_shader: self.multiview_tessellation_shader
                ^ other.multiview_tessellation_shader,
            mutable_comparison_samplers: self.mutable_comparison_samplers
                ^ other.mutable_comparison_samplers,
            mutable_descriptor_type: self.mutable_descriptor_type ^ other.mutable_descriptor_type,
            no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates
                ^ other.no_invocation_fragment_shading_rates,
            non_seamless_cube_map: self.non_seamless_cube_map ^ other.non_seamless_cube_map,
            null_descriptor: self.null_descriptor ^ other.null_descriptor,
            occlusion_query_precise: self.occlusion_query_precise ^ other.occlusion_query_precise,
            optical_flow: self.optical_flow ^ other.optical_flow,
            pageable_device_local_memory: self.pageable_device_local_memory
                ^ other.pageable_device_local_memory,
            performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools
                ^ other.performance_counter_multiple_query_pools,
            performance_counter_query_pools: self.performance_counter_query_pools
                ^ other.performance_counter_query_pools,
            pipeline_creation_cache_control: self.pipeline_creation_cache_control
                ^ other.pipeline_creation_cache_control,
            pipeline_executable_info: self.pipeline_executable_info
                ^ other.pipeline_executable_info,
            pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate
                ^ other.pipeline_fragment_shading_rate,
            pipeline_properties_identifier: self.pipeline_properties_identifier
                ^ other.pipeline_properties_identifier,
            pipeline_protected_access: self.pipeline_protected_access
                ^ other.pipeline_protected_access,
            pipeline_robustness: self.pipeline_robustness ^ other.pipeline_robustness,
            pipeline_statistics_query: self.pipeline_statistics_query
                ^ other.pipeline_statistics_query,
            point_polygons: self.point_polygons ^ other.point_polygons,
            present_barrier: self.present_barrier ^ other.present_barrier,
            present_id: self.present_id ^ other.present_id,
            present_wait: self.present_wait ^ other.present_wait,
            primitive_fragment_shading_rate: self.primitive_fragment_shading_rate
                ^ other.primitive_fragment_shading_rate,
            primitive_fragment_shading_rate_mesh_shader: self
                .primitive_fragment_shading_rate_mesh_shader
                ^ other.primitive_fragment_shading_rate_mesh_shader,
            primitive_topology_list_restart: self.primitive_topology_list_restart
                ^ other.primitive_topology_list_restart,
            primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart
                ^ other.primitive_topology_patch_list_restart,
            primitives_generated_query: self.primitives_generated_query
                ^ other.primitives_generated_query,
            primitives_generated_query_with_non_zero_streams: self
                .primitives_generated_query_with_non_zero_streams
                ^ other.primitives_generated_query_with_non_zero_streams,
            primitives_generated_query_with_rasterizer_discard: self
                .primitives_generated_query_with_rasterizer_discard
                ^ other.primitives_generated_query_with_rasterizer_discard,
            private_data: self.private_data ^ other.private_data,
            protected_memory: self.protected_memory ^ other.protected_memory,
            provoking_vertex_last: self.provoking_vertex_last ^ other.provoking_vertex_last,
            rasterization_order_color_attachment_access: self
                .rasterization_order_color_attachment_access
                ^ other.rasterization_order_color_attachment_access,
            rasterization_order_depth_attachment_access: self
                .rasterization_order_depth_attachment_access
                ^ other.rasterization_order_depth_attachment_access,
            rasterization_order_stencil_attachment_access: self
                .rasterization_order_stencil_attachment_access
                ^ other.rasterization_order_stencil_attachment_access,
            ray_query: self.ray_query ^ other.ray_query,
            ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder
                ^ other.ray_tracing_invocation_reorder,
            ray_tracing_maintenance1: self.ray_tracing_maintenance1
                ^ other.ray_tracing_maintenance1,
            ray_tracing_motion_blur: self.ray_tracing_motion_blur ^ other.ray_tracing_motion_blur,
            ray_tracing_motion_blur_pipeline_trace_rays_indirect: self
                .ray_tracing_motion_blur_pipeline_trace_rays_indirect
                ^ other.ray_tracing_motion_blur_pipeline_trace_rays_indirect,
            ray_tracing_pipeline: self.ray_tracing_pipeline ^ other.ray_tracing_pipeline,
            ray_tracing_pipeline_shader_group_handle_capture_replay: self
                .ray_tracing_pipeline_shader_group_handle_capture_replay
                ^ other.ray_tracing_pipeline_shader_group_handle_capture_replay,
            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self
                .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
                ^ other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed,
            ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect
                ^ other.ray_tracing_pipeline_trace_rays_indirect,
            ray_tracing_pipeline_trace_rays_indirect2: self
                .ray_tracing_pipeline_trace_rays_indirect2
                ^ other.ray_tracing_pipeline_trace_rays_indirect2,
            ray_traversal_primitive_culling: self.ray_traversal_primitive_culling
                ^ other.ray_traversal_primitive_culling,
            rectangular_lines: self.rectangular_lines ^ other.rectangular_lines,
            report_address_binding: self.report_address_binding ^ other.report_address_binding,
            representative_fragment_test: self.representative_fragment_test
                ^ other.representative_fragment_test,
            robust_buffer_access: self.robust_buffer_access ^ other.robust_buffer_access,
            robust_buffer_access2: self.robust_buffer_access2 ^ other.robust_buffer_access2,
            robust_image_access: self.robust_image_access ^ other.robust_image_access,
            robust_image_access2: self.robust_image_access2 ^ other.robust_image_access2,
            runtime_descriptor_array: self.runtime_descriptor_array
                ^ other.runtime_descriptor_array,
            sample_rate_shading: self.sample_rate_shading ^ other.sample_rate_shading,
            sampler2_d_view_of3_d: self.sampler2_d_view_of3_d ^ other.sampler2_d_view_of3_d,
            sampler_anisotropy: self.sampler_anisotropy ^ other.sampler_anisotropy,
            sampler_filter_minmax: self.sampler_filter_minmax ^ other.sampler_filter_minmax,
            sampler_mip_lod_bias: self.sampler_mip_lod_bias ^ other.sampler_mip_lod_bias,
            sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge
                ^ other.sampler_mirror_clamp_to_edge,
            sampler_ycbcr_conversion: self.sampler_ycbcr_conversion
                ^ other.sampler_ycbcr_conversion,
            scalar_block_layout: self.scalar_block_layout ^ other.scalar_block_layout,
            separate_depth_stencil_layouts: self.separate_depth_stencil_layouts
                ^ other.separate_depth_stencil_layouts,
            separate_stencil_mask_ref: self.separate_stencil_mask_ref
                ^ other.separate_stencil_mask_ref,
            shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add
                ^ other.shader_buffer_float16_atomic_add,
            shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max
                ^ other.shader_buffer_float16_atomic_min_max,
            shader_buffer_float16_atomics: self.shader_buffer_float16_atomics
                ^ other.shader_buffer_float16_atomics,
            shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add
                ^ other.shader_buffer_float32_atomic_add,
            shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max
                ^ other.shader_buffer_float32_atomic_min_max,
            shader_buffer_float32_atomics: self.shader_buffer_float32_atomics
                ^ other.shader_buffer_float32_atomics,
            shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add
                ^ other.shader_buffer_float64_atomic_add,
            shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max
                ^ other.shader_buffer_float64_atomic_min_max,
            shader_buffer_float64_atomics: self.shader_buffer_float64_atomics
                ^ other.shader_buffer_float64_atomics,
            shader_buffer_int64_atomics: self.shader_buffer_int64_atomics
                ^ other.shader_buffer_int64_atomics,
            shader_clip_distance: self.shader_clip_distance ^ other.shader_clip_distance,
            shader_core_builtins: self.shader_core_builtins ^ other.shader_core_builtins,
            shader_cull_distance: self.shader_cull_distance ^ other.shader_cull_distance,
            shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation
                ^ other.shader_demote_to_helper_invocation,
            shader_device_clock: self.shader_device_clock ^ other.shader_device_clock,
            shader_draw_parameters: self.shader_draw_parameters ^ other.shader_draw_parameters,
            shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests
                ^ other.shader_early_and_late_fragment_tests,
            shader_float16: self.shader_float16 ^ other.shader_float16,
            shader_float64: self.shader_float64 ^ other.shader_float64,
            shader_image_float32_atomic_add: self.shader_image_float32_atomic_add
                ^ other.shader_image_float32_atomic_add,
            shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max
                ^ other.shader_image_float32_atomic_min_max,
            shader_image_float32_atomics: self.shader_image_float32_atomics
                ^ other.shader_image_float32_atomics,
            shader_image_gather_extended: self.shader_image_gather_extended
                ^ other.shader_image_gather_extended,
            shader_image_int64_atomics: self.shader_image_int64_atomics
                ^ other.shader_image_int64_atomics,
            shader_input_attachment_array_dynamic_indexing: self
                .shader_input_attachment_array_dynamic_indexing
                ^ other.shader_input_attachment_array_dynamic_indexing,
            shader_input_attachment_array_non_uniform_indexing: self
                .shader_input_attachment_array_non_uniform_indexing
                ^ other.shader_input_attachment_array_non_uniform_indexing,
            shader_int16: self.shader_int16 ^ other.shader_int16,
            shader_int64: self.shader_int64 ^ other.shader_int64,
            shader_int8: self.shader_int8 ^ other.shader_int8,
            shader_integer_dot_product: self.shader_integer_dot_product
                ^ other.shader_integer_dot_product,
            shader_integer_functions2: self.shader_integer_functions2
                ^ other.shader_integer_functions2,
            shader_module_identifier: self.shader_module_identifier
                ^ other.shader_module_identifier,
            shader_output_layer: self.shader_output_layer ^ other.shader_output_layer,
            shader_output_viewport_index: self.shader_output_viewport_index
                ^ other.shader_output_viewport_index,
            shader_resource_min_lod: self.shader_resource_min_lod ^ other.shader_resource_min_lod,
            shader_resource_residency: self.shader_resource_residency
                ^ other.shader_resource_residency,
            shader_sample_rate_interpolation_functions: self
                .shader_sample_rate_interpolation_functions
                ^ other.shader_sample_rate_interpolation_functions,
            shader_sampled_image_array_dynamic_indexing: self
                .shader_sampled_image_array_dynamic_indexing
                ^ other.shader_sampled_image_array_dynamic_indexing,
            shader_sampled_image_array_non_uniform_indexing: self
                .shader_sampled_image_array_non_uniform_indexing
                ^ other.shader_sampled_image_array_non_uniform_indexing,
            shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add
                ^ other.shader_shared_float16_atomic_add,
            shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max
                ^ other.shader_shared_float16_atomic_min_max,
            shader_shared_float16_atomics: self.shader_shared_float16_atomics
                ^ other.shader_shared_float16_atomics,
            shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add
                ^ other.shader_shared_float32_atomic_add,
            shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max
                ^ other.shader_shared_float32_atomic_min_max,
            shader_shared_float32_atomics: self.shader_shared_float32_atomics
                ^ other.shader_shared_float32_atomics,
            shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add
                ^ other.shader_shared_float64_atomic_add,
            shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max
                ^ other.shader_shared_float64_atomic_min_max,
            shader_shared_float64_atomics: self.shader_shared_float64_atomics
                ^ other.shader_shared_float64_atomics,
            shader_shared_int64_atomics: self.shader_shared_int64_atomics
                ^ other.shader_shared_int64_atomics,
            shader_sm_builtins: self.shader_sm_builtins ^ other.shader_sm_builtins,
            shader_storage_buffer_array_dynamic_indexing: self
                .shader_storage_buffer_array_dynamic_indexing
                ^ other.shader_storage_buffer_array_dynamic_indexing,
            shader_storage_buffer_array_non_uniform_indexing: self
                .shader_storage_buffer_array_non_uniform_indexing
                ^ other.shader_storage_buffer_array_non_uniform_indexing,
            shader_storage_image_array_dynamic_indexing: self
                .shader_storage_image_array_dynamic_indexing
                ^ other.shader_storage_image_array_dynamic_indexing,
            shader_storage_image_array_non_uniform_indexing: self
                .shader_storage_image_array_non_uniform_indexing
                ^ other.shader_storage_image_array_non_uniform_indexing,
            shader_storage_image_extended_formats: self.shader_storage_image_extended_formats
                ^ other.shader_storage_image_extended_formats,
            shader_storage_image_multisample: self.shader_storage_image_multisample
                ^ other.shader_storage_image_multisample,
            shader_storage_image_read_without_format: self.shader_storage_image_read_without_format
                ^ other.shader_storage_image_read_without_format,
            shader_storage_image_write_without_format: self
                .shader_storage_image_write_without_format
                ^ other.shader_storage_image_write_without_format,
            shader_storage_texel_buffer_array_dynamic_indexing: self
                .shader_storage_texel_buffer_array_dynamic_indexing
                ^ other.shader_storage_texel_buffer_array_dynamic_indexing,
            shader_storage_texel_buffer_array_non_uniform_indexing: self
                .shader_storage_texel_buffer_array_non_uniform_indexing
                ^ other.shader_storage_texel_buffer_array_non_uniform_indexing,
            shader_subgroup_clock: self.shader_subgroup_clock ^ other.shader_subgroup_clock,
            shader_subgroup_extended_types: self.shader_subgroup_extended_types
                ^ other.shader_subgroup_extended_types,
            shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow
                ^ other.shader_subgroup_uniform_control_flow,
            shader_terminate_invocation: self.shader_terminate_invocation
                ^ other.shader_terminate_invocation,
            shader_tessellation_and_geometry_point_size: self
                .shader_tessellation_and_geometry_point_size
                ^ other.shader_tessellation_and_geometry_point_size,
            shader_uniform_buffer_array_dynamic_indexing: self
                .shader_uniform_buffer_array_dynamic_indexing
                ^ other.shader_uniform_buffer_array_dynamic_indexing,
            shader_uniform_buffer_array_non_uniform_indexing: self
                .shader_uniform_buffer_array_non_uniform_indexing
                ^ other.shader_uniform_buffer_array_non_uniform_indexing,
            shader_uniform_texel_buffer_array_dynamic_indexing: self
                .shader_uniform_texel_buffer_array_dynamic_indexing
                ^ other.shader_uniform_texel_buffer_array_dynamic_indexing,
            shader_uniform_texel_buffer_array_non_uniform_indexing: self
                .shader_uniform_texel_buffer_array_non_uniform_indexing
                ^ other.shader_uniform_texel_buffer_array_non_uniform_indexing,
            shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory
                ^ other.shader_zero_initialize_workgroup_memory,
            shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order
                ^ other.shading_rate_coarse_sample_order,
            shading_rate_image: self.shading_rate_image ^ other.shading_rate_image,
            smooth_lines: self.smooth_lines ^ other.smooth_lines,
            sparse_binding: self.sparse_binding ^ other.sparse_binding,
            sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add
                ^ other.sparse_image_float32_atomic_add,
            sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max
                ^ other.sparse_image_float32_atomic_min_max,
            sparse_image_float32_atomics: self.sparse_image_float32_atomics
                ^ other.sparse_image_float32_atomics,
            sparse_image_int64_atomics: self.sparse_image_int64_atomics
                ^ other.sparse_image_int64_atomics,
            sparse_residency16_samples: self.sparse_residency16_samples
                ^ other.sparse_residency16_samples,
            sparse_residency2_samples: self.sparse_residency2_samples
                ^ other.sparse_residency2_samples,
            sparse_residency4_samples: self.sparse_residency4_samples
                ^ other.sparse_residency4_samples,
            sparse_residency8_samples: self.sparse_residency8_samples
                ^ other.sparse_residency8_samples,
            sparse_residency_aliased: self.sparse_residency_aliased
                ^ other.sparse_residency_aliased,
            sparse_residency_buffer: self.sparse_residency_buffer ^ other.sparse_residency_buffer,
            sparse_residency_image2_d: self.sparse_residency_image2_d
                ^ other.sparse_residency_image2_d,
            sparse_residency_image3_d: self.sparse_residency_image3_d
                ^ other.sparse_residency_image3_d,
            stippled_bresenham_lines: self.stippled_bresenham_lines
                ^ other.stippled_bresenham_lines,
            stippled_rectangular_lines: self.stippled_rectangular_lines
                ^ other.stippled_rectangular_lines,
            stippled_smooth_lines: self.stippled_smooth_lines ^ other.stippled_smooth_lines,
            storage_buffer16_bit_access: self.storage_buffer16_bit_access
                ^ other.storage_buffer16_bit_access,
            storage_buffer8_bit_access: self.storage_buffer8_bit_access
                ^ other.storage_buffer8_bit_access,
            storage_input_output16: self.storage_input_output16 ^ other.storage_input_output16,
            storage_push_constant16: self.storage_push_constant16 ^ other.storage_push_constant16,
            storage_push_constant8: self.storage_push_constant8 ^ other.storage_push_constant8,
            subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id
                ^ other.subgroup_broadcast_dynamic_id,
            subgroup_size_control: self.subgroup_size_control ^ other.subgroup_size_control,
            subpass_merge_feedback: self.subpass_merge_feedback ^ other.subpass_merge_feedback,
            subpass_shading: self.subpass_shading ^ other.subpass_shading,
            supersample_fragment_shading_rates: self.supersample_fragment_shading_rates
                ^ other.supersample_fragment_shading_rates,
            swapchain_maintenance1: self.swapchain_maintenance1 ^ other.swapchain_maintenance1,
            synchronization2: self.synchronization2 ^ other.synchronization2,
            task_shader: self.task_shader ^ other.task_shader,
            tessellation_isolines: self.tessellation_isolines ^ other.tessellation_isolines,
            tessellation_point_mode: self.tessellation_point_mode ^ other.tessellation_point_mode,
            tessellation_shader: self.tessellation_shader ^ other.tessellation_shader,
            texel_buffer_alignment: self.texel_buffer_alignment ^ other.texel_buffer_alignment,
            texture_block_match: self.texture_block_match ^ other.texture_block_match,
            texture_box_filter: self.texture_box_filter ^ other.texture_box_filter,
            texture_compression_astc_hdr: self.texture_compression_astc_hdr
                ^ other.texture_compression_astc_hdr,
            texture_compression_astc_ldr: self.texture_compression_astc_ldr
                ^ other.texture_compression_astc_ldr,
            texture_compression_bc: self.texture_compression_bc ^ other.texture_compression_bc,
            texture_compression_etc2: self.texture_compression_etc2
                ^ other.texture_compression_etc2,
            texture_sample_weighted: self.texture_sample_weighted ^ other.texture_sample_weighted,
            tile_properties: self.tile_properties ^ other.tile_properties,
            timeline_semaphore: self.timeline_semaphore ^ other.timeline_semaphore,
            transform_feedback: self.transform_feedback ^ other.transform_feedback,
            transform_feedback_preserves_provoking_vertex: self
                .transform_feedback_preserves_provoking_vertex
                ^ other.transform_feedback_preserves_provoking_vertex,
            triangle_fans: self.triangle_fans ^ other.triangle_fans,
            uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access
                ^ other.uniform_and_storage_buffer16_bit_access,
            uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access
                ^ other.uniform_and_storage_buffer8_bit_access,
            uniform_buffer_standard_layout: self.uniform_buffer_standard_layout
                ^ other.uniform_buffer_standard_layout,
            variable_multisample_rate: self.variable_multisample_rate
                ^ other.variable_multisample_rate,
            variable_pointers: self.variable_pointers ^ other.variable_pointers,
            variable_pointers_storage_buffer: self.variable_pointers_storage_buffer
                ^ other.variable_pointers_storage_buffer,
            vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride
                ^ other.vertex_attribute_access_beyond_stride,
            vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor
                ^ other.vertex_attribute_instance_rate_divisor,
            vertex_attribute_instance_rate_zero_divisor: self
                .vertex_attribute_instance_rate_zero_divisor
                ^ other.vertex_attribute_instance_rate_zero_divisor,
            vertex_input_dynamic_state: self.vertex_input_dynamic_state
                ^ other.vertex_input_dynamic_state,
            vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics
                ^ other.vertex_pipeline_stores_and_atomics,
            vulkan_memory_model: self.vulkan_memory_model ^ other.vulkan_memory_model,
            vulkan_memory_model_availability_visibility_chains: self
                .vulkan_memory_model_availability_visibility_chains
                ^ other.vulkan_memory_model_availability_visibility_chains,
            vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope
                ^ other.vulkan_memory_model_device_scope,
            wide_lines: self.wide_lines ^ other.wide_lines,
            workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout
                ^ other.workgroup_memory_explicit_layout,
            workgroup_memory_explicit_layout16_bit_access: self
                .workgroup_memory_explicit_layout16_bit_access
                ^ other.workgroup_memory_explicit_layout16_bit_access,
            workgroup_memory_explicit_layout8_bit_access: self
                .workgroup_memory_explicit_layout8_bit_access
                ^ other.workgroup_memory_explicit_layout8_bit_access,
            workgroup_memory_explicit_layout_scalar_block_layout: self
                .workgroup_memory_explicit_layout_scalar_block_layout
                ^ other.workgroup_memory_explicit_layout_scalar_block_layout,
            ycbcr2plane444_formats: self.ycbcr2plane444_formats ^ other.ycbcr2plane444_formats,
            ycbcr_image_arrays: self.ycbcr_image_arrays ^ other.ycbcr_image_arrays,
            _ne: crate::NonExhaustive(()),
        }
    }
}
impl std::ops::BitAnd for Features {
    type Output = Features;
    #[inline]
    fn bitand(self, rhs: Self) -> Self::Output {
        self.intersection(&rhs)
    }
}
impl std::ops::BitAndAssign for Features {
    #[inline]
    fn bitand_assign(&mut self, rhs: Self) {
        *self = self.intersection(&rhs);
    }
}
impl std::ops::BitOr for Features {
    type Output = Features;
    #[inline]
    fn bitor(self, rhs: Self) -> Self::Output {
        self.union(&rhs)
    }
}
impl std::ops::BitOrAssign for Features {
    #[inline]
    fn bitor_assign(&mut self, rhs: Self) {
        *self = self.union(&rhs);
    }
}
impl std::ops::BitXor for Features {
    type Output = Features;
    #[inline]
    fn bitxor(self, rhs: Self) -> Self::Output {
        self.symmetric_difference(&rhs)
    }
}
impl std::ops::BitXorAssign for Features {
    #[inline]
    fn bitxor_assign(&mut self, rhs: Self) {
        *self = self.symmetric_difference(&rhs);
    }
}
impl std::ops::Sub for Features {
    type Output = Features;
    #[inline]
    fn sub(self, rhs: Self) -> Self::Output {
        self.difference(&rhs)
    }
}
impl std::ops::SubAssign for Features {
    #[inline]
    fn sub_assign(&mut self, rhs: Self) {
        *self = self.difference(&rhs);
    }
}
impl std::fmt::Debug for Features {
    #[allow(unused_assignments)]
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
        write!(f, "[")?;
        let mut first = true;
        if self.acceleration_structure {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("accelerationStructure")?;
        }
        if self.acceleration_structure_capture_replay {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("accelerationStructureCaptureReplay")?;
        }
        if self.acceleration_structure_host_commands {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("accelerationStructureHostCommands")?;
        }
        if self.acceleration_structure_indirect_build {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("accelerationStructureIndirectBuild")?;
        }
        if self.advanced_blend_coherent_operations {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("advancedBlendCoherentOperations")?;
        }
        if self.alpha_to_one {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("alphaToOne")?;
        }
        if self.amigo_profiling {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("amigoProfiling")?;
        }
        if self.attachment_feedback_loop_layout {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("attachmentFeedbackLoopLayout")?;
        }
        if self.attachment_fragment_shading_rate {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("attachmentFragmentShadingRate")?;
        }
        if self.border_color_swizzle {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("borderColorSwizzle")?;
        }
        if self.border_color_swizzle_from_image {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("borderColorSwizzleFromImage")?;
        }
        if self.bresenham_lines {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("bresenhamLines")?;
        }
        if self.buffer_device_address {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("bufferDeviceAddress")?;
        }
        if self.buffer_device_address_capture_replay {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("bufferDeviceAddressCaptureReplay")?;
        }
        if self.buffer_device_address_multi_device {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("bufferDeviceAddressMultiDevice")?;
        }
        if self.color_write_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("colorWriteEnable")?;
        }
        if self.compute_derivative_group_linear {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("computeDerivativeGroupLinear")?;
        }
        if self.compute_derivative_group_quads {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("computeDerivativeGroupQuads")?;
        }
        if self.compute_full_subgroups {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("computeFullSubgroups")?;
        }
        if self.conditional_rendering {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("conditionalRendering")?;
        }
        if self.constant_alpha_color_blend_factors {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("constantAlphaColorBlendFactors")?;
        }
        if self.cooperative_matrix {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("cooperativeMatrix")?;
        }
        if self.cooperative_matrix_robust_buffer_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("cooperativeMatrixRobustBufferAccess")?;
        }
        if self.corner_sampled_image {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("cornerSampledImage")?;
        }
        if self.coverage_reduction_mode {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("coverageReductionMode")?;
        }
        if self.custom_border_color_without_format {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("customBorderColorWithoutFormat")?;
        }
        if self.custom_border_colors {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("customBorderColors")?;
        }
        if self.decode_mode_shared_exponent {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("decodeModeSharedExponent")?;
        }
        if self.dedicated_allocation_image_aliasing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("dedicatedAllocationImageAliasing")?;
        }
        if self.depth_bias_clamp {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("depthBiasClamp")?;
        }
        if self.depth_bounds {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("depthBounds")?;
        }
        if self.depth_clamp {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("depthClamp")?;
        }
        if self.depth_clamp_zero_one {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("depthClampZeroOne")?;
        }
        if self.depth_clip_control {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("depthClipControl")?;
        }
        if self.depth_clip_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("depthClipEnable")?;
        }
        if self.descriptor_binding_acceleration_structure_update_after_bind {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBindingAccelerationStructureUpdateAfterBind")?;
        }
        if self.descriptor_binding_inline_uniform_block_update_after_bind {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBindingInlineUniformBlockUpdateAfterBind")?;
        }
        if self.descriptor_binding_partially_bound {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBindingPartiallyBound")?;
        }
        if self.descriptor_binding_sampled_image_update_after_bind {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBindingSampledImageUpdateAfterBind")?;
        }
        if self.descriptor_binding_storage_buffer_update_after_bind {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBindingStorageBufferUpdateAfterBind")?;
        }
        if self.descriptor_binding_storage_image_update_after_bind {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBindingStorageImageUpdateAfterBind")?;
        }
        if self.descriptor_binding_storage_texel_buffer_update_after_bind {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBindingStorageTexelBufferUpdateAfterBind")?;
        }
        if self.descriptor_binding_uniform_buffer_update_after_bind {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBindingUniformBufferUpdateAfterBind")?;
        }
        if self.descriptor_binding_uniform_texel_buffer_update_after_bind {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBindingUniformTexelBufferUpdateAfterBind")?;
        }
        if self.descriptor_binding_update_unused_while_pending {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBindingUpdateUnusedWhilePending")?;
        }
        if self.descriptor_binding_variable_descriptor_count {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBindingVariableDescriptorCount")?;
        }
        if self.descriptor_buffer {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBuffer")?;
        }
        if self.descriptor_buffer_capture_replay {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBufferCaptureReplay")?;
        }
        if self.descriptor_buffer_image_layout_ignored {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBufferImageLayoutIgnored")?;
        }
        if self.descriptor_buffer_push_descriptors {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorBufferPushDescriptors")?;
        }
        if self.descriptor_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorIndexing")?;
        }
        if self.descriptor_set_host_mapping {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("descriptorSetHostMapping")?;
        }
        if self.device_coherent_memory {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("deviceCoherentMemory")?;
        }
        if self.device_fault {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("deviceFault")?;
        }
        if self.device_fault_vendor_binary {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("deviceFaultVendorBinary")?;
        }
        if self.device_generated_commands {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("deviceGeneratedCommands")?;
        }
        if self.device_memory_report {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("deviceMemoryReport")?;
        }
        if self.diagnostics_config {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("diagnosticsConfig")?;
        }
        if self.draw_indirect_count {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("drawIndirectCount")?;
        }
        if self.draw_indirect_first_instance {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("drawIndirectFirstInstance")?;
        }
        if self.dual_src_blend {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("dualSrcBlend")?;
        }
        if self.dynamic_rendering {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("dynamicRendering")?;
        }
        if self.events {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("events")?;
        }
        if self.exclusive_scissor {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("exclusiveScissor")?;
        }
        if self.extended_dynamic_state {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState")?;
        }
        if self.extended_dynamic_state2 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState2")?;
        }
        if self.extended_dynamic_state2_logic_op {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState2LogicOp")?;
        }
        if self.extended_dynamic_state2_patch_control_points {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState2PatchControlPoints")?;
        }
        if self.extended_dynamic_state3_alpha_to_coverage_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3AlphaToCoverageEnable")?;
        }
        if self.extended_dynamic_state3_alpha_to_one_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3AlphaToOneEnable")?;
        }
        if self.extended_dynamic_state3_color_blend_advanced {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3ColorBlendAdvanced")?;
        }
        if self.extended_dynamic_state3_color_blend_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3ColorBlendEnable")?;
        }
        if self.extended_dynamic_state3_color_blend_equation {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3ColorBlendEquation")?;
        }
        if self.extended_dynamic_state3_color_write_mask {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3ColorWriteMask")?;
        }
        if self.extended_dynamic_state3_conservative_rasterization_mode {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3ConservativeRasterizationMode")?;
        }
        if self.extended_dynamic_state3_coverage_modulation_mode {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3CoverageModulationMode")?;
        }
        if self.extended_dynamic_state3_coverage_modulation_table {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3CoverageModulationTable")?;
        }
        if self.extended_dynamic_state3_coverage_modulation_table_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3CoverageModulationTableEnable")?;
        }
        if self.extended_dynamic_state3_coverage_reduction_mode {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3CoverageReductionMode")?;
        }
        if self.extended_dynamic_state3_coverage_to_color_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3CoverageToColorEnable")?;
        }
        if self.extended_dynamic_state3_coverage_to_color_location {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3CoverageToColorLocation")?;
        }
        if self.extended_dynamic_state3_depth_clamp_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3DepthClampEnable")?;
        }
        if self.extended_dynamic_state3_depth_clip_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3DepthClipEnable")?;
        }
        if self.extended_dynamic_state3_depth_clip_negative_one_to_one {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3DepthClipNegativeOneToOne")?;
        }
        if self.extended_dynamic_state3_extra_primitive_overestimation_size {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3ExtraPrimitiveOverestimationSize")?;
        }
        if self.extended_dynamic_state3_line_rasterization_mode {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3LineRasterizationMode")?;
        }
        if self.extended_dynamic_state3_line_stipple_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3LineStippleEnable")?;
        }
        if self.extended_dynamic_state3_logic_op_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3LogicOpEnable")?;
        }
        if self.extended_dynamic_state3_polygon_mode {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3PolygonMode")?;
        }
        if self.extended_dynamic_state3_provoking_vertex_mode {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3ProvokingVertexMode")?;
        }
        if self.extended_dynamic_state3_rasterization_samples {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3RasterizationSamples")?;
        }
        if self.extended_dynamic_state3_rasterization_stream {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3RasterizationStream")?;
        }
        if self.extended_dynamic_state3_representative_fragment_test_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3RepresentativeFragmentTestEnable")?;
        }
        if self.extended_dynamic_state3_sample_locations_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3SampleLocationsEnable")?;
        }
        if self.extended_dynamic_state3_sample_mask {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3SampleMask")?;
        }
        if self.extended_dynamic_state3_shading_rate_image_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3ShadingRateImageEnable")?;
        }
        if self.extended_dynamic_state3_tessellation_domain_origin {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3TessellationDomainOrigin")?;
        }
        if self.extended_dynamic_state3_viewport_swizzle {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3ViewportSwizzle")?;
        }
        if self.extended_dynamic_state3_viewport_w_scaling_enable {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("extendedDynamicState3ViewportWScalingEnable")?;
        }
        if self.external_memory_rdma {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("externalMemoryRDMA")?;
        }
        if self.fill_mode_non_solid {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fillModeNonSolid")?;
        }
        if self.format_a4b4g4r4 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("formatA4B4G4R4")?;
        }
        if self.format_a4r4g4b4 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("formatA4R4G4B4")?;
        }
        if self.format_rgba10x6_without_y_cb_cr_sampler {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("formatRgba10x6WithoutYCbCrSampler")?;
        }
        if self.fragment_density_map {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fragmentDensityMap")?;
        }
        if self.fragment_density_map_deferred {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fragmentDensityMapDeferred")?;
        }
        if self.fragment_density_map_dynamic {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fragmentDensityMapDynamic")?;
        }
        if self.fragment_density_map_non_subsampled_images {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fragmentDensityMapNonSubsampledImages")?;
        }
        if self.fragment_density_map_offset {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fragmentDensityMapOffset")?;
        }
        if self.fragment_shader_barycentric {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fragmentShaderBarycentric")?;
        }
        if self.fragment_shader_pixel_interlock {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fragmentShaderPixelInterlock")?;
        }
        if self.fragment_shader_sample_interlock {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fragmentShaderSampleInterlock")?;
        }
        if self.fragment_shader_shading_rate_interlock {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fragmentShaderShadingRateInterlock")?;
        }
        if self.fragment_shading_rate_enums {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fragmentShadingRateEnums")?;
        }
        if self.fragment_stores_and_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fragmentStoresAndAtomics")?;
        }
        if self.full_draw_index_uint32 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("fullDrawIndexUint32")?;
        }
        if self.geometry_shader {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("geometryShader")?;
        }
        if self.geometry_streams {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("geometryStreams")?;
        }
        if self.global_priority_query {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("globalPriorityQuery")?;
        }
        if self.graphics_pipeline_library {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("graphicsPipelineLibrary")?;
        }
        if self.host_query_reset {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("hostQueryReset")?;
        }
        if self.image2_d_view_of3_d {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("image2DViewOf3D")?;
        }
        if self.image_compression_control {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("imageCompressionControl")?;
        }
        if self.image_compression_control_swapchain {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("imageCompressionControlSwapchain")?;
        }
        if self.image_cube_array {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("imageCubeArray")?;
        }
        if self.image_footprint {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("imageFootprint")?;
        }
        if self.image_view2_d_on3_d_image {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("imageView2DOn3DImage")?;
        }
        if self.image_view_format_reinterpretation {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("imageViewFormatReinterpretation")?;
        }
        if self.image_view_format_swizzle {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("imageViewFormatSwizzle")?;
        }
        if self.imageless_framebuffer {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("imagelessFramebuffer")?;
        }
        if self.independent_blend {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("independentBlend")?;
        }
        if self.index_type_uint8 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("indexTypeUint8")?;
        }
        if self.indirect_copy {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("indirectCopy")?;
        }
        if self.inherited_conditional_rendering {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("inheritedConditionalRendering")?;
        }
        if self.inherited_queries {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("inheritedQueries")?;
        }
        if self.inherited_viewport_scissor2_d {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("inheritedViewportScissor2D")?;
        }
        if self.inline_uniform_block {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("inlineUniformBlock")?;
        }
        if self.invocation_mask {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("invocationMask")?;
        }
        if self.large_points {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("largePoints")?;
        }
        if self.legacy_dithering {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("legacyDithering")?;
        }
        if self.linear_color_attachment {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("linearColorAttachment")?;
        }
        if self.logic_op {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("logicOp")?;
        }
        if self.maintenance4 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("maintenance4")?;
        }
        if self.memory_decompression {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("memoryDecompression")?;
        }
        if self.memory_priority {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("memoryPriority")?;
        }
        if self.mesh_shader {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("meshShader")?;
        }
        if self.mesh_shader_queries {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("meshShaderQueries")?;
        }
        if self.micromap {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("micromap")?;
        }
        if self.micromap_capture_replay {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("micromapCaptureReplay")?;
        }
        if self.micromap_host_commands {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("micromapHostCommands")?;
        }
        if self.min_lod {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("minLod")?;
        }
        if self.multi_draw {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("multiDraw")?;
        }
        if self.multi_draw_indirect {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("multiDrawIndirect")?;
        }
        if self.multi_viewport {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("multiViewport")?;
        }
        if self.multisample_array_image {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("multisampleArrayImage")?;
        }
        if self.multisampled_render_to_single_sampled {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("multisampledRenderToSingleSampled")?;
        }
        if self.multiview {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("multiview")?;
        }
        if self.multiview_geometry_shader {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("multiviewGeometryShader")?;
        }
        if self.multiview_mesh_shader {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("multiviewMeshShader")?;
        }
        if self.multiview_per_view_viewports {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("multiviewPerViewViewports")?;
        }
        if self.multiview_tessellation_shader {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("multiviewTessellationShader")?;
        }
        if self.mutable_comparison_samplers {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("mutableComparisonSamplers")?;
        }
        if self.mutable_descriptor_type {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("mutableDescriptorType")?;
        }
        if self.no_invocation_fragment_shading_rates {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("noInvocationFragmentShadingRates")?;
        }
        if self.non_seamless_cube_map {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("nonSeamlessCubeMap")?;
        }
        if self.null_descriptor {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("nullDescriptor")?;
        }
        if self.occlusion_query_precise {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("occlusionQueryPrecise")?;
        }
        if self.optical_flow {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("opticalFlow")?;
        }
        if self.pageable_device_local_memory {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("pageableDeviceLocalMemory")?;
        }
        if self.performance_counter_multiple_query_pools {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("performanceCounterMultipleQueryPools")?;
        }
        if self.performance_counter_query_pools {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("performanceCounterQueryPools")?;
        }
        if self.pipeline_creation_cache_control {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("pipelineCreationCacheControl")?;
        }
        if self.pipeline_executable_info {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("pipelineExecutableInfo")?;
        }
        if self.pipeline_fragment_shading_rate {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("pipelineFragmentShadingRate")?;
        }
        if self.pipeline_properties_identifier {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("pipelinePropertiesIdentifier")?;
        }
        if self.pipeline_protected_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("pipelineProtectedAccess")?;
        }
        if self.pipeline_robustness {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("pipelineRobustness")?;
        }
        if self.pipeline_statistics_query {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("pipelineStatisticsQuery")?;
        }
        if self.point_polygons {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("pointPolygons")?;
        }
        if self.present_barrier {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("presentBarrier")?;
        }
        if self.present_id {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("presentId")?;
        }
        if self.present_wait {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("presentWait")?;
        }
        if self.primitive_fragment_shading_rate {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("primitiveFragmentShadingRate")?;
        }
        if self.primitive_fragment_shading_rate_mesh_shader {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("primitiveFragmentShadingRateMeshShader")?;
        }
        if self.primitive_topology_list_restart {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("primitiveTopologyListRestart")?;
        }
        if self.primitive_topology_patch_list_restart {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("primitiveTopologyPatchListRestart")?;
        }
        if self.primitives_generated_query {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("primitivesGeneratedQuery")?;
        }
        if self.primitives_generated_query_with_non_zero_streams {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("primitivesGeneratedQueryWithNonZeroStreams")?;
        }
        if self.primitives_generated_query_with_rasterizer_discard {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("primitivesGeneratedQueryWithRasterizerDiscard")?;
        }
        if self.private_data {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("privateData")?;
        }
        if self.protected_memory {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("protectedMemory")?;
        }
        if self.provoking_vertex_last {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("provokingVertexLast")?;
        }
        if self.rasterization_order_color_attachment_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rasterizationOrderColorAttachmentAccess")?;
        }
        if self.rasterization_order_depth_attachment_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rasterizationOrderDepthAttachmentAccess")?;
        }
        if self.rasterization_order_stencil_attachment_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rasterizationOrderStencilAttachmentAccess")?;
        }
        if self.ray_query {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rayQuery")?;
        }
        if self.ray_tracing_invocation_reorder {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rayTracingInvocationReorder")?;
        }
        if self.ray_tracing_maintenance1 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rayTracingMaintenance1")?;
        }
        if self.ray_tracing_motion_blur {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rayTracingMotionBlur")?;
        }
        if self.ray_tracing_motion_blur_pipeline_trace_rays_indirect {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rayTracingMotionBlurPipelineTraceRaysIndirect")?;
        }
        if self.ray_tracing_pipeline {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rayTracingPipeline")?;
        }
        if self.ray_tracing_pipeline_shader_group_handle_capture_replay {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rayTracingPipelineShaderGroupHandleCaptureReplay")?;
        }
        if self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rayTracingPipelineShaderGroupHandleCaptureReplayMixed")?;
        }
        if self.ray_tracing_pipeline_trace_rays_indirect {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rayTracingPipelineTraceRaysIndirect")?;
        }
        if self.ray_tracing_pipeline_trace_rays_indirect2 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rayTracingPipelineTraceRaysIndirect2")?;
        }
        if self.ray_traversal_primitive_culling {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rayTraversalPrimitiveCulling")?;
        }
        if self.rectangular_lines {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("rectangularLines")?;
        }
        if self.report_address_binding {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("reportAddressBinding")?;
        }
        if self.representative_fragment_test {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("representativeFragmentTest")?;
        }
        if self.robust_buffer_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("robustBufferAccess")?;
        }
        if self.robust_buffer_access2 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("robustBufferAccess2")?;
        }
        if self.robust_image_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("robustImageAccess")?;
        }
        if self.robust_image_access2 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("robustImageAccess2")?;
        }
        if self.runtime_descriptor_array {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("runtimeDescriptorArray")?;
        }
        if self.sample_rate_shading {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sampleRateShading")?;
        }
        if self.sampler2_d_view_of3_d {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sampler2DViewOf3D")?;
        }
        if self.sampler_anisotropy {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("samplerAnisotropy")?;
        }
        if self.sampler_filter_minmax {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("samplerFilterMinmax")?;
        }
        if self.sampler_mip_lod_bias {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("samplerMipLodBias")?;
        }
        if self.sampler_mirror_clamp_to_edge {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("samplerMirrorClampToEdge")?;
        }
        if self.sampler_ycbcr_conversion {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("samplerYcbcrConversion")?;
        }
        if self.scalar_block_layout {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("scalarBlockLayout")?;
        }
        if self.separate_depth_stencil_layouts {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("separateDepthStencilLayouts")?;
        }
        if self.separate_stencil_mask_ref {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("separateStencilMaskRef")?;
        }
        if self.shader_buffer_float16_atomic_add {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderBufferFloat16AtomicAdd")?;
        }
        if self.shader_buffer_float16_atomic_min_max {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderBufferFloat16AtomicMinMax")?;
        }
        if self.shader_buffer_float16_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderBufferFloat16Atomics")?;
        }
        if self.shader_buffer_float32_atomic_add {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderBufferFloat32AtomicAdd")?;
        }
        if self.shader_buffer_float32_atomic_min_max {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderBufferFloat32AtomicMinMax")?;
        }
        if self.shader_buffer_float32_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderBufferFloat32Atomics")?;
        }
        if self.shader_buffer_float64_atomic_add {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderBufferFloat64AtomicAdd")?;
        }
        if self.shader_buffer_float64_atomic_min_max {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderBufferFloat64AtomicMinMax")?;
        }
        if self.shader_buffer_float64_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderBufferFloat64Atomics")?;
        }
        if self.shader_buffer_int64_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderBufferInt64Atomics")?;
        }
        if self.shader_clip_distance {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderClipDistance")?;
        }
        if self.shader_core_builtins {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderCoreBuiltins")?;
        }
        if self.shader_cull_distance {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderCullDistance")?;
        }
        if self.shader_demote_to_helper_invocation {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderDemoteToHelperInvocation")?;
        }
        if self.shader_device_clock {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderDeviceClock")?;
        }
        if self.shader_draw_parameters {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderDrawParameters")?;
        }
        if self.shader_early_and_late_fragment_tests {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderEarlyAndLateFragmentTests")?;
        }
        if self.shader_float16 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderFloat16")?;
        }
        if self.shader_float64 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderFloat64")?;
        }
        if self.shader_image_float32_atomic_add {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderImageFloat32AtomicAdd")?;
        }
        if self.shader_image_float32_atomic_min_max {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderImageFloat32AtomicMinMax")?;
        }
        if self.shader_image_float32_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderImageFloat32Atomics")?;
        }
        if self.shader_image_gather_extended {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderImageGatherExtended")?;
        }
        if self.shader_image_int64_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderImageInt64Atomics")?;
        }
        if self.shader_input_attachment_array_dynamic_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderInputAttachmentArrayDynamicIndexing")?;
        }
        if self.shader_input_attachment_array_non_uniform_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderInputAttachmentArrayNonUniformIndexing")?;
        }
        if self.shader_int16 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderInt16")?;
        }
        if self.shader_int64 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderInt64")?;
        }
        if self.shader_int8 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderInt8")?;
        }
        if self.shader_integer_dot_product {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderIntegerDotProduct")?;
        }
        if self.shader_integer_functions2 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderIntegerFunctions2")?;
        }
        if self.shader_module_identifier {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderModuleIdentifier")?;
        }
        if self.shader_output_layer {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderOutputLayer")?;
        }
        if self.shader_output_viewport_index {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderOutputViewportIndex")?;
        }
        if self.shader_resource_min_lod {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderResourceMinLod")?;
        }
        if self.shader_resource_residency {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderResourceResidency")?;
        }
        if self.shader_sample_rate_interpolation_functions {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSampleRateInterpolationFunctions")?;
        }
        if self.shader_sampled_image_array_dynamic_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSampledImageArrayDynamicIndexing")?;
        }
        if self.shader_sampled_image_array_non_uniform_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSampledImageArrayNonUniformIndexing")?;
        }
        if self.shader_shared_float16_atomic_add {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSharedFloat16AtomicAdd")?;
        }
        if self.shader_shared_float16_atomic_min_max {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSharedFloat16AtomicMinMax")?;
        }
        if self.shader_shared_float16_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSharedFloat16Atomics")?;
        }
        if self.shader_shared_float32_atomic_add {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSharedFloat32AtomicAdd")?;
        }
        if self.shader_shared_float32_atomic_min_max {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSharedFloat32AtomicMinMax")?;
        }
        if self.shader_shared_float32_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSharedFloat32Atomics")?;
        }
        if self.shader_shared_float64_atomic_add {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSharedFloat64AtomicAdd")?;
        }
        if self.shader_shared_float64_atomic_min_max {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSharedFloat64AtomicMinMax")?;
        }
        if self.shader_shared_float64_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSharedFloat64Atomics")?;
        }
        if self.shader_shared_int64_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSharedInt64Atomics")?;
        }
        if self.shader_sm_builtins {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSMBuiltins")?;
        }
        if self.shader_storage_buffer_array_dynamic_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderStorageBufferArrayDynamicIndexing")?;
        }
        if self.shader_storage_buffer_array_non_uniform_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderStorageBufferArrayNonUniformIndexing")?;
        }
        if self.shader_storage_image_array_dynamic_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderStorageImageArrayDynamicIndexing")?;
        }
        if self.shader_storage_image_array_non_uniform_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderStorageImageArrayNonUniformIndexing")?;
        }
        if self.shader_storage_image_extended_formats {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderStorageImageExtendedFormats")?;
        }
        if self.shader_storage_image_multisample {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderStorageImageMultisample")?;
        }
        if self.shader_storage_image_read_without_format {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderStorageImageReadWithoutFormat")?;
        }
        if self.shader_storage_image_write_without_format {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderStorageImageWriteWithoutFormat")?;
        }
        if self.shader_storage_texel_buffer_array_dynamic_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderStorageTexelBufferArrayDynamicIndexing")?;
        }
        if self.shader_storage_texel_buffer_array_non_uniform_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderStorageTexelBufferArrayNonUniformIndexing")?;
        }
        if self.shader_subgroup_clock {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSubgroupClock")?;
        }
        if self.shader_subgroup_extended_types {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSubgroupExtendedTypes")?;
        }
        if self.shader_subgroup_uniform_control_flow {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderSubgroupUniformControlFlow")?;
        }
        if self.shader_terminate_invocation {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderTerminateInvocation")?;
        }
        if self.shader_tessellation_and_geometry_point_size {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderTessellationAndGeometryPointSize")?;
        }
        if self.shader_uniform_buffer_array_dynamic_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderUniformBufferArrayDynamicIndexing")?;
        }
        if self.shader_uniform_buffer_array_non_uniform_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderUniformBufferArrayNonUniformIndexing")?;
        }
        if self.shader_uniform_texel_buffer_array_dynamic_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderUniformTexelBufferArrayDynamicIndexing")?;
        }
        if self.shader_uniform_texel_buffer_array_non_uniform_indexing {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderUniformTexelBufferArrayNonUniformIndexing")?;
        }
        if self.shader_zero_initialize_workgroup_memory {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shaderZeroInitializeWorkgroupMemory")?;
        }
        if self.shading_rate_coarse_sample_order {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shadingRateCoarseSampleOrder")?;
        }
        if self.shading_rate_image {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("shadingRateImage")?;
        }
        if self.smooth_lines {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("smoothLines")?;
        }
        if self.sparse_binding {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseBinding")?;
        }
        if self.sparse_image_float32_atomic_add {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseImageFloat32AtomicAdd")?;
        }
        if self.sparse_image_float32_atomic_min_max {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseImageFloat32AtomicMinMax")?;
        }
        if self.sparse_image_float32_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseImageFloat32Atomics")?;
        }
        if self.sparse_image_int64_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseImageInt64Atomics")?;
        }
        if self.sparse_residency16_samples {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseResidency16Samples")?;
        }
        if self.sparse_residency2_samples {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseResidency2Samples")?;
        }
        if self.sparse_residency4_samples {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseResidency4Samples")?;
        }
        if self.sparse_residency8_samples {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseResidency8Samples")?;
        }
        if self.sparse_residency_aliased {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseResidencyAliased")?;
        }
        if self.sparse_residency_buffer {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseResidencyBuffer")?;
        }
        if self.sparse_residency_image2_d {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseResidencyImage2D")?;
        }
        if self.sparse_residency_image3_d {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("sparseResidencyImage3D")?;
        }
        if self.stippled_bresenham_lines {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("stippledBresenhamLines")?;
        }
        if self.stippled_rectangular_lines {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("stippledRectangularLines")?;
        }
        if self.stippled_smooth_lines {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("stippledSmoothLines")?;
        }
        if self.storage_buffer16_bit_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("storageBuffer16BitAccess")?;
        }
        if self.storage_buffer8_bit_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("storageBuffer8BitAccess")?;
        }
        if self.storage_input_output16 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("storageInputOutput16")?;
        }
        if self.storage_push_constant16 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("storagePushConstant16")?;
        }
        if self.storage_push_constant8 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("storagePushConstant8")?;
        }
        if self.subgroup_broadcast_dynamic_id {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("subgroupBroadcastDynamicId")?;
        }
        if self.subgroup_size_control {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("subgroupSizeControl")?;
        }
        if self.subpass_merge_feedback {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("subpassMergeFeedback")?;
        }
        if self.subpass_shading {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("subpassShading")?;
        }
        if self.supersample_fragment_shading_rates {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("supersampleFragmentShadingRates")?;
        }
        if self.swapchain_maintenance1 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("swapchainMaintenance1")?;
        }
        if self.synchronization2 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("synchronization2")?;
        }
        if self.task_shader {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("taskShader")?;
        }
        if self.tessellation_isolines {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("tessellationIsolines")?;
        }
        if self.tessellation_point_mode {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("tessellationPointMode")?;
        }
        if self.tessellation_shader {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("tessellationShader")?;
        }
        if self.texel_buffer_alignment {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("texelBufferAlignment")?;
        }
        if self.texture_block_match {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("textureBlockMatch")?;
        }
        if self.texture_box_filter {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("textureBoxFilter")?;
        }
        if self.texture_compression_astc_hdr {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("textureCompressionASTC_HDR")?;
        }
        if self.texture_compression_astc_ldr {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("textureCompressionASTC_LDR")?;
        }
        if self.texture_compression_bc {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("textureCompressionBC")?;
        }
        if self.texture_compression_etc2 {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("textureCompressionETC2")?;
        }
        if self.texture_sample_weighted {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("textureSampleWeighted")?;
        }
        if self.tile_properties {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("tileProperties")?;
        }
        if self.timeline_semaphore {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("timelineSemaphore")?;
        }
        if self.transform_feedback {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("transformFeedback")?;
        }
        if self.transform_feedback_preserves_provoking_vertex {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("transformFeedbackPreservesProvokingVertex")?;
        }
        if self.triangle_fans {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("triangleFans")?;
        }
        if self.uniform_and_storage_buffer16_bit_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("uniformAndStorageBuffer16BitAccess")?;
        }
        if self.uniform_and_storage_buffer8_bit_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("uniformAndStorageBuffer8BitAccess")?;
        }
        if self.uniform_buffer_standard_layout {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("uniformBufferStandardLayout")?;
        }
        if self.variable_multisample_rate {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("variableMultisampleRate")?;
        }
        if self.variable_pointers {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("variablePointers")?;
        }
        if self.variable_pointers_storage_buffer {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("variablePointersStorageBuffer")?;
        }
        if self.vertex_attribute_access_beyond_stride {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("vertexAttributeAccessBeyondStride")?;
        }
        if self.vertex_attribute_instance_rate_divisor {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("vertexAttributeInstanceRateDivisor")?;
        }
        if self.vertex_attribute_instance_rate_zero_divisor {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("vertexAttributeInstanceRateZeroDivisor")?;
        }
        if self.vertex_input_dynamic_state {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("vertexInputDynamicState")?;
        }
        if self.vertex_pipeline_stores_and_atomics {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("vertexPipelineStoresAndAtomics")?;
        }
        if self.vulkan_memory_model {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("vulkanMemoryModel")?;
        }
        if self.vulkan_memory_model_availability_visibility_chains {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("vulkanMemoryModelAvailabilityVisibilityChains")?;
        }
        if self.vulkan_memory_model_device_scope {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("vulkanMemoryModelDeviceScope")?;
        }
        if self.wide_lines {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("wideLines")?;
        }
        if self.workgroup_memory_explicit_layout {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("workgroupMemoryExplicitLayout")?;
        }
        if self.workgroup_memory_explicit_layout16_bit_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("workgroupMemoryExplicitLayout16BitAccess")?;
        }
        if self.workgroup_memory_explicit_layout8_bit_access {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("workgroupMemoryExplicitLayout8BitAccess")?;
        }
        if self.workgroup_memory_explicit_layout_scalar_block_layout {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("workgroupMemoryExplicitLayoutScalarBlockLayout")?;
        }
        if self.ycbcr2plane444_formats {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("ycbcr2plane444Formats")?;
        }
        if self.ycbcr_image_arrays {
            if !first {
                write!(f, ", ")?
            } else {
                first = false;
            }
            f.write_str("ycbcrImageArrays")?;
        }
        write!(f, "]")
    }
}
impl FeaturesFfi {
    pub(crate) fn write(&mut self, features: &Features) {
        if let Some(f) = [self
            .features_acceleration_structure_khr
            .as_mut()
            .map(|s| &mut s.acceleration_structure)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.acceleration_structure as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_acceleration_structure_khr
            .as_mut()
            .map(|s| &mut s.acceleration_structure_capture_replay)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.acceleration_structure_capture_replay as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_acceleration_structure_khr
            .as_mut()
            .map(|s| &mut s.acceleration_structure_host_commands)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.acceleration_structure_host_commands as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_acceleration_structure_khr
            .as_mut()
            .map(|s| &mut s.acceleration_structure_indirect_build)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.acceleration_structure_indirect_build as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_blend_operation_advanced_ext
            .as_mut()
            .map(|s| &mut s.advanced_blend_coherent_operations)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.advanced_blend_coherent_operations as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.alpha_to_one].into_iter().next() {
            *f = features.alpha_to_one as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_amigo_profiling_sec.as_mut().map(|s| &mut s.amigo_profiling)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.amigo_profiling as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_attachment_feedback_loop_layout_ext
            .as_mut()
            .map(|s| &mut s.attachment_feedback_loop_layout)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.attachment_feedback_loop_layout as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_shading_rate_khr
            .as_mut()
            .map(|s| &mut s.attachment_fragment_shading_rate)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.attachment_fragment_shading_rate as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_border_color_swizzle_ext.as_mut().map(|s| &mut s.border_color_swizzle)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.border_color_swizzle as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_border_color_swizzle_ext
            .as_mut()
            .map(|s| &mut s.border_color_swizzle_from_image)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.border_color_swizzle_from_image as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_line_rasterization_ext.as_mut().map(|s| &mut s.bresenham_lines)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.bresenham_lines as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.buffer_device_address),
            self.features_buffer_device_address.as_mut().map(|s| &mut s.buffer_device_address),
            self.features_buffer_device_address_ext.as_mut().map(|s| &mut s.buffer_device_address),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.buffer_device_address as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.buffer_device_address_capture_replay),
            self.features_buffer_device_address
                .as_mut()
                .map(|s| &mut s.buffer_device_address_capture_replay),
            self.features_buffer_device_address_ext
                .as_mut()
                .map(|s| &mut s.buffer_device_address_capture_replay),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.buffer_device_address_capture_replay as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.buffer_device_address_multi_device),
            self.features_buffer_device_address
                .as_mut()
                .map(|s| &mut s.buffer_device_address_multi_device),
            self.features_buffer_device_address_ext
                .as_mut()
                .map(|s| &mut s.buffer_device_address_multi_device),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.buffer_device_address_multi_device as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_color_write_enable_ext.as_mut().map(|s| &mut s.color_write_enable)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.color_write_enable as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_compute_shader_derivatives_nv
            .as_mut()
            .map(|s| &mut s.compute_derivative_group_linear)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.compute_derivative_group_linear as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_compute_shader_derivatives_nv
            .as_mut()
            .map(|s| &mut s.compute_derivative_group_quads)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.compute_derivative_group_quads as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.compute_full_subgroups),
            self.features_subgroup_size_control.as_mut().map(|s| &mut s.compute_full_subgroups),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.compute_full_subgroups as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_conditional_rendering_ext.as_mut().map(|s| &mut s.conditional_rendering)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.conditional_rendering as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_portability_subset_khr
            .as_mut()
            .map(|s| &mut s.constant_alpha_color_blend_factors)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.constant_alpha_color_blend_factors as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_cooperative_matrix_nv.as_mut().map(|s| &mut s.cooperative_matrix)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.cooperative_matrix as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_cooperative_matrix_nv
            .as_mut()
            .map(|s| &mut s.cooperative_matrix_robust_buffer_access)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.cooperative_matrix_robust_buffer_access as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_corner_sampled_image_nv.as_mut().map(|s| &mut s.corner_sampled_image)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.corner_sampled_image as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_coverage_reduction_mode_nv
            .as_mut()
            .map(|s| &mut s.coverage_reduction_mode)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.coverage_reduction_mode as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_custom_border_color_ext
            .as_mut()
            .map(|s| &mut s.custom_border_color_without_format)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.custom_border_color_without_format as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_custom_border_color_ext.as_mut().map(|s| &mut s.custom_border_colors)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.custom_border_colors as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_astc_decode_ext.as_mut().map(|s| &mut s.decode_mode_shared_exponent)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.decode_mode_shared_exponent as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_dedicated_allocation_image_aliasing_nv
            .as_mut()
            .map(|s| &mut s.dedicated_allocation_image_aliasing)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.dedicated_allocation_image_aliasing as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.depth_bias_clamp].into_iter().next()
        {
            *f = features.depth_bias_clamp as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.depth_bounds].into_iter().next() {
            *f = features.depth_bounds as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.depth_clamp].into_iter().next() {
            *f = features.depth_clamp as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_depth_clamp_zero_one_ext.as_mut().map(|s| &mut s.depth_clamp_zero_one)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.depth_clamp_zero_one as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_depth_clip_control_ext.as_mut().map(|s| &mut s.depth_clip_control)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.depth_clip_control as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_depth_clip_enable_ext.as_mut().map(|s| &mut s.depth_clip_enable)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.depth_clip_enable as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_acceleration_structure_khr
            .as_mut()
            .map(|s| &mut s.descriptor_binding_acceleration_structure_update_after_bind)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_binding_acceleration_structure_update_after_bind
                as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13
                .as_mut()
                .map(|s| &mut s.descriptor_binding_inline_uniform_block_update_after_bind),
            self.features_inline_uniform_block
                .as_mut()
                .map(|s| &mut s.descriptor_binding_inline_uniform_block_update_after_bind),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_binding_inline_uniform_block_update_after_bind
                as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.descriptor_binding_partially_bound),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.descriptor_binding_partially_bound),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_binding_partially_bound as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.descriptor_binding_sampled_image_update_after_bind),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.descriptor_binding_sampled_image_update_after_bind),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_binding_sampled_image_update_after_bind as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.descriptor_binding_storage_buffer_update_after_bind),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.descriptor_binding_storage_buffer_update_after_bind),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_binding_storage_buffer_update_after_bind as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.descriptor_binding_storage_image_update_after_bind),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.descriptor_binding_storage_image_update_after_bind),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_binding_storage_image_update_after_bind as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.descriptor_binding_storage_texel_buffer_update_after_bind),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.descriptor_binding_storage_texel_buffer_update_after_bind),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_binding_storage_texel_buffer_update_after_bind
                as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.descriptor_binding_uniform_buffer_update_after_bind),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.descriptor_binding_uniform_buffer_update_after_bind),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_binding_uniform_buffer_update_after_bind as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.descriptor_binding_uniform_texel_buffer_update_after_bind),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.descriptor_binding_uniform_texel_buffer_update_after_bind),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_binding_uniform_texel_buffer_update_after_bind
                as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.descriptor_binding_update_unused_while_pending),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.descriptor_binding_update_unused_while_pending),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_binding_update_unused_while_pending as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.descriptor_binding_variable_descriptor_count),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.descriptor_binding_variable_descriptor_count),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_binding_variable_descriptor_count as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_descriptor_buffer_ext.as_mut().map(|s| &mut s.descriptor_buffer)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.descriptor_buffer as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_descriptor_buffer_ext
            .as_mut()
            .map(|s| &mut s.descriptor_buffer_capture_replay)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_buffer_capture_replay as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_descriptor_buffer_ext
            .as_mut()
            .map(|s| &mut s.descriptor_buffer_image_layout_ignored)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_buffer_image_layout_ignored as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_descriptor_buffer_ext
            .as_mut()
            .map(|s| &mut s.descriptor_buffer_push_descriptors)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_buffer_push_descriptors as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_vulkan12.as_mut().map(|s| &mut s.descriptor_indexing)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.descriptor_indexing as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_descriptor_set_host_mapping_valve
            .as_mut()
            .map(|s| &mut s.descriptor_set_host_mapping)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.descriptor_set_host_mapping as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_coherent_memory_amd.as_mut().map(|s| &mut s.device_coherent_memory)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.device_coherent_memory as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_fault_ext.as_mut().map(|s| &mut s.device_fault)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.device_fault as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_fault_ext.as_mut().map(|s| &mut s.device_fault_vendor_binary)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.device_fault_vendor_binary as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_device_generated_commands_nv
            .as_mut()
            .map(|s| &mut s.device_generated_commands)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.device_generated_commands as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_device_memory_report_ext.as_mut().map(|s| &mut s.device_memory_report)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.device_memory_report as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_diagnostics_config_nv.as_mut().map(|s| &mut s.diagnostics_config)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.diagnostics_config as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_vulkan12.as_mut().map(|s| &mut s.draw_indirect_count)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.draw_indirect_count as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.draw_indirect_first_instance].into_iter().next()
        {
            *f = features.draw_indirect_first_instance as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.dual_src_blend].into_iter().next() {
            *f = features.dual_src_blend as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.dynamic_rendering),
            self.features_dynamic_rendering.as_mut().map(|s| &mut s.dynamic_rendering),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.dynamic_rendering as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_portability_subset_khr.as_mut().map(|s| &mut s.events)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.events as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_exclusive_scissor_nv.as_mut().map(|s| &mut s.exclusive_scissor)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.exclusive_scissor as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state2_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state2)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state2 as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state2_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state2_logic_op)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state2_logic_op as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state2_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state2_patch_control_points)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state2_patch_control_points as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_alpha_to_coverage_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_alpha_to_coverage_enable as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_alpha_to_one_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_alpha_to_one_enable as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_color_blend_advanced)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_color_blend_advanced as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_color_blend_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_color_blend_enable as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_color_blend_equation)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_color_blend_equation as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_color_write_mask)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_color_write_mask as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_conservative_rasterization_mode)]
        .into_iter()
        .flatten()
        .next()
        {
            *f =
                features.extended_dynamic_state3_conservative_rasterization_mode as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_coverage_modulation_mode)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_coverage_modulation_mode as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_coverage_modulation_table)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_coverage_modulation_table as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_coverage_modulation_table_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_coverage_modulation_table_enable
                as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_coverage_reduction_mode)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_coverage_reduction_mode as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_coverage_to_color_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_coverage_to_color_enable as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_coverage_to_color_location)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_coverage_to_color_location as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_depth_clamp_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_depth_clamp_enable as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_depth_clip_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_depth_clip_enable as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_depth_clip_negative_one_to_one)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_depth_clip_negative_one_to_one as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_extra_primitive_overestimation_size)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_extra_primitive_overestimation_size
                as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_line_rasterization_mode)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_line_rasterization_mode as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_line_stipple_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_line_stipple_enable as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_logic_op_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_logic_op_enable as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_polygon_mode)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_polygon_mode as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_provoking_vertex_mode)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_provoking_vertex_mode as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_rasterization_samples)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_rasterization_samples as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_rasterization_stream)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_rasterization_stream as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_representative_fragment_test_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_representative_fragment_test_enable
                as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_sample_locations_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_sample_locations_enable as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_sample_mask)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_sample_mask as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_shading_rate_image_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_shading_rate_image_enable as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_tessellation_domain_origin)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_tessellation_domain_origin as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_viewport_swizzle)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_viewport_swizzle as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_extended_dynamic_state3_ext
            .as_mut()
            .map(|s| &mut s.extended_dynamic_state3_viewport_w_scaling_enable)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.extended_dynamic_state3_viewport_w_scaling_enable as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_external_memory_rdma_nv.as_mut().map(|s| &mut s.external_memory_rdma)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.external_memory_rdma as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.fill_mode_non_solid].into_iter().next()
        {
            *f = features.fill_mode_non_solid as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_4444formats_ext.as_mut().map(|s| &mut s.format_a4b4g4r4)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.format_a4b4g4r4 as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_4444formats_ext.as_mut().map(|s| &mut s.format_a4r4g4b4)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.format_a4r4g4b4 as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_rgba10x6_formats_ext
            .as_mut()
            .map(|s| &mut s.format_rgba10x6_without_y_cb_cr_sampler)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.format_rgba10x6_without_y_cb_cr_sampler as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_fragment_density_map_ext.as_mut().map(|s| &mut s.fragment_density_map)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.fragment_density_map as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_density_map2_ext
            .as_mut()
            .map(|s| &mut s.fragment_density_map_deferred)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.fragment_density_map_deferred as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_density_map_ext
            .as_mut()
            .map(|s| &mut s.fragment_density_map_dynamic)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.fragment_density_map_dynamic as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_density_map_ext
            .as_mut()
            .map(|s| &mut s.fragment_density_map_non_subsampled_images)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.fragment_density_map_non_subsampled_images as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_density_map_offset_qcom
            .as_mut()
            .map(|s| &mut s.fragment_density_map_offset)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.fragment_density_map_offset as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_shader_barycentric_khr
            .as_mut()
            .map(|s| &mut s.fragment_shader_barycentric)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.fragment_shader_barycentric as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_shader_interlock_ext
            .as_mut()
            .map(|s| &mut s.fragment_shader_pixel_interlock)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.fragment_shader_pixel_interlock as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_shader_interlock_ext
            .as_mut()
            .map(|s| &mut s.fragment_shader_sample_interlock)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.fragment_shader_sample_interlock as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_shader_interlock_ext
            .as_mut()
            .map(|s| &mut s.fragment_shader_shading_rate_interlock)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.fragment_shader_shading_rate_interlock as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_shading_rate_enums_nv
            .as_mut()
            .map(|s| &mut s.fragment_shading_rate_enums)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.fragment_shading_rate_enums as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.fragment_stores_and_atomics].into_iter().next()
        {
            *f = features.fragment_stores_and_atomics as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.full_draw_index_uint32].into_iter().next()
        {
            *f = features.full_draw_index_uint32 as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.geometry_shader].into_iter().next() {
            *f = features.geometry_shader as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_transform_feedback_ext.as_mut().map(|s| &mut s.geometry_streams)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.geometry_streams as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_global_priority_query_khr.as_mut().map(|s| &mut s.global_priority_query)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.global_priority_query as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_graphics_pipeline_library_ext
            .as_mut()
            .map(|s| &mut s.graphics_pipeline_library)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.graphics_pipeline_library as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.host_query_reset),
            self.features_host_query_reset.as_mut().map(|s| &mut s.host_query_reset),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.host_query_reset as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_image2_d_view_of3_d_ext.as_mut().map(|s| &mut s.image2_d_view_of3_d)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.image2_d_view_of3_d as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_image_compression_control_ext
            .as_mut()
            .map(|s| &mut s.image_compression_control)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.image_compression_control as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_image_compression_control_swapchain_ext
            .as_mut()
            .map(|s| &mut s.image_compression_control_swapchain)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.image_compression_control_swapchain as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.image_cube_array].into_iter().next()
        {
            *f = features.image_cube_array as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_shader_image_footprint_nv.as_mut().map(|s| &mut s.image_footprint)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.image_footprint as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_portability_subset_khr
            .as_mut()
            .map(|s| &mut s.image_view2_d_on3_d_image)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.image_view2_d_on3_d_image as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_portability_subset_khr
            .as_mut()
            .map(|s| &mut s.image_view_format_reinterpretation)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.image_view_format_reinterpretation as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_portability_subset_khr
            .as_mut()
            .map(|s| &mut s.image_view_format_swizzle)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.image_view_format_swizzle as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.imageless_framebuffer),
            self.features_imageless_framebuffer.as_mut().map(|s| &mut s.imageless_framebuffer),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.imageless_framebuffer as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.independent_blend].into_iter().next()
        {
            *f = features.independent_blend as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_index_type_uint8_ext.as_mut().map(|s| &mut s.index_type_uint8)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.index_type_uint8 as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_copy_memory_indirect_nv.as_mut().map(|s| &mut s.indirect_copy)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.indirect_copy as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_conditional_rendering_ext
            .as_mut()
            .map(|s| &mut s.inherited_conditional_rendering)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.inherited_conditional_rendering as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.inherited_queries].into_iter().next()
        {
            *f = features.inherited_queries as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_inherited_viewport_scissor_nv
            .as_mut()
            .map(|s| &mut s.inherited_viewport_scissor2_d)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.inherited_viewport_scissor2_d as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.inline_uniform_block),
            self.features_inline_uniform_block.as_mut().map(|s| &mut s.inline_uniform_block),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.inline_uniform_block as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_invocation_mask_huawei.as_mut().map(|s| &mut s.invocation_mask)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.invocation_mask as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.large_points].into_iter().next() {
            *f = features.large_points as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_legacy_dithering_ext.as_mut().map(|s| &mut s.legacy_dithering)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.legacy_dithering as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_linear_color_attachment_nv
            .as_mut()
            .map(|s| &mut s.linear_color_attachment)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.linear_color_attachment as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.logic_op].into_iter().next() {
            *f = features.logic_op as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.maintenance4),
            self.features_maintenance4.as_mut().map(|s| &mut s.maintenance4),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.maintenance4 as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_memory_decompression_nv.as_mut().map(|s| &mut s.memory_decompression)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.memory_decompression as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_memory_priority_ext.as_mut().map(|s| &mut s.memory_priority)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.memory_priority as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_mesh_shader_ext.as_mut().map(|s| &mut s.mesh_shader),
            self.features_mesh_shader_nv.as_mut().map(|s| &mut s.mesh_shader),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.mesh_shader as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_mesh_shader_ext.as_mut().map(|s| &mut s.mesh_shader_queries)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.mesh_shader_queries as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_opacity_micromap_ext.as_mut().map(|s| &mut s.micromap)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.micromap as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_opacity_micromap_ext.as_mut().map(|s| &mut s.micromap_capture_replay)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.micromap_capture_replay as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_opacity_micromap_ext.as_mut().map(|s| &mut s.micromap_host_commands)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.micromap_host_commands as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_image_view_min_lod_ext.as_mut().map(|s| &mut s.min_lod)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.min_lod as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_multi_draw_ext.as_mut().map(|s| &mut s.multi_draw)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.multi_draw as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.multi_draw_indirect].into_iter().next()
        {
            *f = features.multi_draw_indirect as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.multi_viewport].into_iter().next() {
            *f = features.multi_viewport as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_portability_subset_khr.as_mut().map(|s| &mut s.multisample_array_image)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.multisample_array_image as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_multisampled_render_to_single_sampled_ext
            .as_mut()
            .map(|s| &mut s.multisampled_render_to_single_sampled)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.multisampled_render_to_single_sampled as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan11.as_mut().map(|s| &mut s.multiview),
            self.features_multiview.as_mut().map(|s| &mut s.multiview),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.multiview as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan11.as_mut().map(|s| &mut s.multiview_geometry_shader),
            self.features_multiview.as_mut().map(|s| &mut s.multiview_geometry_shader),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.multiview_geometry_shader as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_mesh_shader_ext.as_mut().map(|s| &mut s.multiview_mesh_shader)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.multiview_mesh_shader as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_multiview_per_view_viewports_qcom
            .as_mut()
            .map(|s| &mut s.multiview_per_view_viewports)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.multiview_per_view_viewports as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan11.as_mut().map(|s| &mut s.multiview_tessellation_shader),
            self.features_multiview.as_mut().map(|s| &mut s.multiview_tessellation_shader),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.multiview_tessellation_shader as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_portability_subset_khr
            .as_mut()
            .map(|s| &mut s.mutable_comparison_samplers)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.mutable_comparison_samplers as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_mutable_descriptor_type_ext
            .as_mut()
            .map(|s| &mut s.mutable_descriptor_type)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.mutable_descriptor_type as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_shading_rate_enums_nv
            .as_mut()
            .map(|s| &mut s.no_invocation_fragment_shading_rates)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.no_invocation_fragment_shading_rates as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_non_seamless_cube_map_ext.as_mut().map(|s| &mut s.non_seamless_cube_map)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.non_seamless_cube_map as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_robustness2_ext.as_mut().map(|s| &mut s.null_descriptor)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.null_descriptor as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.occlusion_query_precise].into_iter().next()
        {
            *f = features.occlusion_query_precise as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_optical_flow_nv.as_mut().map(|s| &mut s.optical_flow)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.optical_flow as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_pageable_device_local_memory_ext
            .as_mut()
            .map(|s| &mut s.pageable_device_local_memory)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.pageable_device_local_memory as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_performance_query_khr
            .as_mut()
            .map(|s| &mut s.performance_counter_multiple_query_pools)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.performance_counter_multiple_query_pools as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_performance_query_khr
            .as_mut()
            .map(|s| &mut s.performance_counter_query_pools)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.performance_counter_query_pools as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.pipeline_creation_cache_control),
            self.features_pipeline_creation_cache_control
                .as_mut()
                .map(|s| &mut s.pipeline_creation_cache_control),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.pipeline_creation_cache_control as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_pipeline_executable_properties_khr
            .as_mut()
            .map(|s| &mut s.pipeline_executable_info)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.pipeline_executable_info as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_shading_rate_khr
            .as_mut()
            .map(|s| &mut s.pipeline_fragment_shading_rate)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.pipeline_fragment_shading_rate as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_pipeline_properties_ext
            .as_mut()
            .map(|s| &mut s.pipeline_properties_identifier)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.pipeline_properties_identifier as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_pipeline_protected_access_ext
            .as_mut()
            .map(|s| &mut s.pipeline_protected_access)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.pipeline_protected_access as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_pipeline_robustness_ext.as_mut().map(|s| &mut s.pipeline_robustness)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.pipeline_robustness as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.pipeline_statistics_query].into_iter().next()
        {
            *f = features.pipeline_statistics_query as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_portability_subset_khr.as_mut().map(|s| &mut s.point_polygons)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.point_polygons as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_present_barrier_nv.as_mut().map(|s| &mut s.present_barrier)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.present_barrier as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_present_id_khr.as_mut().map(|s| &mut s.present_id)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.present_id as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_present_wait_khr.as_mut().map(|s| &mut s.present_wait)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.present_wait as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_shading_rate_khr
            .as_mut()
            .map(|s| &mut s.primitive_fragment_shading_rate)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.primitive_fragment_shading_rate as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_mesh_shader_ext
            .as_mut()
            .map(|s| &mut s.primitive_fragment_shading_rate_mesh_shader)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.primitive_fragment_shading_rate_mesh_shader as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_primitive_topology_list_restart_ext
            .as_mut()
            .map(|s| &mut s.primitive_topology_list_restart)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.primitive_topology_list_restart as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_primitive_topology_list_restart_ext
            .as_mut()
            .map(|s| &mut s.primitive_topology_patch_list_restart)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.primitive_topology_patch_list_restart as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_primitives_generated_query_ext
            .as_mut()
            .map(|s| &mut s.primitives_generated_query)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.primitives_generated_query as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_primitives_generated_query_ext
            .as_mut()
            .map(|s| &mut s.primitives_generated_query_with_non_zero_streams)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.primitives_generated_query_with_non_zero_streams as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_primitives_generated_query_ext
            .as_mut()
            .map(|s| &mut s.primitives_generated_query_with_rasterizer_discard)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.primitives_generated_query_with_rasterizer_discard as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.private_data),
            self.features_private_data.as_mut().map(|s| &mut s.private_data),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.private_data as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan11.as_mut().map(|s| &mut s.protected_memory),
            self.features_protected_memory.as_mut().map(|s| &mut s.protected_memory),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.protected_memory as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_provoking_vertex_ext.as_mut().map(|s| &mut s.provoking_vertex_last)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.provoking_vertex_last as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_rasterization_order_attachment_access_ext
            .as_mut()
            .map(|s| &mut s.rasterization_order_color_attachment_access)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.rasterization_order_color_attachment_access as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_rasterization_order_attachment_access_ext
            .as_mut()
            .map(|s| &mut s.rasterization_order_depth_attachment_access)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.rasterization_order_depth_attachment_access as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_rasterization_order_attachment_access_ext
            .as_mut()
            .map(|s| &mut s.rasterization_order_stencil_attachment_access)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.rasterization_order_stencil_attachment_access as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_ray_query_khr.as_mut().map(|s| &mut s.ray_query)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.ray_query as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_ray_tracing_invocation_reorder_nv
            .as_mut()
            .map(|s| &mut s.ray_tracing_invocation_reorder)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.ray_tracing_invocation_reorder as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_ray_tracing_maintenance1_khr
            .as_mut()
            .map(|s| &mut s.ray_tracing_maintenance1)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.ray_tracing_maintenance1 as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_ray_tracing_motion_blur_nv
            .as_mut()
            .map(|s| &mut s.ray_tracing_motion_blur)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.ray_tracing_motion_blur as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_ray_tracing_motion_blur_nv
            .as_mut()
            .map(|s| &mut s.ray_tracing_motion_blur_pipeline_trace_rays_indirect)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.ray_tracing_motion_blur_pipeline_trace_rays_indirect as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_ray_tracing_pipeline_khr.as_mut().map(|s| &mut s.ray_tracing_pipeline)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.ray_tracing_pipeline as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_ray_tracing_pipeline_khr
            .as_mut()
            .map(|s| &mut s.ray_tracing_pipeline_shader_group_handle_capture_replay)]
        .into_iter()
        .flatten()
        .next()
        {
            *f =
                features.ray_tracing_pipeline_shader_group_handle_capture_replay as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_ray_tracing_pipeline_khr
            .as_mut()
            .map(|s| &mut s.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed
                as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_ray_tracing_pipeline_khr
            .as_mut()
            .map(|s| &mut s.ray_tracing_pipeline_trace_rays_indirect)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.ray_tracing_pipeline_trace_rays_indirect as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_ray_tracing_maintenance1_khr
            .as_mut()
            .map(|s| &mut s.ray_tracing_pipeline_trace_rays_indirect2)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.ray_tracing_pipeline_trace_rays_indirect2 as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_ray_tracing_pipeline_khr
            .as_mut()
            .map(|s| &mut s.ray_traversal_primitive_culling)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.ray_traversal_primitive_culling as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_line_rasterization_ext.as_mut().map(|s| &mut s.rectangular_lines)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.rectangular_lines as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_address_binding_report_ext
            .as_mut()
            .map(|s| &mut s.report_address_binding)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.report_address_binding as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_representative_fragment_test_nv
            .as_mut()
            .map(|s| &mut s.representative_fragment_test)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.representative_fragment_test as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.robust_buffer_access].into_iter().next()
        {
            *f = features.robust_buffer_access as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_robustness2_ext.as_mut().map(|s| &mut s.robust_buffer_access2)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.robust_buffer_access2 as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.robust_image_access),
            self.features_image_robustness.as_mut().map(|s| &mut s.robust_image_access),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.robust_image_access as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_robustness2_ext.as_mut().map(|s| &mut s.robust_image_access2)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.robust_image_access2 as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.runtime_descriptor_array),
            self.features_descriptor_indexing.as_mut().map(|s| &mut s.runtime_descriptor_array),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.runtime_descriptor_array as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.sample_rate_shading].into_iter().next()
        {
            *f = features.sample_rate_shading as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_image2_d_view_of3_d_ext.as_mut().map(|s| &mut s.sampler2_d_view_of3_d)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.sampler2_d_view_of3_d as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.sampler_anisotropy].into_iter().next()
        {
            *f = features.sampler_anisotropy as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_vulkan12.as_mut().map(|s| &mut s.sampler_filter_minmax)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.sampler_filter_minmax as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_portability_subset_khr.as_mut().map(|s| &mut s.sampler_mip_lod_bias)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.sampler_mip_lod_bias as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_vulkan12.as_mut().map(|s| &mut s.sampler_mirror_clamp_to_edge)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.sampler_mirror_clamp_to_edge as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan11.as_mut().map(|s| &mut s.sampler_ycbcr_conversion),
            self.features_sampler_ycbcr_conversion
                .as_mut()
                .map(|s| &mut s.sampler_ycbcr_conversion),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.sampler_ycbcr_conversion as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.scalar_block_layout),
            self.features_scalar_block_layout.as_mut().map(|s| &mut s.scalar_block_layout),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.scalar_block_layout as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.separate_depth_stencil_layouts),
            self.features_separate_depth_stencil_layouts
                .as_mut()
                .map(|s| &mut s.separate_depth_stencil_layouts),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.separate_depth_stencil_layouts as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_portability_subset_khr
            .as_mut()
            .map(|s| &mut s.separate_stencil_mask_ref)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.separate_stencil_mask_ref as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float2_ext
            .as_mut()
            .map(|s| &mut s.shader_buffer_float16_atomic_add)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_buffer_float16_atomic_add as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float2_ext
            .as_mut()
            .map(|s| &mut s.shader_buffer_float16_atomic_min_max)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_buffer_float16_atomic_min_max as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float2_ext
            .as_mut()
            .map(|s| &mut s.shader_buffer_float16_atomics)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_buffer_float16_atomics as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float_ext
            .as_mut()
            .map(|s| &mut s.shader_buffer_float32_atomic_add)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_buffer_float32_atomic_add as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float2_ext
            .as_mut()
            .map(|s| &mut s.shader_buffer_float32_atomic_min_max)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_buffer_float32_atomic_min_max as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float_ext
            .as_mut()
            .map(|s| &mut s.shader_buffer_float32_atomics)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_buffer_float32_atomics as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float_ext
            .as_mut()
            .map(|s| &mut s.shader_buffer_float64_atomic_add)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_buffer_float64_atomic_add as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float2_ext
            .as_mut()
            .map(|s| &mut s.shader_buffer_float64_atomic_min_max)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_buffer_float64_atomic_min_max as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float_ext
            .as_mut()
            .map(|s| &mut s.shader_buffer_float64_atomics)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_buffer_float64_atomics as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.shader_buffer_int64_atomics),
            self.features_shader_atomic_int64.as_mut().map(|s| &mut s.shader_buffer_int64_atomics),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_buffer_int64_atomics as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_clip_distance].into_iter().next()
        {
            *f = features.shader_clip_distance as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_shader_core_builtins_arm.as_mut().map(|s| &mut s.shader_core_builtins)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.shader_core_builtins as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_cull_distance].into_iter().next()
        {
            *f = features.shader_cull_distance as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.shader_demote_to_helper_invocation),
            self.features_shader_demote_to_helper_invocation
                .as_mut()
                .map(|s| &mut s.shader_demote_to_helper_invocation),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_demote_to_helper_invocation as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_shader_clock_khr.as_mut().map(|s| &mut s.shader_device_clock)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.shader_device_clock as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan11.as_mut().map(|s| &mut s.shader_draw_parameters),
            self.features_shader_draw_parameters.as_mut().map(|s| &mut s.shader_draw_parameters),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_draw_parameters as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_early_and_late_fragment_tests_amd
            .as_mut()
            .map(|s| &mut s.shader_early_and_late_fragment_tests)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_early_and_late_fragment_tests as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.shader_float16),
            self.features_shader_float16_int8.as_mut().map(|s| &mut s.shader_float16),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_float16 as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.shader_float64].into_iter().next() {
            *f = features.shader_float64 as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float_ext
            .as_mut()
            .map(|s| &mut s.shader_image_float32_atomic_add)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_image_float32_atomic_add as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float2_ext
            .as_mut()
            .map(|s| &mut s.shader_image_float32_atomic_min_max)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_image_float32_atomic_min_max as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float_ext
            .as_mut()
            .map(|s| &mut s.shader_image_float32_atomics)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_image_float32_atomics as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_image_gather_extended].into_iter().next()
        {
            *f = features.shader_image_gather_extended as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_image_atomic_int64_ext
            .as_mut()
            .map(|s| &mut s.shader_image_int64_atomics)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_image_int64_atomics as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.shader_input_attachment_array_dynamic_indexing),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.shader_input_attachment_array_dynamic_indexing),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_input_attachment_array_dynamic_indexing as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.shader_input_attachment_array_non_uniform_indexing),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.shader_input_attachment_array_non_uniform_indexing),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_input_attachment_array_non_uniform_indexing as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.shader_int16].into_iter().next() {
            *f = features.shader_int16 as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.shader_int64].into_iter().next() {
            *f = features.shader_int64 as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.shader_int8),
            self.features_shader_float16_int8.as_mut().map(|s| &mut s.shader_int8),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_int8 as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.shader_integer_dot_product),
            self.features_shader_integer_dot_product
                .as_mut()
                .map(|s| &mut s.shader_integer_dot_product),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_integer_dot_product as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_integer_functions2_intel
            .as_mut()
            .map(|s| &mut s.shader_integer_functions2)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_integer_functions2 as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_module_identifier_ext
            .as_mut()
            .map(|s| &mut s.shader_module_identifier)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_module_identifier as ash::vk::Bool32;
        }
        if let Some(f) = [self.features_vulkan12.as_mut().map(|s| &mut s.shader_output_layer)]
            .into_iter()
            .flatten()
            .next()
        {
            *f = features.shader_output_layer as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_vulkan12.as_mut().map(|s| &mut s.shader_output_viewport_index)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.shader_output_viewport_index as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_resource_min_lod].into_iter().next()
        {
            *f = features.shader_resource_min_lod as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_resource_residency].into_iter().next()
        {
            *f = features.shader_resource_residency as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_portability_subset_khr
            .as_mut()
            .map(|s| &mut s.shader_sample_rate_interpolation_functions)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_sample_rate_interpolation_functions as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_sampled_image_array_dynamic_indexing]
                .into_iter()
                .next()
        {
            *f = features.shader_sampled_image_array_dynamic_indexing as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.shader_sampled_image_array_non_uniform_indexing),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.shader_sampled_image_array_non_uniform_indexing),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_sampled_image_array_non_uniform_indexing as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float2_ext
            .as_mut()
            .map(|s| &mut s.shader_shared_float16_atomic_add)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_shared_float16_atomic_add as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float2_ext
            .as_mut()
            .map(|s| &mut s.shader_shared_float16_atomic_min_max)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_shared_float16_atomic_min_max as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float2_ext
            .as_mut()
            .map(|s| &mut s.shader_shared_float16_atomics)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_shared_float16_atomics as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float_ext
            .as_mut()
            .map(|s| &mut s.shader_shared_float32_atomic_add)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_shared_float32_atomic_add as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float2_ext
            .as_mut()
            .map(|s| &mut s.shader_shared_float32_atomic_min_max)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_shared_float32_atomic_min_max as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float_ext
            .as_mut()
            .map(|s| &mut s.shader_shared_float32_atomics)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_shared_float32_atomics as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float_ext
            .as_mut()
            .map(|s| &mut s.shader_shared_float64_atomic_add)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_shared_float64_atomic_add as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float2_ext
            .as_mut()
            .map(|s| &mut s.shader_shared_float64_atomic_min_max)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_shared_float64_atomic_min_max as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float_ext
            .as_mut()
            .map(|s| &mut s.shader_shared_float64_atomics)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_shared_float64_atomics as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.shader_shared_int64_atomics),
            self.features_shader_atomic_int64.as_mut().map(|s| &mut s.shader_shared_int64_atomics),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_shared_int64_atomics as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_shader_sm_builtins_nv.as_mut().map(|s| &mut s.shader_sm_builtins)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.shader_sm_builtins as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_storage_buffer_array_dynamic_indexing]
                .into_iter()
                .next()
        {
            *f = features.shader_storage_buffer_array_dynamic_indexing as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.shader_storage_buffer_array_non_uniform_indexing),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.shader_storage_buffer_array_non_uniform_indexing),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_storage_buffer_array_non_uniform_indexing as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_storage_image_array_dynamic_indexing]
                .into_iter()
                .next()
        {
            *f = features.shader_storage_image_array_dynamic_indexing as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.shader_storage_image_array_non_uniform_indexing),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.shader_storage_image_array_non_uniform_indexing),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_storage_image_array_non_uniform_indexing as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_storage_image_extended_formats]
                .into_iter()
                .next()
        {
            *f = features.shader_storage_image_extended_formats as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.shader_storage_image_multisample]
            .into_iter()
            .next()
        {
            *f = features.shader_storage_image_multisample as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_storage_image_read_without_format]
                .into_iter()
                .next()
        {
            *f = features.shader_storage_image_read_without_format as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_storage_image_write_without_format]
                .into_iter()
                .next()
        {
            *f = features.shader_storage_image_write_without_format as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.shader_storage_texel_buffer_array_dynamic_indexing),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.shader_storage_texel_buffer_array_dynamic_indexing),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_storage_texel_buffer_array_dynamic_indexing as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.shader_storage_texel_buffer_array_non_uniform_indexing),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.shader_storage_texel_buffer_array_non_uniform_indexing),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_storage_texel_buffer_array_non_uniform_indexing as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_shader_clock_khr.as_mut().map(|s| &mut s.shader_subgroup_clock)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.shader_subgroup_clock as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.shader_subgroup_extended_types),
            self.features_shader_subgroup_extended_types
                .as_mut()
                .map(|s| &mut s.shader_subgroup_extended_types),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_subgroup_extended_types as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_subgroup_uniform_control_flow_khr
            .as_mut()
            .map(|s| &mut s.shader_subgroup_uniform_control_flow)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_subgroup_uniform_control_flow as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.shader_terminate_invocation),
            self.features_shader_terminate_invocation
                .as_mut()
                .map(|s| &mut s.shader_terminate_invocation),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_terminate_invocation as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_tessellation_and_geometry_point_size]
                .into_iter()
                .next()
        {
            *f = features.shader_tessellation_and_geometry_point_size as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.shader_uniform_buffer_array_dynamic_indexing]
                .into_iter()
                .next()
        {
            *f = features.shader_uniform_buffer_array_dynamic_indexing as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.shader_uniform_buffer_array_non_uniform_indexing),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.shader_uniform_buffer_array_non_uniform_indexing),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_uniform_buffer_array_non_uniform_indexing as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.shader_uniform_texel_buffer_array_dynamic_indexing),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.shader_uniform_texel_buffer_array_dynamic_indexing),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_uniform_texel_buffer_array_dynamic_indexing as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.shader_uniform_texel_buffer_array_non_uniform_indexing),
            self.features_descriptor_indexing
                .as_mut()
                .map(|s| &mut s.shader_uniform_texel_buffer_array_non_uniform_indexing),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_uniform_texel_buffer_array_non_uniform_indexing as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.shader_zero_initialize_workgroup_memory),
            self.features_zero_initialize_workgroup_memory
                .as_mut()
                .map(|s| &mut s.shader_zero_initialize_workgroup_memory),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shader_zero_initialize_workgroup_memory as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shading_rate_image_nv
            .as_mut()
            .map(|s| &mut s.shading_rate_coarse_sample_order)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.shading_rate_coarse_sample_order as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_shading_rate_image_nv.as_mut().map(|s| &mut s.shading_rate_image)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.shading_rate_image as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_line_rasterization_ext.as_mut().map(|s| &mut s.smooth_lines)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.smooth_lines as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.sparse_binding].into_iter().next() {
            *f = features.sparse_binding as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float_ext
            .as_mut()
            .map(|s| &mut s.sparse_image_float32_atomic_add)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.sparse_image_float32_atomic_add as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float2_ext
            .as_mut()
            .map(|s| &mut s.sparse_image_float32_atomic_min_max)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.sparse_image_float32_atomic_min_max as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_atomic_float_ext
            .as_mut()
            .map(|s| &mut s.sparse_image_float32_atomics)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.sparse_image_float32_atomics as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_shader_image_atomic_int64_ext
            .as_mut()
            .map(|s| &mut s.sparse_image_int64_atomics)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.sparse_image_int64_atomics as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.sparse_residency16_samples].into_iter().next()
        {
            *f = features.sparse_residency16_samples as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.sparse_residency2_samples].into_iter().next()
        {
            *f = features.sparse_residency2_samples as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.sparse_residency4_samples].into_iter().next()
        {
            *f = features.sparse_residency4_samples as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.sparse_residency8_samples].into_iter().next()
        {
            *f = features.sparse_residency8_samples as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.sparse_residency_aliased].into_iter().next()
        {
            *f = features.sparse_residency_aliased as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.sparse_residency_buffer].into_iter().next()
        {
            *f = features.sparse_residency_buffer as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.sparse_residency_image2_d].into_iter().next()
        {
            *f = features.sparse_residency_image2_d as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.sparse_residency_image3_d].into_iter().next()
        {
            *f = features.sparse_residency_image3_d as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_line_rasterization_ext.as_mut().map(|s| &mut s.stippled_bresenham_lines)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.stippled_bresenham_lines as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_line_rasterization_ext
            .as_mut()
            .map(|s| &mut s.stippled_rectangular_lines)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.stippled_rectangular_lines as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_line_rasterization_ext.as_mut().map(|s| &mut s.stippled_smooth_lines)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.stippled_smooth_lines as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan11.as_mut().map(|s| &mut s.storage_buffer16_bit_access),
            self.features_16bit_storage.as_mut().map(|s| &mut s.storage_buffer16_bit_access),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.storage_buffer16_bit_access as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.storage_buffer8_bit_access),
            self.features_8bit_storage.as_mut().map(|s| &mut s.storage_buffer8_bit_access),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.storage_buffer8_bit_access as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan11.as_mut().map(|s| &mut s.storage_input_output16),
            self.features_16bit_storage.as_mut().map(|s| &mut s.storage_input_output16),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.storage_input_output16 as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan11.as_mut().map(|s| &mut s.storage_push_constant16),
            self.features_16bit_storage.as_mut().map(|s| &mut s.storage_push_constant16),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.storage_push_constant16 as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.storage_push_constant8),
            self.features_8bit_storage.as_mut().map(|s| &mut s.storage_push_constant8),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.storage_push_constant8 as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_vulkan12.as_mut().map(|s| &mut s.subgroup_broadcast_dynamic_id)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.subgroup_broadcast_dynamic_id as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.subgroup_size_control),
            self.features_subgroup_size_control.as_mut().map(|s| &mut s.subgroup_size_control),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.subgroup_size_control as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_subpass_merge_feedback_ext
            .as_mut()
            .map(|s| &mut s.subpass_merge_feedback)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.subpass_merge_feedback as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_subpass_shading_huawei.as_mut().map(|s| &mut s.subpass_shading)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.subpass_shading as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_fragment_shading_rate_enums_nv
            .as_mut()
            .map(|s| &mut s.supersample_fragment_shading_rates)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.supersample_fragment_shading_rates as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_swapchain_maintenance1_ext
            .as_mut()
            .map(|s| &mut s.swapchain_maintenance1)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.swapchain_maintenance1 as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.synchronization2),
            self.features_synchronization2.as_mut().map(|s| &mut s.synchronization2),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.synchronization2 as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_mesh_shader_ext.as_mut().map(|s| &mut s.task_shader),
            self.features_mesh_shader_nv.as_mut().map(|s| &mut s.task_shader),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.task_shader as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_portability_subset_khr.as_mut().map(|s| &mut s.tessellation_isolines)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.tessellation_isolines as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_portability_subset_khr.as_mut().map(|s| &mut s.tessellation_point_mode)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.tessellation_point_mode as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.tessellation_shader].into_iter().next()
        {
            *f = features.tessellation_shader as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_texel_buffer_alignment_ext
            .as_mut()
            .map(|s| &mut s.texel_buffer_alignment)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.texel_buffer_alignment as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_image_processing_qcom.as_mut().map(|s| &mut s.texture_block_match)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.texture_block_match as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_image_processing_qcom.as_mut().map(|s| &mut s.texture_box_filter)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.texture_box_filter as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan13.as_mut().map(|s| &mut s.texture_compression_astc_hdr),
            self.features_texture_compression_astchdr
                .as_mut()
                .map(|s| &mut s.texture_compression_astc_hdr),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.texture_compression_astc_hdr as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.texture_compression_astc_ldr].into_iter().next()
        {
            *f = features.texture_compression_astc_ldr as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.texture_compression_bc].into_iter().next()
        {
            *f = features.texture_compression_bc as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.texture_compression_etc2].into_iter().next()
        {
            *f = features.texture_compression_etc2 as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_image_processing_qcom.as_mut().map(|s| &mut s.texture_sample_weighted)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.texture_sample_weighted as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_tile_properties_qcom.as_mut().map(|s| &mut s.tile_properties)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.tile_properties as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.timeline_semaphore),
            self.features_timeline_semaphore.as_mut().map(|s| &mut s.timeline_semaphore),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.timeline_semaphore as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_transform_feedback_ext.as_mut().map(|s| &mut s.transform_feedback)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.transform_feedback as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_provoking_vertex_ext
            .as_mut()
            .map(|s| &mut s.transform_feedback_preserves_provoking_vertex)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.transform_feedback_preserves_provoking_vertex as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_portability_subset_khr.as_mut().map(|s| &mut s.triangle_fans)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.triangle_fans as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan11.as_mut().map(|s| &mut s.uniform_and_storage_buffer16_bit_access),
            self.features_16bit_storage
                .as_mut()
                .map(|s| &mut s.uniform_and_storage_buffer16_bit_access),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.uniform_and_storage_buffer16_bit_access as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.uniform_and_storage_buffer8_bit_access),
            self.features_8bit_storage
                .as_mut()
                .map(|s| &mut s.uniform_and_storage_buffer8_bit_access),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.uniform_and_storage_buffer8_bit_access as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.uniform_buffer_standard_layout),
            self.features_uniform_buffer_standard_layout
                .as_mut()
                .map(|s| &mut s.uniform_buffer_standard_layout),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.uniform_buffer_standard_layout as ash::vk::Bool32;
        }
        if let Some(f) =
            [&mut self.features_vulkan10.features.variable_multisample_rate].into_iter().next()
        {
            *f = features.variable_multisample_rate as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan11.as_mut().map(|s| &mut s.variable_pointers),
            self.features_variable_pointers.as_mut().map(|s| &mut s.variable_pointers),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.variable_pointers as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan11.as_mut().map(|s| &mut s.variable_pointers_storage_buffer),
            self.features_variable_pointers
                .as_mut()
                .map(|s| &mut s.variable_pointers_storage_buffer),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.variable_pointers_storage_buffer as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_portability_subset_khr
            .as_mut()
            .map(|s| &mut s.vertex_attribute_access_beyond_stride)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.vertex_attribute_access_beyond_stride as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_vertex_attribute_divisor_ext
            .as_mut()
            .map(|s| &mut s.vertex_attribute_instance_rate_divisor)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.vertex_attribute_instance_rate_divisor as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_vertex_attribute_divisor_ext
            .as_mut()
            .map(|s| &mut s.vertex_attribute_instance_rate_zero_divisor)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.vertex_attribute_instance_rate_zero_divisor as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_vertex_input_dynamic_state_ext
            .as_mut()
            .map(|s| &mut s.vertex_input_dynamic_state)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.vertex_input_dynamic_state as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.vertex_pipeline_stores_and_atomics]
            .into_iter()
            .next()
        {
            *f = features.vertex_pipeline_stores_and_atomics as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.vulkan_memory_model),
            self.features_vulkan_memory_model.as_mut().map(|s| &mut s.vulkan_memory_model),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.vulkan_memory_model as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12
                .as_mut()
                .map(|s| &mut s.vulkan_memory_model_availability_visibility_chains),
            self.features_vulkan_memory_model
                .as_mut()
                .map(|s| &mut s.vulkan_memory_model_availability_visibility_chains),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.vulkan_memory_model_availability_visibility_chains as ash::vk::Bool32;
        }
        if let Some(f) = [
            self.features_vulkan12.as_mut().map(|s| &mut s.vulkan_memory_model_device_scope),
            self.features_vulkan_memory_model
                .as_mut()
                .map(|s| &mut s.vulkan_memory_model_device_scope),
        ]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.vulkan_memory_model_device_scope as ash::vk::Bool32;
        }
        if let Some(f) = [&mut self.features_vulkan10.features.wide_lines].into_iter().next() {
            *f = features.wide_lines as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_workgroup_memory_explicit_layout_khr
            .as_mut()
            .map(|s| &mut s.workgroup_memory_explicit_layout)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.workgroup_memory_explicit_layout as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_workgroup_memory_explicit_layout_khr
            .as_mut()
            .map(|s| &mut s.workgroup_memory_explicit_layout16_bit_access)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.workgroup_memory_explicit_layout16_bit_access as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_workgroup_memory_explicit_layout_khr
            .as_mut()
            .map(|s| &mut s.workgroup_memory_explicit_layout8_bit_access)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.workgroup_memory_explicit_layout8_bit_access as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_workgroup_memory_explicit_layout_khr
            .as_mut()
            .map(|s| &mut s.workgroup_memory_explicit_layout_scalar_block_layout)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.workgroup_memory_explicit_layout_scalar_block_layout as ash::vk::Bool32;
        }
        if let Some(f) = [self
            .features_ycbcr2_plane444_formats_ext
            .as_mut()
            .map(|s| &mut s.ycbcr2plane444_formats)]
        .into_iter()
        .flatten()
        .next()
        {
            *f = features.ycbcr2plane444_formats as ash::vk::Bool32;
        }
        if let Some(f) =
            [self.features_ycbcr_image_arrays_ext.as_mut().map(|s| &mut s.ycbcr_image_arrays)]
                .into_iter()
                .flatten()
                .next()
        {
            *f = features.ycbcr_image_arrays as ash::vk::Bool32;
        }
    }
}
impl From<&FeaturesFfi> for Features {
    fn from(features_ffi: &FeaturesFfi) -> Self {
        Features {
            acceleration_structure: [features_ffi
                .features_acceleration_structure_khr
                .map(|s| s.acceleration_structure)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            acceleration_structure_capture_replay: [features_ffi
                .features_acceleration_structure_khr
                .map(|s| s.acceleration_structure_capture_replay)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            acceleration_structure_host_commands: [features_ffi
                .features_acceleration_structure_khr
                .map(|s| s.acceleration_structure_host_commands)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            acceleration_structure_indirect_build: [features_ffi
                .features_acceleration_structure_khr
                .map(|s| s.acceleration_structure_indirect_build)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            advanced_blend_coherent_operations: [features_ffi
                .features_blend_operation_advanced_ext
                .map(|s| s.advanced_blend_coherent_operations)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            alpha_to_one: [features_ffi.features_vulkan10.features.alpha_to_one]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            amigo_profiling: [features_ffi.features_amigo_profiling_sec.map(|s| s.amigo_profiling)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            attachment_feedback_loop_layout: [features_ffi
                .features_attachment_feedback_loop_layout_ext
                .map(|s| s.attachment_feedback_loop_layout)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            attachment_fragment_shading_rate: [features_ffi
                .features_fragment_shading_rate_khr
                .map(|s| s.attachment_fragment_shading_rate)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            border_color_swizzle: [features_ffi
                .features_border_color_swizzle_ext
                .map(|s| s.border_color_swizzle)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            border_color_swizzle_from_image: [features_ffi
                .features_border_color_swizzle_ext
                .map(|s| s.border_color_swizzle_from_image)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            bresenham_lines: [features_ffi
                .features_line_rasterization_ext
                .map(|s| s.bresenham_lines)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            buffer_device_address: [
                features_ffi.features_vulkan12.map(|s| s.buffer_device_address),
                features_ffi.features_buffer_device_address.map(|s| s.buffer_device_address),
                features_ffi.features_buffer_device_address_ext.map(|s| s.buffer_device_address),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            buffer_device_address_capture_replay: [
                features_ffi.features_vulkan12.map(|s| s.buffer_device_address_capture_replay),
                features_ffi
                    .features_buffer_device_address
                    .map(|s| s.buffer_device_address_capture_replay),
                features_ffi
                    .features_buffer_device_address_ext
                    .map(|s| s.buffer_device_address_capture_replay),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            buffer_device_address_multi_device: [
                features_ffi.features_vulkan12.map(|s| s.buffer_device_address_multi_device),
                features_ffi
                    .features_buffer_device_address
                    .map(|s| s.buffer_device_address_multi_device),
                features_ffi
                    .features_buffer_device_address_ext
                    .map(|s| s.buffer_device_address_multi_device),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            color_write_enable: [features_ffi
                .features_color_write_enable_ext
                .map(|s| s.color_write_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            compute_derivative_group_linear: [features_ffi
                .features_compute_shader_derivatives_nv
                .map(|s| s.compute_derivative_group_linear)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            compute_derivative_group_quads: [features_ffi
                .features_compute_shader_derivatives_nv
                .map(|s| s.compute_derivative_group_quads)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            compute_full_subgroups: [
                features_ffi.features_vulkan13.map(|s| s.compute_full_subgroups),
                features_ffi.features_subgroup_size_control.map(|s| s.compute_full_subgroups),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            conditional_rendering: [features_ffi
                .features_conditional_rendering_ext
                .map(|s| s.conditional_rendering)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            constant_alpha_color_blend_factors: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.constant_alpha_color_blend_factors)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            cooperative_matrix: [features_ffi
                .features_cooperative_matrix_nv
                .map(|s| s.cooperative_matrix)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            cooperative_matrix_robust_buffer_access: [features_ffi
                .features_cooperative_matrix_nv
                .map(|s| s.cooperative_matrix_robust_buffer_access)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            corner_sampled_image: [features_ffi
                .features_corner_sampled_image_nv
                .map(|s| s.corner_sampled_image)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            coverage_reduction_mode: [features_ffi
                .features_coverage_reduction_mode_nv
                .map(|s| s.coverage_reduction_mode)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            custom_border_color_without_format: [features_ffi
                .features_custom_border_color_ext
                .map(|s| s.custom_border_color_without_format)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            custom_border_colors: [features_ffi
                .features_custom_border_color_ext
                .map(|s| s.custom_border_colors)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            decode_mode_shared_exponent: [features_ffi
                .features_astc_decode_ext
                .map(|s| s.decode_mode_shared_exponent)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            dedicated_allocation_image_aliasing: [features_ffi
                .features_dedicated_allocation_image_aliasing_nv
                .map(|s| s.dedicated_allocation_image_aliasing)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            depth_bias_clamp: [features_ffi.features_vulkan10.features.depth_bias_clamp]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            depth_bounds: [features_ffi.features_vulkan10.features.depth_bounds]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            depth_clamp: [features_ffi.features_vulkan10.features.depth_clamp]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            depth_clamp_zero_one: [features_ffi
                .features_depth_clamp_zero_one_ext
                .map(|s| s.depth_clamp_zero_one)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            depth_clip_control: [features_ffi
                .features_depth_clip_control_ext
                .map(|s| s.depth_clip_control)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            depth_clip_enable: [features_ffi
                .features_depth_clip_enable_ext
                .map(|s| s.depth_clip_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_binding_acceleration_structure_update_after_bind: [features_ffi
                .features_acceleration_structure_khr
                .map(|s| s.descriptor_binding_acceleration_structure_update_after_bind)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_binding_inline_uniform_block_update_after_bind: [
                features_ffi
                    .features_vulkan13
                    .map(|s| s.descriptor_binding_inline_uniform_block_update_after_bind),
                features_ffi
                    .features_inline_uniform_block
                    .map(|s| s.descriptor_binding_inline_uniform_block_update_after_bind),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_binding_partially_bound: [
                features_ffi.features_vulkan12.map(|s| s.descriptor_binding_partially_bound),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.descriptor_binding_partially_bound),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_binding_sampled_image_update_after_bind: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.descriptor_binding_sampled_image_update_after_bind),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.descriptor_binding_sampled_image_update_after_bind),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_binding_storage_buffer_update_after_bind: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.descriptor_binding_storage_buffer_update_after_bind),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.descriptor_binding_storage_buffer_update_after_bind),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_binding_storage_image_update_after_bind: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.descriptor_binding_storage_image_update_after_bind),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.descriptor_binding_storage_image_update_after_bind),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_binding_storage_texel_buffer_update_after_bind: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.descriptor_binding_storage_texel_buffer_update_after_bind),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.descriptor_binding_storage_texel_buffer_update_after_bind),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_binding_uniform_buffer_update_after_bind: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.descriptor_binding_uniform_buffer_update_after_bind),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.descriptor_binding_uniform_buffer_update_after_bind),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_binding_uniform_texel_buffer_update_after_bind: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.descriptor_binding_uniform_texel_buffer_update_after_bind),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.descriptor_binding_uniform_texel_buffer_update_after_bind),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_binding_update_unused_while_pending: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.descriptor_binding_update_unused_while_pending),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.descriptor_binding_update_unused_while_pending),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_binding_variable_descriptor_count: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.descriptor_binding_variable_descriptor_count),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.descriptor_binding_variable_descriptor_count),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_buffer: [features_ffi
                .features_descriptor_buffer_ext
                .map(|s| s.descriptor_buffer)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_buffer_capture_replay: [features_ffi
                .features_descriptor_buffer_ext
                .map(|s| s.descriptor_buffer_capture_replay)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_buffer_image_layout_ignored: [features_ffi
                .features_descriptor_buffer_ext
                .map(|s| s.descriptor_buffer_image_layout_ignored)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_buffer_push_descriptors: [features_ffi
                .features_descriptor_buffer_ext
                .map(|s| s.descriptor_buffer_push_descriptors)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            descriptor_indexing: [features_ffi.features_vulkan12.map(|s| s.descriptor_indexing)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            descriptor_set_host_mapping: [features_ffi
                .features_descriptor_set_host_mapping_valve
                .map(|s| s.descriptor_set_host_mapping)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            device_coherent_memory: [features_ffi
                .features_coherent_memory_amd
                .map(|s| s.device_coherent_memory)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            device_fault: [features_ffi.features_fault_ext.map(|s| s.device_fault)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            device_fault_vendor_binary: [features_ffi
                .features_fault_ext
                .map(|s| s.device_fault_vendor_binary)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            device_generated_commands: [features_ffi
                .features_device_generated_commands_nv
                .map(|s| s.device_generated_commands)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            device_memory_report: [features_ffi
                .features_device_memory_report_ext
                .map(|s| s.device_memory_report)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            diagnostics_config: [features_ffi
                .features_diagnostics_config_nv
                .map(|s| s.diagnostics_config)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            draw_indirect_count: [features_ffi.features_vulkan12.map(|s| s.draw_indirect_count)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            draw_indirect_first_instance: [features_ffi
                .features_vulkan10
                .features
                .draw_indirect_first_instance]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            dual_src_blend: [features_ffi.features_vulkan10.features.dual_src_blend]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            dynamic_rendering: [
                features_ffi.features_vulkan13.map(|s| s.dynamic_rendering),
                features_ffi.features_dynamic_rendering.map(|s| s.dynamic_rendering),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            events: [features_ffi.features_portability_subset_khr.map(|s| s.events)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            exclusive_scissor: [features_ffi
                .features_exclusive_scissor_nv
                .map(|s| s.exclusive_scissor)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state: [features_ffi
                .features_extended_dynamic_state_ext
                .map(|s| s.extended_dynamic_state)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state2: [features_ffi
                .features_extended_dynamic_state2_ext
                .map(|s| s.extended_dynamic_state2)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state2_logic_op: [features_ffi
                .features_extended_dynamic_state2_ext
                .map(|s| s.extended_dynamic_state2_logic_op)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state2_patch_control_points: [features_ffi
                .features_extended_dynamic_state2_ext
                .map(|s| s.extended_dynamic_state2_patch_control_points)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_alpha_to_coverage_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_alpha_to_coverage_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_alpha_to_one_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_alpha_to_one_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_color_blend_advanced: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_color_blend_advanced)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_color_blend_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_color_blend_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_color_blend_equation: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_color_blend_equation)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_color_write_mask: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_color_write_mask)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_conservative_rasterization_mode: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_conservative_rasterization_mode)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_coverage_modulation_mode: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_coverage_modulation_mode)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_coverage_modulation_table: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_coverage_modulation_table)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_coverage_modulation_table_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_coverage_modulation_table_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_coverage_reduction_mode: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_coverage_reduction_mode)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_coverage_to_color_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_coverage_to_color_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_coverage_to_color_location: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_coverage_to_color_location)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_depth_clamp_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_depth_clamp_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_depth_clip_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_depth_clip_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_depth_clip_negative_one_to_one: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_depth_clip_negative_one_to_one)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_extra_primitive_overestimation_size: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_extra_primitive_overestimation_size)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_line_rasterization_mode: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_line_rasterization_mode)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_line_stipple_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_line_stipple_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_logic_op_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_logic_op_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_polygon_mode: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_polygon_mode)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_provoking_vertex_mode: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_provoking_vertex_mode)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_rasterization_samples: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_rasterization_samples)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_rasterization_stream: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_rasterization_stream)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_representative_fragment_test_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_representative_fragment_test_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_sample_locations_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_sample_locations_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_sample_mask: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_sample_mask)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_shading_rate_image_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_shading_rate_image_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_tessellation_domain_origin: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_tessellation_domain_origin)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_viewport_swizzle: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_viewport_swizzle)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            extended_dynamic_state3_viewport_w_scaling_enable: [features_ffi
                .features_extended_dynamic_state3_ext
                .map(|s| s.extended_dynamic_state3_viewport_w_scaling_enable)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            external_memory_rdma: [features_ffi
                .features_external_memory_rdma_nv
                .map(|s| s.external_memory_rdma)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            fill_mode_non_solid: [features_ffi.features_vulkan10.features.fill_mode_non_solid]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            format_a4b4g4r4: [features_ffi.features_4444formats_ext.map(|s| s.format_a4b4g4r4)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            format_a4r4g4b4: [features_ffi.features_4444formats_ext.map(|s| s.format_a4r4g4b4)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            format_rgba10x6_without_y_cb_cr_sampler: [features_ffi
                .features_rgba10x6_formats_ext
                .map(|s| s.format_rgba10x6_without_y_cb_cr_sampler)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            fragment_density_map: [features_ffi
                .features_fragment_density_map_ext
                .map(|s| s.fragment_density_map)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            fragment_density_map_deferred: [features_ffi
                .features_fragment_density_map2_ext
                .map(|s| s.fragment_density_map_deferred)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            fragment_density_map_dynamic: [features_ffi
                .features_fragment_density_map_ext
                .map(|s| s.fragment_density_map_dynamic)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            fragment_density_map_non_subsampled_images: [features_ffi
                .features_fragment_density_map_ext
                .map(|s| s.fragment_density_map_non_subsampled_images)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            fragment_density_map_offset: [features_ffi
                .features_fragment_density_map_offset_qcom
                .map(|s| s.fragment_density_map_offset)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            fragment_shader_barycentric: [features_ffi
                .features_fragment_shader_barycentric_khr
                .map(|s| s.fragment_shader_barycentric)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            fragment_shader_pixel_interlock: [features_ffi
                .features_fragment_shader_interlock_ext
                .map(|s| s.fragment_shader_pixel_interlock)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            fragment_shader_sample_interlock: [features_ffi
                .features_fragment_shader_interlock_ext
                .map(|s| s.fragment_shader_sample_interlock)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            fragment_shader_shading_rate_interlock: [features_ffi
                .features_fragment_shader_interlock_ext
                .map(|s| s.fragment_shader_shading_rate_interlock)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            fragment_shading_rate_enums: [features_ffi
                .features_fragment_shading_rate_enums_nv
                .map(|s| s.fragment_shading_rate_enums)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            fragment_stores_and_atomics: [features_ffi
                .features_vulkan10
                .features
                .fragment_stores_and_atomics]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            full_draw_index_uint32: [features_ffi
                .features_vulkan10
                .features
                .full_draw_index_uint32]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            geometry_shader: [features_ffi.features_vulkan10.features.geometry_shader]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            geometry_streams: [features_ffi
                .features_transform_feedback_ext
                .map(|s| s.geometry_streams)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            global_priority_query: [features_ffi
                .features_global_priority_query_khr
                .map(|s| s.global_priority_query)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            graphics_pipeline_library: [features_ffi
                .features_graphics_pipeline_library_ext
                .map(|s| s.graphics_pipeline_library)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            host_query_reset: [
                features_ffi.features_vulkan12.map(|s| s.host_query_reset),
                features_ffi.features_host_query_reset.map(|s| s.host_query_reset),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            image2_d_view_of3_d: [features_ffi
                .features_image2_d_view_of3_d_ext
                .map(|s| s.image2_d_view_of3_d)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            image_compression_control: [features_ffi
                .features_image_compression_control_ext
                .map(|s| s.image_compression_control)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            image_compression_control_swapchain: [features_ffi
                .features_image_compression_control_swapchain_ext
                .map(|s| s.image_compression_control_swapchain)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            image_cube_array: [features_ffi.features_vulkan10.features.image_cube_array]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            image_footprint: [features_ffi
                .features_shader_image_footprint_nv
                .map(|s| s.image_footprint)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            image_view2_d_on3_d_image: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.image_view2_d_on3_d_image)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            image_view_format_reinterpretation: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.image_view_format_reinterpretation)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            image_view_format_swizzle: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.image_view_format_swizzle)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            imageless_framebuffer: [
                features_ffi.features_vulkan12.map(|s| s.imageless_framebuffer),
                features_ffi.features_imageless_framebuffer.map(|s| s.imageless_framebuffer),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            independent_blend: [features_ffi.features_vulkan10.features.independent_blend]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            index_type_uint8: [features_ffi
                .features_index_type_uint8_ext
                .map(|s| s.index_type_uint8)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            indirect_copy: [features_ffi.features_copy_memory_indirect_nv.map(|s| s.indirect_copy)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            inherited_conditional_rendering: [features_ffi
                .features_conditional_rendering_ext
                .map(|s| s.inherited_conditional_rendering)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            inherited_queries: [features_ffi.features_vulkan10.features.inherited_queries]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            inherited_viewport_scissor2_d: [features_ffi
                .features_inherited_viewport_scissor_nv
                .map(|s| s.inherited_viewport_scissor2_d)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            inline_uniform_block: [
                features_ffi.features_vulkan13.map(|s| s.inline_uniform_block),
                features_ffi.features_inline_uniform_block.map(|s| s.inline_uniform_block),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            invocation_mask: [features_ffi
                .features_invocation_mask_huawei
                .map(|s| s.invocation_mask)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            large_points: [features_ffi.features_vulkan10.features.large_points]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            legacy_dithering: [features_ffi
                .features_legacy_dithering_ext
                .map(|s| s.legacy_dithering)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            linear_color_attachment: [features_ffi
                .features_linear_color_attachment_nv
                .map(|s| s.linear_color_attachment)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            logic_op: [features_ffi.features_vulkan10.features.logic_op]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            maintenance4: [
                features_ffi.features_vulkan13.map(|s| s.maintenance4),
                features_ffi.features_maintenance4.map(|s| s.maintenance4),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            memory_decompression: [features_ffi
                .features_memory_decompression_nv
                .map(|s| s.memory_decompression)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            memory_priority: [features_ffi.features_memory_priority_ext.map(|s| s.memory_priority)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            mesh_shader: [
                features_ffi.features_mesh_shader_ext.map(|s| s.mesh_shader),
                features_ffi.features_mesh_shader_nv.map(|s| s.mesh_shader),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            mesh_shader_queries: [features_ffi
                .features_mesh_shader_ext
                .map(|s| s.mesh_shader_queries)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            micromap: [features_ffi.features_opacity_micromap_ext.map(|s| s.micromap)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            micromap_capture_replay: [features_ffi
                .features_opacity_micromap_ext
                .map(|s| s.micromap_capture_replay)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            micromap_host_commands: [features_ffi
                .features_opacity_micromap_ext
                .map(|s| s.micromap_host_commands)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            min_lod: [features_ffi.features_image_view_min_lod_ext.map(|s| s.min_lod)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            multi_draw: [features_ffi.features_multi_draw_ext.map(|s| s.multi_draw)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            multi_draw_indirect: [features_ffi.features_vulkan10.features.multi_draw_indirect]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            multi_viewport: [features_ffi.features_vulkan10.features.multi_viewport]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            multisample_array_image: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.multisample_array_image)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            multisampled_render_to_single_sampled: [features_ffi
                .features_multisampled_render_to_single_sampled_ext
                .map(|s| s.multisampled_render_to_single_sampled)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            multiview: [
                features_ffi.features_vulkan11.map(|s| s.multiview),
                features_ffi.features_multiview.map(|s| s.multiview),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            multiview_geometry_shader: [
                features_ffi.features_vulkan11.map(|s| s.multiview_geometry_shader),
                features_ffi.features_multiview.map(|s| s.multiview_geometry_shader),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            multiview_mesh_shader: [features_ffi
                .features_mesh_shader_ext
                .map(|s| s.multiview_mesh_shader)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            multiview_per_view_viewports: [features_ffi
                .features_multiview_per_view_viewports_qcom
                .map(|s| s.multiview_per_view_viewports)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            multiview_tessellation_shader: [
                features_ffi.features_vulkan11.map(|s| s.multiview_tessellation_shader),
                features_ffi.features_multiview.map(|s| s.multiview_tessellation_shader),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            mutable_comparison_samplers: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.mutable_comparison_samplers)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            mutable_descriptor_type: [features_ffi
                .features_mutable_descriptor_type_ext
                .map(|s| s.mutable_descriptor_type)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            no_invocation_fragment_shading_rates: [features_ffi
                .features_fragment_shading_rate_enums_nv
                .map(|s| s.no_invocation_fragment_shading_rates)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            non_seamless_cube_map: [features_ffi
                .features_non_seamless_cube_map_ext
                .map(|s| s.non_seamless_cube_map)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            null_descriptor: [features_ffi.features_robustness2_ext.map(|s| s.null_descriptor)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            occlusion_query_precise: [features_ffi
                .features_vulkan10
                .features
                .occlusion_query_precise]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            optical_flow: [features_ffi.features_optical_flow_nv.map(|s| s.optical_flow)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            pageable_device_local_memory: [features_ffi
                .features_pageable_device_local_memory_ext
                .map(|s| s.pageable_device_local_memory)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            performance_counter_multiple_query_pools: [features_ffi
                .features_performance_query_khr
                .map(|s| s.performance_counter_multiple_query_pools)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            performance_counter_query_pools: [features_ffi
                .features_performance_query_khr
                .map(|s| s.performance_counter_query_pools)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            pipeline_creation_cache_control: [
                features_ffi.features_vulkan13.map(|s| s.pipeline_creation_cache_control),
                features_ffi
                    .features_pipeline_creation_cache_control
                    .map(|s| s.pipeline_creation_cache_control),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            pipeline_executable_info: [features_ffi
                .features_pipeline_executable_properties_khr
                .map(|s| s.pipeline_executable_info)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            pipeline_fragment_shading_rate: [features_ffi
                .features_fragment_shading_rate_khr
                .map(|s| s.pipeline_fragment_shading_rate)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            pipeline_properties_identifier: [features_ffi
                .features_pipeline_properties_ext
                .map(|s| s.pipeline_properties_identifier)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            pipeline_protected_access: [features_ffi
                .features_pipeline_protected_access_ext
                .map(|s| s.pipeline_protected_access)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            pipeline_robustness: [features_ffi
                .features_pipeline_robustness_ext
                .map(|s| s.pipeline_robustness)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            pipeline_statistics_query: [features_ffi
                .features_vulkan10
                .features
                .pipeline_statistics_query]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            point_polygons: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.point_polygons)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            present_barrier: [features_ffi.features_present_barrier_nv.map(|s| s.present_barrier)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            present_id: [features_ffi.features_present_id_khr.map(|s| s.present_id)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            present_wait: [features_ffi.features_present_wait_khr.map(|s| s.present_wait)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            primitive_fragment_shading_rate: [features_ffi
                .features_fragment_shading_rate_khr
                .map(|s| s.primitive_fragment_shading_rate)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            primitive_fragment_shading_rate_mesh_shader: [features_ffi
                .features_mesh_shader_ext
                .map(|s| s.primitive_fragment_shading_rate_mesh_shader)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            primitive_topology_list_restart: [features_ffi
                .features_primitive_topology_list_restart_ext
                .map(|s| s.primitive_topology_list_restart)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            primitive_topology_patch_list_restart: [features_ffi
                .features_primitive_topology_list_restart_ext
                .map(|s| s.primitive_topology_patch_list_restart)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            primitives_generated_query: [features_ffi
                .features_primitives_generated_query_ext
                .map(|s| s.primitives_generated_query)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            primitives_generated_query_with_non_zero_streams: [features_ffi
                .features_primitives_generated_query_ext
                .map(|s| s.primitives_generated_query_with_non_zero_streams)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            primitives_generated_query_with_rasterizer_discard: [features_ffi
                .features_primitives_generated_query_ext
                .map(|s| s.primitives_generated_query_with_rasterizer_discard)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            private_data: [
                features_ffi.features_vulkan13.map(|s| s.private_data),
                features_ffi.features_private_data.map(|s| s.private_data),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            protected_memory: [
                features_ffi.features_vulkan11.map(|s| s.protected_memory),
                features_ffi.features_protected_memory.map(|s| s.protected_memory),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            provoking_vertex_last: [features_ffi
                .features_provoking_vertex_ext
                .map(|s| s.provoking_vertex_last)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            rasterization_order_color_attachment_access: [features_ffi
                .features_rasterization_order_attachment_access_ext
                .map(|s| s.rasterization_order_color_attachment_access)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            rasterization_order_depth_attachment_access: [features_ffi
                .features_rasterization_order_attachment_access_ext
                .map(|s| s.rasterization_order_depth_attachment_access)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            rasterization_order_stencil_attachment_access: [features_ffi
                .features_rasterization_order_attachment_access_ext
                .map(|s| s.rasterization_order_stencil_attachment_access)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            ray_query: [features_ffi.features_ray_query_khr.map(|s| s.ray_query)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            ray_tracing_invocation_reorder: [features_ffi
                .features_ray_tracing_invocation_reorder_nv
                .map(|s| s.ray_tracing_invocation_reorder)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            ray_tracing_maintenance1: [features_ffi
                .features_ray_tracing_maintenance1_khr
                .map(|s| s.ray_tracing_maintenance1)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            ray_tracing_motion_blur: [features_ffi
                .features_ray_tracing_motion_blur_nv
                .map(|s| s.ray_tracing_motion_blur)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            ray_tracing_motion_blur_pipeline_trace_rays_indirect: [features_ffi
                .features_ray_tracing_motion_blur_nv
                .map(|s| s.ray_tracing_motion_blur_pipeline_trace_rays_indirect)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            ray_tracing_pipeline: [features_ffi
                .features_ray_tracing_pipeline_khr
                .map(|s| s.ray_tracing_pipeline)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            ray_tracing_pipeline_shader_group_handle_capture_replay: [features_ffi
                .features_ray_tracing_pipeline_khr
                .map(|s| s.ray_tracing_pipeline_shader_group_handle_capture_replay)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: [features_ffi
                .features_ray_tracing_pipeline_khr
                .map(|s| s.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            ray_tracing_pipeline_trace_rays_indirect: [features_ffi
                .features_ray_tracing_pipeline_khr
                .map(|s| s.ray_tracing_pipeline_trace_rays_indirect)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            ray_tracing_pipeline_trace_rays_indirect2: [features_ffi
                .features_ray_tracing_maintenance1_khr
                .map(|s| s.ray_tracing_pipeline_trace_rays_indirect2)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            ray_traversal_primitive_culling: [features_ffi
                .features_ray_tracing_pipeline_khr
                .map(|s| s.ray_traversal_primitive_culling)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            rectangular_lines: [features_ffi
                .features_line_rasterization_ext
                .map(|s| s.rectangular_lines)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            report_address_binding: [features_ffi
                .features_address_binding_report_ext
                .map(|s| s.report_address_binding)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            representative_fragment_test: [features_ffi
                .features_representative_fragment_test_nv
                .map(|s| s.representative_fragment_test)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            robust_buffer_access: [features_ffi.features_vulkan10.features.robust_buffer_access]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            robust_buffer_access2: [features_ffi
                .features_robustness2_ext
                .map(|s| s.robust_buffer_access2)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            robust_image_access: [
                features_ffi.features_vulkan13.map(|s| s.robust_image_access),
                features_ffi.features_image_robustness.map(|s| s.robust_image_access),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            robust_image_access2: [features_ffi
                .features_robustness2_ext
                .map(|s| s.robust_image_access2)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            runtime_descriptor_array: [
                features_ffi.features_vulkan12.map(|s| s.runtime_descriptor_array),
                features_ffi.features_descriptor_indexing.map(|s| s.runtime_descriptor_array),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            sample_rate_shading: [features_ffi.features_vulkan10.features.sample_rate_shading]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            sampler2_d_view_of3_d: [features_ffi
                .features_image2_d_view_of3_d_ext
                .map(|s| s.sampler2_d_view_of3_d)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            sampler_anisotropy: [features_ffi.features_vulkan10.features.sampler_anisotropy]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            sampler_filter_minmax: [features_ffi
                .features_vulkan12
                .map(|s| s.sampler_filter_minmax)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            sampler_mip_lod_bias: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.sampler_mip_lod_bias)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            sampler_mirror_clamp_to_edge: [features_ffi
                .features_vulkan12
                .map(|s| s.sampler_mirror_clamp_to_edge)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            sampler_ycbcr_conversion: [
                features_ffi.features_vulkan11.map(|s| s.sampler_ycbcr_conversion),
                features_ffi.features_sampler_ycbcr_conversion.map(|s| s.sampler_ycbcr_conversion),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            scalar_block_layout: [
                features_ffi.features_vulkan12.map(|s| s.scalar_block_layout),
                features_ffi.features_scalar_block_layout.map(|s| s.scalar_block_layout),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            separate_depth_stencil_layouts: [
                features_ffi.features_vulkan12.map(|s| s.separate_depth_stencil_layouts),
                features_ffi
                    .features_separate_depth_stencil_layouts
                    .map(|s| s.separate_depth_stencil_layouts),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            separate_stencil_mask_ref: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.separate_stencil_mask_ref)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_buffer_float16_atomic_add: [features_ffi
                .features_shader_atomic_float2_ext
                .map(|s| s.shader_buffer_float16_atomic_add)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_buffer_float16_atomic_min_max: [features_ffi
                .features_shader_atomic_float2_ext
                .map(|s| s.shader_buffer_float16_atomic_min_max)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_buffer_float16_atomics: [features_ffi
                .features_shader_atomic_float2_ext
                .map(|s| s.shader_buffer_float16_atomics)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_buffer_float32_atomic_add: [features_ffi
                .features_shader_atomic_float_ext
                .map(|s| s.shader_buffer_float32_atomic_add)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_buffer_float32_atomic_min_max: [features_ffi
                .features_shader_atomic_float2_ext
                .map(|s| s.shader_buffer_float32_atomic_min_max)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_buffer_float32_atomics: [features_ffi
                .features_shader_atomic_float_ext
                .map(|s| s.shader_buffer_float32_atomics)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_buffer_float64_atomic_add: [features_ffi
                .features_shader_atomic_float_ext
                .map(|s| s.shader_buffer_float64_atomic_add)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_buffer_float64_atomic_min_max: [features_ffi
                .features_shader_atomic_float2_ext
                .map(|s| s.shader_buffer_float64_atomic_min_max)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_buffer_float64_atomics: [features_ffi
                .features_shader_atomic_float_ext
                .map(|s| s.shader_buffer_float64_atomics)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_buffer_int64_atomics: [
                features_ffi.features_vulkan12.map(|s| s.shader_buffer_int64_atomics),
                features_ffi.features_shader_atomic_int64.map(|s| s.shader_buffer_int64_atomics),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_clip_distance: [features_ffi.features_vulkan10.features.shader_clip_distance]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            shader_core_builtins: [features_ffi
                .features_shader_core_builtins_arm
                .map(|s| s.shader_core_builtins)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_cull_distance: [features_ffi.features_vulkan10.features.shader_cull_distance]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            shader_demote_to_helper_invocation: [
                features_ffi.features_vulkan13.map(|s| s.shader_demote_to_helper_invocation),
                features_ffi
                    .features_shader_demote_to_helper_invocation
                    .map(|s| s.shader_demote_to_helper_invocation),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_device_clock: [features_ffi
                .features_shader_clock_khr
                .map(|s| s.shader_device_clock)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_draw_parameters: [
                features_ffi.features_vulkan11.map(|s| s.shader_draw_parameters),
                features_ffi.features_shader_draw_parameters.map(|s| s.shader_draw_parameters),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_early_and_late_fragment_tests: [features_ffi
                .features_shader_early_and_late_fragment_tests_amd
                .map(|s| s.shader_early_and_late_fragment_tests)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_float16: [
                features_ffi.features_vulkan12.map(|s| s.shader_float16),
                features_ffi.features_shader_float16_int8.map(|s| s.shader_float16),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_float64: [features_ffi.features_vulkan10.features.shader_float64]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            shader_image_float32_atomic_add: [features_ffi
                .features_shader_atomic_float_ext
                .map(|s| s.shader_image_float32_atomic_add)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_image_float32_atomic_min_max: [features_ffi
                .features_shader_atomic_float2_ext
                .map(|s| s.shader_image_float32_atomic_min_max)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_image_float32_atomics: [features_ffi
                .features_shader_atomic_float_ext
                .map(|s| s.shader_image_float32_atomics)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_image_gather_extended: [features_ffi
                .features_vulkan10
                .features
                .shader_image_gather_extended]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            shader_image_int64_atomics: [features_ffi
                .features_shader_image_atomic_int64_ext
                .map(|s| s.shader_image_int64_atomics)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_input_attachment_array_dynamic_indexing: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.shader_input_attachment_array_dynamic_indexing),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.shader_input_attachment_array_dynamic_indexing),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_input_attachment_array_non_uniform_indexing: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.shader_input_attachment_array_non_uniform_indexing),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.shader_input_attachment_array_non_uniform_indexing),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_int16: [features_ffi.features_vulkan10.features.shader_int16]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            shader_int64: [features_ffi.features_vulkan10.features.shader_int64]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            shader_int8: [
                features_ffi.features_vulkan12.map(|s| s.shader_int8),
                features_ffi.features_shader_float16_int8.map(|s| s.shader_int8),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_integer_dot_product: [
                features_ffi.features_vulkan13.map(|s| s.shader_integer_dot_product),
                features_ffi
                    .features_shader_integer_dot_product
                    .map(|s| s.shader_integer_dot_product),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_integer_functions2: [features_ffi
                .features_shader_integer_functions2_intel
                .map(|s| s.shader_integer_functions2)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_module_identifier: [features_ffi
                .features_shader_module_identifier_ext
                .map(|s| s.shader_module_identifier)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_output_layer: [features_ffi.features_vulkan12.map(|s| s.shader_output_layer)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            shader_output_viewport_index: [features_ffi
                .features_vulkan12
                .map(|s| s.shader_output_viewport_index)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_resource_min_lod: [features_ffi
                .features_vulkan10
                .features
                .shader_resource_min_lod]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            shader_resource_residency: [features_ffi
                .features_vulkan10
                .features
                .shader_resource_residency]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            shader_sample_rate_interpolation_functions: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.shader_sample_rate_interpolation_functions)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_sampled_image_array_dynamic_indexing: [features_ffi
                .features_vulkan10
                .features
                .shader_sampled_image_array_dynamic_indexing]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            shader_sampled_image_array_non_uniform_indexing: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.shader_sampled_image_array_non_uniform_indexing),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.shader_sampled_image_array_non_uniform_indexing),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_shared_float16_atomic_add: [features_ffi
                .features_shader_atomic_float2_ext
                .map(|s| s.shader_shared_float16_atomic_add)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_shared_float16_atomic_min_max: [features_ffi
                .features_shader_atomic_float2_ext
                .map(|s| s.shader_shared_float16_atomic_min_max)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_shared_float16_atomics: [features_ffi
                .features_shader_atomic_float2_ext
                .map(|s| s.shader_shared_float16_atomics)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_shared_float32_atomic_add: [features_ffi
                .features_shader_atomic_float_ext
                .map(|s| s.shader_shared_float32_atomic_add)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_shared_float32_atomic_min_max: [features_ffi
                .features_shader_atomic_float2_ext
                .map(|s| s.shader_shared_float32_atomic_min_max)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_shared_float32_atomics: [features_ffi
                .features_shader_atomic_float_ext
                .map(|s| s.shader_shared_float32_atomics)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_shared_float64_atomic_add: [features_ffi
                .features_shader_atomic_float_ext
                .map(|s| s.shader_shared_float64_atomic_add)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_shared_float64_atomic_min_max: [features_ffi
                .features_shader_atomic_float2_ext
                .map(|s| s.shader_shared_float64_atomic_min_max)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_shared_float64_atomics: [features_ffi
                .features_shader_atomic_float_ext
                .map(|s| s.shader_shared_float64_atomics)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_shared_int64_atomics: [
                features_ffi.features_vulkan12.map(|s| s.shader_shared_int64_atomics),
                features_ffi.features_shader_atomic_int64.map(|s| s.shader_shared_int64_atomics),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_sm_builtins: [features_ffi
                .features_shader_sm_builtins_nv
                .map(|s| s.shader_sm_builtins)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_storage_buffer_array_dynamic_indexing: [features_ffi
                .features_vulkan10
                .features
                .shader_storage_buffer_array_dynamic_indexing]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            shader_storage_buffer_array_non_uniform_indexing: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.shader_storage_buffer_array_non_uniform_indexing),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.shader_storage_buffer_array_non_uniform_indexing),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_storage_image_array_dynamic_indexing: [features_ffi
                .features_vulkan10
                .features
                .shader_storage_image_array_dynamic_indexing]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            shader_storage_image_array_non_uniform_indexing: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.shader_storage_image_array_non_uniform_indexing),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.shader_storage_image_array_non_uniform_indexing),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_storage_image_extended_formats: [features_ffi
                .features_vulkan10
                .features
                .shader_storage_image_extended_formats]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            shader_storage_image_multisample: [features_ffi
                .features_vulkan10
                .features
                .shader_storage_image_multisample]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            shader_storage_image_read_without_format: [features_ffi
                .features_vulkan10
                .features
                .shader_storage_image_read_without_format]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            shader_storage_image_write_without_format: [features_ffi
                .features_vulkan10
                .features
                .shader_storage_image_write_without_format]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            shader_storage_texel_buffer_array_dynamic_indexing: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.shader_storage_texel_buffer_array_dynamic_indexing),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.shader_storage_texel_buffer_array_dynamic_indexing),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_storage_texel_buffer_array_non_uniform_indexing: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.shader_storage_texel_buffer_array_non_uniform_indexing),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.shader_storage_texel_buffer_array_non_uniform_indexing),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_subgroup_clock: [features_ffi
                .features_shader_clock_khr
                .map(|s| s.shader_subgroup_clock)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_subgroup_extended_types: [
                features_ffi.features_vulkan12.map(|s| s.shader_subgroup_extended_types),
                features_ffi
                    .features_shader_subgroup_extended_types
                    .map(|s| s.shader_subgroup_extended_types),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_subgroup_uniform_control_flow: [features_ffi
                .features_shader_subgroup_uniform_control_flow_khr
                .map(|s| s.shader_subgroup_uniform_control_flow)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_terminate_invocation: [
                features_ffi.features_vulkan13.map(|s| s.shader_terminate_invocation),
                features_ffi
                    .features_shader_terminate_invocation
                    .map(|s| s.shader_terminate_invocation),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_tessellation_and_geometry_point_size: [features_ffi
                .features_vulkan10
                .features
                .shader_tessellation_and_geometry_point_size]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            shader_uniform_buffer_array_dynamic_indexing: [features_ffi
                .features_vulkan10
                .features
                .shader_uniform_buffer_array_dynamic_indexing]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            shader_uniform_buffer_array_non_uniform_indexing: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.shader_uniform_buffer_array_non_uniform_indexing),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.shader_uniform_buffer_array_non_uniform_indexing),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_uniform_texel_buffer_array_dynamic_indexing: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.shader_uniform_texel_buffer_array_dynamic_indexing),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.shader_uniform_texel_buffer_array_dynamic_indexing),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_uniform_texel_buffer_array_non_uniform_indexing: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.shader_uniform_texel_buffer_array_non_uniform_indexing),
                features_ffi
                    .features_descriptor_indexing
                    .map(|s| s.shader_uniform_texel_buffer_array_non_uniform_indexing),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shader_zero_initialize_workgroup_memory: [
                features_ffi.features_vulkan13.map(|s| s.shader_zero_initialize_workgroup_memory),
                features_ffi
                    .features_zero_initialize_workgroup_memory
                    .map(|s| s.shader_zero_initialize_workgroup_memory),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shading_rate_coarse_sample_order: [features_ffi
                .features_shading_rate_image_nv
                .map(|s| s.shading_rate_coarse_sample_order)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            shading_rate_image: [features_ffi
                .features_shading_rate_image_nv
                .map(|s| s.shading_rate_image)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            smooth_lines: [features_ffi.features_line_rasterization_ext.map(|s| s.smooth_lines)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            sparse_binding: [features_ffi.features_vulkan10.features.sparse_binding]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            sparse_image_float32_atomic_add: [features_ffi
                .features_shader_atomic_float_ext
                .map(|s| s.sparse_image_float32_atomic_add)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            sparse_image_float32_atomic_min_max: [features_ffi
                .features_shader_atomic_float2_ext
                .map(|s| s.sparse_image_float32_atomic_min_max)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            sparse_image_float32_atomics: [features_ffi
                .features_shader_atomic_float_ext
                .map(|s| s.sparse_image_float32_atomics)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            sparse_image_int64_atomics: [features_ffi
                .features_shader_image_atomic_int64_ext
                .map(|s| s.sparse_image_int64_atomics)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            sparse_residency16_samples: [features_ffi
                .features_vulkan10
                .features
                .sparse_residency16_samples]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            sparse_residency2_samples: [features_ffi
                .features_vulkan10
                .features
                .sparse_residency2_samples]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            sparse_residency4_samples: [features_ffi
                .features_vulkan10
                .features
                .sparse_residency4_samples]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            sparse_residency8_samples: [features_ffi
                .features_vulkan10
                .features
                .sparse_residency8_samples]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            sparse_residency_aliased: [features_ffi
                .features_vulkan10
                .features
                .sparse_residency_aliased]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            sparse_residency_buffer: [features_ffi
                .features_vulkan10
                .features
                .sparse_residency_buffer]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            sparse_residency_image2_d: [features_ffi
                .features_vulkan10
                .features
                .sparse_residency_image2_d]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            sparse_residency_image3_d: [features_ffi
                .features_vulkan10
                .features
                .sparse_residency_image3_d]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            stippled_bresenham_lines: [features_ffi
                .features_line_rasterization_ext
                .map(|s| s.stippled_bresenham_lines)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            stippled_rectangular_lines: [features_ffi
                .features_line_rasterization_ext
                .map(|s| s.stippled_rectangular_lines)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            stippled_smooth_lines: [features_ffi
                .features_line_rasterization_ext
                .map(|s| s.stippled_smooth_lines)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            storage_buffer16_bit_access: [
                features_ffi.features_vulkan11.map(|s| s.storage_buffer16_bit_access),
                features_ffi.features_16bit_storage.map(|s| s.storage_buffer16_bit_access),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            storage_buffer8_bit_access: [
                features_ffi.features_vulkan12.map(|s| s.storage_buffer8_bit_access),
                features_ffi.features_8bit_storage.map(|s| s.storage_buffer8_bit_access),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            storage_input_output16: [
                features_ffi.features_vulkan11.map(|s| s.storage_input_output16),
                features_ffi.features_16bit_storage.map(|s| s.storage_input_output16),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            storage_push_constant16: [
                features_ffi.features_vulkan11.map(|s| s.storage_push_constant16),
                features_ffi.features_16bit_storage.map(|s| s.storage_push_constant16),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            storage_push_constant8: [
                features_ffi.features_vulkan12.map(|s| s.storage_push_constant8),
                features_ffi.features_8bit_storage.map(|s| s.storage_push_constant8),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            subgroup_broadcast_dynamic_id: [features_ffi
                .features_vulkan12
                .map(|s| s.subgroup_broadcast_dynamic_id)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            subgroup_size_control: [
                features_ffi.features_vulkan13.map(|s| s.subgroup_size_control),
                features_ffi.features_subgroup_size_control.map(|s| s.subgroup_size_control),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            subpass_merge_feedback: [features_ffi
                .features_subpass_merge_feedback_ext
                .map(|s| s.subpass_merge_feedback)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            subpass_shading: [features_ffi
                .features_subpass_shading_huawei
                .map(|s| s.subpass_shading)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            supersample_fragment_shading_rates: [features_ffi
                .features_fragment_shading_rate_enums_nv
                .map(|s| s.supersample_fragment_shading_rates)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            swapchain_maintenance1: [features_ffi
                .features_swapchain_maintenance1_ext
                .map(|s| s.swapchain_maintenance1)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            synchronization2: [
                features_ffi.features_vulkan13.map(|s| s.synchronization2),
                features_ffi.features_synchronization2.map(|s| s.synchronization2),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            task_shader: [
                features_ffi.features_mesh_shader_ext.map(|s| s.task_shader),
                features_ffi.features_mesh_shader_nv.map(|s| s.task_shader),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            tessellation_isolines: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.tessellation_isolines)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            tessellation_point_mode: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.tessellation_point_mode)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            tessellation_shader: [features_ffi.features_vulkan10.features.tessellation_shader]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            texel_buffer_alignment: [features_ffi
                .features_texel_buffer_alignment_ext
                .map(|s| s.texel_buffer_alignment)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            texture_block_match: [features_ffi
                .features_image_processing_qcom
                .map(|s| s.texture_block_match)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            texture_box_filter: [features_ffi
                .features_image_processing_qcom
                .map(|s| s.texture_box_filter)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            texture_compression_astc_hdr: [
                features_ffi.features_vulkan13.map(|s| s.texture_compression_astc_hdr),
                features_ffi
                    .features_texture_compression_astchdr
                    .map(|s| s.texture_compression_astc_hdr),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            texture_compression_astc_ldr: [features_ffi
                .features_vulkan10
                .features
                .texture_compression_astc_ldr]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            texture_compression_bc: [features_ffi
                .features_vulkan10
                .features
                .texture_compression_bc]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            texture_compression_etc2: [features_ffi
                .features_vulkan10
                .features
                .texture_compression_etc2]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            texture_sample_weighted: [features_ffi
                .features_image_processing_qcom
                .map(|s| s.texture_sample_weighted)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            tile_properties: [features_ffi
                .features_tile_properties_qcom
                .map(|s| s.tile_properties)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            timeline_semaphore: [
                features_ffi.features_vulkan12.map(|s| s.timeline_semaphore),
                features_ffi.features_timeline_semaphore.map(|s| s.timeline_semaphore),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            transform_feedback: [features_ffi
                .features_transform_feedback_ext
                .map(|s| s.transform_feedback)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            transform_feedback_preserves_provoking_vertex: [features_ffi
                .features_provoking_vertex_ext
                .map(|s| s.transform_feedback_preserves_provoking_vertex)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            triangle_fans: [features_ffi.features_portability_subset_khr.map(|s| s.triangle_fans)]
                .into_iter()
                .flatten()
                .next()
                .unwrap_or(0)
                != 0,
            uniform_and_storage_buffer16_bit_access: [
                features_ffi.features_vulkan11.map(|s| s.uniform_and_storage_buffer16_bit_access),
                features_ffi
                    .features_16bit_storage
                    .map(|s| s.uniform_and_storage_buffer16_bit_access),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            uniform_and_storage_buffer8_bit_access: [
                features_ffi.features_vulkan12.map(|s| s.uniform_and_storage_buffer8_bit_access),
                features_ffi
                    .features_8bit_storage
                    .map(|s| s.uniform_and_storage_buffer8_bit_access),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            uniform_buffer_standard_layout: [
                features_ffi.features_vulkan12.map(|s| s.uniform_buffer_standard_layout),
                features_ffi
                    .features_uniform_buffer_standard_layout
                    .map(|s| s.uniform_buffer_standard_layout),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            variable_multisample_rate: [features_ffi
                .features_vulkan10
                .features
                .variable_multisample_rate]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            variable_pointers: [
                features_ffi.features_vulkan11.map(|s| s.variable_pointers),
                features_ffi.features_variable_pointers.map(|s| s.variable_pointers),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            variable_pointers_storage_buffer: [
                features_ffi.features_vulkan11.map(|s| s.variable_pointers_storage_buffer),
                features_ffi.features_variable_pointers.map(|s| s.variable_pointers_storage_buffer),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            vertex_attribute_access_beyond_stride: [features_ffi
                .features_portability_subset_khr
                .map(|s| s.vertex_attribute_access_beyond_stride)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            vertex_attribute_instance_rate_divisor: [features_ffi
                .features_vertex_attribute_divisor_ext
                .map(|s| s.vertex_attribute_instance_rate_divisor)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            vertex_attribute_instance_rate_zero_divisor: [features_ffi
                .features_vertex_attribute_divisor_ext
                .map(|s| s.vertex_attribute_instance_rate_zero_divisor)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            vertex_input_dynamic_state: [features_ffi
                .features_vertex_input_dynamic_state_ext
                .map(|s| s.vertex_input_dynamic_state)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            vertex_pipeline_stores_and_atomics: [features_ffi
                .features_vulkan10
                .features
                .vertex_pipeline_stores_and_atomics]
            .into_iter()
            .next()
            .unwrap_or(0)
                != 0,
            vulkan_memory_model: [
                features_ffi.features_vulkan12.map(|s| s.vulkan_memory_model),
                features_ffi.features_vulkan_memory_model.map(|s| s.vulkan_memory_model),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            vulkan_memory_model_availability_visibility_chains: [
                features_ffi
                    .features_vulkan12
                    .map(|s| s.vulkan_memory_model_availability_visibility_chains),
                features_ffi
                    .features_vulkan_memory_model
                    .map(|s| s.vulkan_memory_model_availability_visibility_chains),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            vulkan_memory_model_device_scope: [
                features_ffi.features_vulkan12.map(|s| s.vulkan_memory_model_device_scope),
                features_ffi
                    .features_vulkan_memory_model
                    .map(|s| s.vulkan_memory_model_device_scope),
            ]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            wide_lines: [features_ffi.features_vulkan10.features.wide_lines]
                .into_iter()
                .next()
                .unwrap_or(0)
                != 0,
            workgroup_memory_explicit_layout: [features_ffi
                .features_workgroup_memory_explicit_layout_khr
                .map(|s| s.workgroup_memory_explicit_layout)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            workgroup_memory_explicit_layout16_bit_access: [features_ffi
                .features_workgroup_memory_explicit_layout_khr
                .map(|s| s.workgroup_memory_explicit_layout16_bit_access)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            workgroup_memory_explicit_layout8_bit_access: [features_ffi
                .features_workgroup_memory_explicit_layout_khr
                .map(|s| s.workgroup_memory_explicit_layout8_bit_access)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            workgroup_memory_explicit_layout_scalar_block_layout: [features_ffi
                .features_workgroup_memory_explicit_layout_khr
                .map(|s| s.workgroup_memory_explicit_layout_scalar_block_layout)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            ycbcr2plane444_formats: [features_ffi
                .features_ycbcr2_plane444_formats_ext
                .map(|s| s.ycbcr2plane444_formats)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            ycbcr_image_arrays: [features_ffi
                .features_ycbcr_image_arrays_ext
                .map(|s| s.ycbcr_image_arrays)]
            .into_iter()
            .flatten()
            .next()
            .unwrap_or(0)
                != 0,
            _ne: crate::NonExhaustive(()),
        }
    }
}
impl IntoIterator for Features {
    type Item = (&'static str, bool);
    type IntoIter = std::array::IntoIter<Self::Item, 363usize>;
    #[inline]
    fn into_iter(self) -> Self::IntoIter {
        [
            ("accelerationStructure", self.acceleration_structure),
            ("accelerationStructureCaptureReplay", self.acceleration_structure_capture_replay),
            ("accelerationStructureHostCommands", self.acceleration_structure_host_commands),
            ("accelerationStructureIndirectBuild", self.acceleration_structure_indirect_build),
            ("advancedBlendCoherentOperations", self.advanced_blend_coherent_operations),
            ("alphaToOne", self.alpha_to_one),
            ("amigoProfiling", self.amigo_profiling),
            ("attachmentFeedbackLoopLayout", self.attachment_feedback_loop_layout),
            ("attachmentFragmentShadingRate", self.attachment_fragment_shading_rate),
            ("borderColorSwizzle", self.border_color_swizzle),
            ("borderColorSwizzleFromImage", self.border_color_swizzle_from_image),
            ("bresenhamLines", self.bresenham_lines),
            ("bufferDeviceAddress", self.buffer_device_address),
            ("bufferDeviceAddressCaptureReplay", self.buffer_device_address_capture_replay),
            ("bufferDeviceAddressMultiDevice", self.buffer_device_address_multi_device),
            ("colorWriteEnable", self.color_write_enable),
            ("computeDerivativeGroupLinear", self.compute_derivative_group_linear),
            ("computeDerivativeGroupQuads", self.compute_derivative_group_quads),
            ("computeFullSubgroups", self.compute_full_subgroups),
            ("conditionalRendering", self.conditional_rendering),
            ("constantAlphaColorBlendFactors", self.constant_alpha_color_blend_factors),
            ("cooperativeMatrix", self.cooperative_matrix),
            ("cooperativeMatrixRobustBufferAccess", self.cooperative_matrix_robust_buffer_access),
            ("cornerSampledImage", self.corner_sampled_image),
            ("coverageReductionMode", self.coverage_reduction_mode),
            ("customBorderColorWithoutFormat", self.custom_border_color_without_format),
            ("customBorderColors", self.custom_border_colors),
            ("decodeModeSharedExponent", self.decode_mode_shared_exponent),
            ("dedicatedAllocationImageAliasing", self.dedicated_allocation_image_aliasing),
            ("depthBiasClamp", self.depth_bias_clamp),
            ("depthBounds", self.depth_bounds),
            ("depthClamp", self.depth_clamp),
            ("depthClampZeroOne", self.depth_clamp_zero_one),
            ("depthClipControl", self.depth_clip_control),
            ("depthClipEnable", self.depth_clip_enable),
            (
                "descriptorBindingAccelerationStructureUpdateAfterBind",
                self.descriptor_binding_acceleration_structure_update_after_bind,
            ),
            (
                "descriptorBindingInlineUniformBlockUpdateAfterBind",
                self.descriptor_binding_inline_uniform_block_update_after_bind,
            ),
            ("descriptorBindingPartiallyBound", self.descriptor_binding_partially_bound),
            (
                "descriptorBindingSampledImageUpdateAfterBind",
                self.descriptor_binding_sampled_image_update_after_bind,
            ),
            (
                "descriptorBindingStorageBufferUpdateAfterBind",
                self.descriptor_binding_storage_buffer_update_after_bind,
            ),
            (
                "descriptorBindingStorageImageUpdateAfterBind",
                self.descriptor_binding_storage_image_update_after_bind,
            ),
            (
                "descriptorBindingStorageTexelBufferUpdateAfterBind",
                self.descriptor_binding_storage_texel_buffer_update_after_bind,
            ),
            (
                "descriptorBindingUniformBufferUpdateAfterBind",
                self.descriptor_binding_uniform_buffer_update_after_bind,
            ),
            (
                "descriptorBindingUniformTexelBufferUpdateAfterBind",
                self.descriptor_binding_uniform_texel_buffer_update_after_bind,
            ),
            (
                "descriptorBindingUpdateUnusedWhilePending",
                self.descriptor_binding_update_unused_while_pending,
            ),
            (
                "descriptorBindingVariableDescriptorCount",
                self.descriptor_binding_variable_descriptor_count,
            ),
            ("descriptorBuffer", self.descriptor_buffer),
            ("descriptorBufferCaptureReplay", self.descriptor_buffer_capture_replay),
            ("descriptorBufferImageLayoutIgnored", self.descriptor_buffer_image_layout_ignored),
            ("descriptorBufferPushDescriptors", self.descriptor_buffer_push_descriptors),
            ("descriptorIndexing", self.descriptor_indexing),
            ("descriptorSetHostMapping", self.descriptor_set_host_mapping),
            ("deviceCoherentMemory", self.device_coherent_memory),
            ("deviceFault", self.device_fault),
            ("deviceFaultVendorBinary", self.device_fault_vendor_binary),
            ("deviceGeneratedCommands", self.device_generated_commands),
            ("deviceMemoryReport", self.device_memory_report),
            ("diagnosticsConfig", self.diagnostics_config),
            ("drawIndirectCount", self.draw_indirect_count),
            ("drawIndirectFirstInstance", self.draw_indirect_first_instance),
            ("dualSrcBlend", self.dual_src_blend),
            ("dynamicRendering", self.dynamic_rendering),
            ("events", self.events),
            ("exclusiveScissor", self.exclusive_scissor),
            ("extendedDynamicState", self.extended_dynamic_state),
            ("extendedDynamicState2", self.extended_dynamic_state2),
            ("extendedDynamicState2LogicOp", self.extended_dynamic_state2_logic_op),
            (
                "extendedDynamicState2PatchControlPoints",
                self.extended_dynamic_state2_patch_control_points,
            ),
            (
                "extendedDynamicState3AlphaToCoverageEnable",
                self.extended_dynamic_state3_alpha_to_coverage_enable,
            ),
            (
                "extendedDynamicState3AlphaToOneEnable",
                self.extended_dynamic_state3_alpha_to_one_enable,
            ),
            (
                "extendedDynamicState3ColorBlendAdvanced",
                self.extended_dynamic_state3_color_blend_advanced,
            ),
            (
                "extendedDynamicState3ColorBlendEnable",
                self.extended_dynamic_state3_color_blend_enable,
            ),
            (
                "extendedDynamicState3ColorBlendEquation",
                self.extended_dynamic_state3_color_blend_equation,
            ),
            ("extendedDynamicState3ColorWriteMask", self.extended_dynamic_state3_color_write_mask),
            (
                "extendedDynamicState3ConservativeRasterizationMode",
                self.extended_dynamic_state3_conservative_rasterization_mode,
            ),
            (
                "extendedDynamicState3CoverageModulationMode",
                self.extended_dynamic_state3_coverage_modulation_mode,
            ),
            (
                "extendedDynamicState3CoverageModulationTable",
                self.extended_dynamic_state3_coverage_modulation_table,
            ),
            (
                "extendedDynamicState3CoverageModulationTableEnable",
                self.extended_dynamic_state3_coverage_modulation_table_enable,
            ),
            (
                "extendedDynamicState3CoverageReductionMode",
                self.extended_dynamic_state3_coverage_reduction_mode,
            ),
            (
                "extendedDynamicState3CoverageToColorEnable",
                self.extended_dynamic_state3_coverage_to_color_enable,
            ),
            (
                "extendedDynamicState3CoverageToColorLocation",
                self.extended_dynamic_state3_coverage_to_color_location,
            ),
            (
                "extendedDynamicState3DepthClampEnable",
                self.extended_dynamic_state3_depth_clamp_enable,
            ),
            (
                "extendedDynamicState3DepthClipEnable",
                self.extended_dynamic_state3_depth_clip_enable,
            ),
            (
                "extendedDynamicState3DepthClipNegativeOneToOne",
                self.extended_dynamic_state3_depth_clip_negative_one_to_one,
            ),
            (
                "extendedDynamicState3ExtraPrimitiveOverestimationSize",
                self.extended_dynamic_state3_extra_primitive_overestimation_size,
            ),
            (
                "extendedDynamicState3LineRasterizationMode",
                self.extended_dynamic_state3_line_rasterization_mode,
            ),
            (
                "extendedDynamicState3LineStippleEnable",
                self.extended_dynamic_state3_line_stipple_enable,
            ),
            ("extendedDynamicState3LogicOpEnable", self.extended_dynamic_state3_logic_op_enable),
            ("extendedDynamicState3PolygonMode", self.extended_dynamic_state3_polygon_mode),
            (
                "extendedDynamicState3ProvokingVertexMode",
                self.extended_dynamic_state3_provoking_vertex_mode,
            ),
            (
                "extendedDynamicState3RasterizationSamples",
                self.extended_dynamic_state3_rasterization_samples,
            ),
            (
                "extendedDynamicState3RasterizationStream",
                self.extended_dynamic_state3_rasterization_stream,
            ),
            (
                "extendedDynamicState3RepresentativeFragmentTestEnable",
                self.extended_dynamic_state3_representative_fragment_test_enable,
            ),
            (
                "extendedDynamicState3SampleLocationsEnable",
                self.extended_dynamic_state3_sample_locations_enable,
            ),
            ("extendedDynamicState3SampleMask", self.extended_dynamic_state3_sample_mask),
            (
                "extendedDynamicState3ShadingRateImageEnable",
                self.extended_dynamic_state3_shading_rate_image_enable,
            ),
            (
                "extendedDynamicState3TessellationDomainOrigin",
                self.extended_dynamic_state3_tessellation_domain_origin,
            ),
            ("extendedDynamicState3ViewportSwizzle", self.extended_dynamic_state3_viewport_swizzle),
            (
                "extendedDynamicState3ViewportWScalingEnable",
                self.extended_dynamic_state3_viewport_w_scaling_enable,
            ),
            ("externalMemoryRDMA", self.external_memory_rdma),
            ("fillModeNonSolid", self.fill_mode_non_solid),
            ("formatA4B4G4R4", self.format_a4b4g4r4),
            ("formatA4R4G4B4", self.format_a4r4g4b4),
            ("formatRgba10x6WithoutYCbCrSampler", self.format_rgba10x6_without_y_cb_cr_sampler),
            ("fragmentDensityMap", self.fragment_density_map),
            ("fragmentDensityMapDeferred", self.fragment_density_map_deferred),
            ("fragmentDensityMapDynamic", self.fragment_density_map_dynamic),
            (
                "fragmentDensityMapNonSubsampledImages",
                self.fragment_density_map_non_subsampled_images,
            ),
            ("fragmentDensityMapOffset", self.fragment_density_map_offset),
            ("fragmentShaderBarycentric", self.fragment_shader_barycentric),
            ("fragmentShaderPixelInterlock", self.fragment_shader_pixel_interlock),
            ("fragmentShaderSampleInterlock", self.fragment_shader_sample_interlock),
            ("fragmentShaderShadingRateInterlock", self.fragment_shader_shading_rate_interlock),
            ("fragmentShadingRateEnums", self.fragment_shading_rate_enums),
            ("fragmentStoresAndAtomics", self.fragment_stores_and_atomics),
            ("fullDrawIndexUint32", self.full_draw_index_uint32),
            ("geometryShader", self.geometry_shader),
            ("geometryStreams", self.geometry_streams),
            ("globalPriorityQuery", self.global_priority_query),
            ("graphicsPipelineLibrary", self.graphics_pipeline_library),
            ("hostQueryReset", self.host_query_reset),
            ("image2DViewOf3D", self.image2_d_view_of3_d),
            ("imageCompressionControl", self.image_compression_control),
            ("imageCompressionControlSwapchain", self.image_compression_control_swapchain),
            ("imageCubeArray", self.image_cube_array),
            ("imageFootprint", self.image_footprint),
            ("imageView2DOn3DImage", self.image_view2_d_on3_d_image),
            ("imageViewFormatReinterpretation", self.image_view_format_reinterpretation),
            ("imageViewFormatSwizzle", self.image_view_format_swizzle),
            ("imagelessFramebuffer", self.imageless_framebuffer),
            ("independentBlend", self.independent_blend),
            ("indexTypeUint8", self.index_type_uint8),
            ("indirectCopy", self.indirect_copy),
            ("inheritedConditionalRendering", self.inherited_conditional_rendering),
            ("inheritedQueries", self.inherited_queries),
            ("inheritedViewportScissor2D", self.inherited_viewport_scissor2_d),
            ("inlineUniformBlock", self.inline_uniform_block),
            ("invocationMask", self.invocation_mask),
            ("largePoints", self.large_points),
            ("legacyDithering", self.legacy_dithering),
            ("linearColorAttachment", self.linear_color_attachment),
            ("logicOp", self.logic_op),
            ("maintenance4", self.maintenance4),
            ("memoryDecompression", self.memory_decompression),
            ("memoryPriority", self.memory_priority),
            ("meshShader", self.mesh_shader),
            ("meshShaderQueries", self.mesh_shader_queries),
            ("micromap", self.micromap),
            ("micromapCaptureReplay", self.micromap_capture_replay),
            ("micromapHostCommands", self.micromap_host_commands),
            ("minLod", self.min_lod),
            ("multiDraw", self.multi_draw),
            ("multiDrawIndirect", self.multi_draw_indirect),
            ("multiViewport", self.multi_viewport),
            ("multisampleArrayImage", self.multisample_array_image),
            ("multisampledRenderToSingleSampled", self.multisampled_render_to_single_sampled),
            ("multiview", self.multiview),
            ("multiviewGeometryShader", self.multiview_geometry_shader),
            ("multiviewMeshShader", self.multiview_mesh_shader),
            ("multiviewPerViewViewports", self.multiview_per_view_viewports),
            ("multiviewTessellationShader", self.multiview_tessellation_shader),
            ("mutableComparisonSamplers", self.mutable_comparison_samplers),
            ("mutableDescriptorType", self.mutable_descriptor_type),
            ("noInvocationFragmentShadingRates", self.no_invocation_fragment_shading_rates),
            ("nonSeamlessCubeMap", self.non_seamless_cube_map),
            ("nullDescriptor", self.null_descriptor),
            ("occlusionQueryPrecise", self.occlusion_query_precise),
            ("opticalFlow", self.optical_flow),
            ("pageableDeviceLocalMemory", self.pageable_device_local_memory),
            ("performanceCounterMultipleQueryPools", self.performance_counter_multiple_query_pools),
            ("performanceCounterQueryPools", self.performance_counter_query_pools),
            ("pipelineCreationCacheControl", self.pipeline_creation_cache_control),
            ("pipelineExecutableInfo", self.pipeline_executable_info),
            ("pipelineFragmentShadingRate", self.pipeline_fragment_shading_rate),
            ("pipelinePropertiesIdentifier", self.pipeline_properties_identifier),
            ("pipelineProtectedAccess", self.pipeline_protected_access),
            ("pipelineRobustness", self.pipeline_robustness),
            ("pipelineStatisticsQuery", self.pipeline_statistics_query),
            ("pointPolygons", self.point_polygons),
            ("presentBarrier", self.present_barrier),
            ("presentId", self.present_id),
            ("presentWait", self.present_wait),
            ("primitiveFragmentShadingRate", self.primitive_fragment_shading_rate),
            (
                "primitiveFragmentShadingRateMeshShader",
                self.primitive_fragment_shading_rate_mesh_shader,
            ),
            ("primitiveTopologyListRestart", self.primitive_topology_list_restart),
            ("primitiveTopologyPatchListRestart", self.primitive_topology_patch_list_restart),
            ("primitivesGeneratedQuery", self.primitives_generated_query),
            (
                "primitivesGeneratedQueryWithNonZeroStreams",
                self.primitives_generated_query_with_non_zero_streams,
            ),
            (
                "primitivesGeneratedQueryWithRasterizerDiscard",
                self.primitives_generated_query_with_rasterizer_discard,
            ),
            ("privateData", self.private_data),
            ("protectedMemory", self.protected_memory),
            ("provokingVertexLast", self.provoking_vertex_last),
            (
                "rasterizationOrderColorAttachmentAccess",
                self.rasterization_order_color_attachment_access,
            ),
            (
                "rasterizationOrderDepthAttachmentAccess",
                self.rasterization_order_depth_attachment_access,
            ),
            (
                "rasterizationOrderStencilAttachmentAccess",
                self.rasterization_order_stencil_attachment_access,
            ),
            ("rayQuery", self.ray_query),
            ("rayTracingInvocationReorder", self.ray_tracing_invocation_reorder),
            ("rayTracingMaintenance1", self.ray_tracing_maintenance1),
            ("rayTracingMotionBlur", self.ray_tracing_motion_blur),
            (
                "rayTracingMotionBlurPipelineTraceRaysIndirect",
                self.ray_tracing_motion_blur_pipeline_trace_rays_indirect,
            ),
            ("rayTracingPipeline", self.ray_tracing_pipeline),
            (
                "rayTracingPipelineShaderGroupHandleCaptureReplay",
                self.ray_tracing_pipeline_shader_group_handle_capture_replay,
            ),
            (
                "rayTracingPipelineShaderGroupHandleCaptureReplayMixed",
                self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed,
            ),
            ("rayTracingPipelineTraceRaysIndirect", self.ray_tracing_pipeline_trace_rays_indirect),
            (
                "rayTracingPipelineTraceRaysIndirect2",
                self.ray_tracing_pipeline_trace_rays_indirect2,
            ),
            ("rayTraversalPrimitiveCulling", self.ray_traversal_primitive_culling),
            ("rectangularLines", self.rectangular_lines),
            ("reportAddressBinding", self.report_address_binding),
            ("representativeFragmentTest", self.representative_fragment_test),
            ("robustBufferAccess", self.robust_buffer_access),
            ("robustBufferAccess2", self.robust_buffer_access2),
            ("robustImageAccess", self.robust_image_access),
            ("robustImageAccess2", self.robust_image_access2),
            ("runtimeDescriptorArray", self.runtime_descriptor_array),
            ("sampleRateShading", self.sample_rate_shading),
            ("sampler2DViewOf3D", self.sampler2_d_view_of3_d),
            ("samplerAnisotropy", self.sampler_anisotropy),
            ("samplerFilterMinmax", self.sampler_filter_minmax),
            ("samplerMipLodBias", self.sampler_mip_lod_bias),
            ("samplerMirrorClampToEdge", self.sampler_mirror_clamp_to_edge),
            ("samplerYcbcrConversion", self.sampler_ycbcr_conversion),
            ("scalarBlockLayout", self.scalar_block_layout),
            ("separateDepthStencilLayouts", self.separate_depth_stencil_layouts),
            ("separateStencilMaskRef", self.separate_stencil_mask_ref),
            ("shaderBufferFloat16AtomicAdd", self.shader_buffer_float16_atomic_add),
            ("shaderBufferFloat16AtomicMinMax", self.shader_buffer_float16_atomic_min_max),
            ("shaderBufferFloat16Atomics", self.shader_buffer_float16_atomics),
            ("shaderBufferFloat32AtomicAdd", self.shader_buffer_float32_atomic_add),
            ("shaderBufferFloat32AtomicMinMax", self.shader_buffer_float32_atomic_min_max),
            ("shaderBufferFloat32Atomics", self.shader_buffer_float32_atomics),
            ("shaderBufferFloat64AtomicAdd", self.shader_buffer_float64_atomic_add),
            ("shaderBufferFloat64AtomicMinMax", self.shader_buffer_float64_atomic_min_max),
            ("shaderBufferFloat64Atomics", self.shader_buffer_float64_atomics),
            ("shaderBufferInt64Atomics", self.shader_buffer_int64_atomics),
            ("shaderClipDistance", self.shader_clip_distance),
            ("shaderCoreBuiltins", self.shader_core_builtins),
            ("shaderCullDistance", self.shader_cull_distance),
            ("shaderDemoteToHelperInvocation", self.shader_demote_to_helper_invocation),
            ("shaderDeviceClock", self.shader_device_clock),
            ("shaderDrawParameters", self.shader_draw_parameters),
            ("shaderEarlyAndLateFragmentTests", self.shader_early_and_late_fragment_tests),
            ("shaderFloat16", self.shader_float16),
            ("shaderFloat64", self.shader_float64),
            ("shaderImageFloat32AtomicAdd", self.shader_image_float32_atomic_add),
            ("shaderImageFloat32AtomicMinMax", self.shader_image_float32_atomic_min_max),
            ("shaderImageFloat32Atomics", self.shader_image_float32_atomics),
            ("shaderImageGatherExtended", self.shader_image_gather_extended),
            ("shaderImageInt64Atomics", self.shader_image_int64_atomics),
            (
                "shaderInputAttachmentArrayDynamicIndexing",
                self.shader_input_attachment_array_dynamic_indexing,
            ),
            (
                "shaderInputAttachmentArrayNonUniformIndexing",
                self.shader_input_attachment_array_non_uniform_indexing,
            ),
            ("shaderInt16", self.shader_int16),
            ("shaderInt64", self.shader_int64),
            ("shaderInt8", self.shader_int8),
            ("shaderIntegerDotProduct", self.shader_integer_dot_product),
            ("shaderIntegerFunctions2", self.shader_integer_functions2),
            ("shaderModuleIdentifier", self.shader_module_identifier),
            ("shaderOutputLayer", self.shader_output_layer),
            ("shaderOutputViewportIndex", self.shader_output_viewport_index),
            ("shaderResourceMinLod", self.shader_resource_min_lod),
            ("shaderResourceResidency", self.shader_resource_residency),
            (
                "shaderSampleRateInterpolationFunctions",
                self.shader_sample_rate_interpolation_functions,
            ),
            (
                "shaderSampledImageArrayDynamicIndexing",
                self.shader_sampled_image_array_dynamic_indexing,
            ),
            (
                "shaderSampledImageArrayNonUniformIndexing",
                self.shader_sampled_image_array_non_uniform_indexing,
            ),
            ("shaderSharedFloat16AtomicAdd", self.shader_shared_float16_atomic_add),
            ("shaderSharedFloat16AtomicMinMax", self.shader_shared_float16_atomic_min_max),
            ("shaderSharedFloat16Atomics", self.shader_shared_float16_atomics),
            ("shaderSharedFloat32AtomicAdd", self.shader_shared_float32_atomic_add),
            ("shaderSharedFloat32AtomicMinMax", self.shader_shared_float32_atomic_min_max),
            ("shaderSharedFloat32Atomics", self.shader_shared_float32_atomics),
            ("shaderSharedFloat64AtomicAdd", self.shader_shared_float64_atomic_add),
            ("shaderSharedFloat64AtomicMinMax", self.shader_shared_float64_atomic_min_max),
            ("shaderSharedFloat64Atomics", self.shader_shared_float64_atomics),
            ("shaderSharedInt64Atomics", self.shader_shared_int64_atomics),
            ("shaderSMBuiltins", self.shader_sm_builtins),
            (
                "shaderStorageBufferArrayDynamicIndexing",
                self.shader_storage_buffer_array_dynamic_indexing,
            ),
            (
                "shaderStorageBufferArrayNonUniformIndexing",
                self.shader_storage_buffer_array_non_uniform_indexing,
            ),
            (
                "shaderStorageImageArrayDynamicIndexing",
                self.shader_storage_image_array_dynamic_indexing,
            ),
            (
                "shaderStorageImageArrayNonUniformIndexing",
                self.shader_storage_image_array_non_uniform_indexing,
            ),
            ("shaderStorageImageExtendedFormats", self.shader_storage_image_extended_formats),
            ("shaderStorageImageMultisample", self.shader_storage_image_multisample),
            ("shaderStorageImageReadWithoutFormat", self.shader_storage_image_read_without_format),
            (
                "shaderStorageImageWriteWithoutFormat",
                self.shader_storage_image_write_without_format,
            ),
            (
                "shaderStorageTexelBufferArrayDynamicIndexing",
                self.shader_storage_texel_buffer_array_dynamic_indexing,
            ),
            (
                "shaderStorageTexelBufferArrayNonUniformIndexing",
                self.shader_storage_texel_buffer_array_non_uniform_indexing,
            ),
            ("shaderSubgroupClock", self.shader_subgroup_clock),
            ("shaderSubgroupExtendedTypes", self.shader_subgroup_extended_types),
            ("shaderSubgroupUniformControlFlow", self.shader_subgroup_uniform_control_flow),
            ("shaderTerminateInvocation", self.shader_terminate_invocation),
            (
                "shaderTessellationAndGeometryPointSize",
                self.shader_tessellation_and_geometry_point_size,
            ),
            (
                "shaderUniformBufferArrayDynamicIndexing",
                self.shader_uniform_buffer_array_dynamic_indexing,
            ),
            (
                "shaderUniformBufferArrayNonUniformIndexing",
                self.shader_uniform_buffer_array_non_uniform_indexing,
            ),
            (
                "shaderUniformTexelBufferArrayDynamicIndexing",
                self.shader_uniform_texel_buffer_array_dynamic_indexing,
            ),
            (
                "shaderUniformTexelBufferArrayNonUniformIndexing",
                self.shader_uniform_texel_buffer_array_non_uniform_indexing,
            ),
            ("shaderZeroInitializeWorkgroupMemory", self.shader_zero_initialize_workgroup_memory),
            ("shadingRateCoarseSampleOrder", self.shading_rate_coarse_sample_order),
            ("shadingRateImage", self.shading_rate_image),
            ("smoothLines", self.smooth_lines),
            ("sparseBinding", self.sparse_binding),
            ("sparseImageFloat32AtomicAdd", self.sparse_image_float32_atomic_add),
            ("sparseImageFloat32AtomicMinMax", self.sparse_image_float32_atomic_min_max),
            ("sparseImageFloat32Atomics", self.sparse_image_float32_atomics),
            ("sparseImageInt64Atomics", self.sparse_image_int64_atomics),
            ("sparseResidency16Samples", self.sparse_residency16_samples),
            ("sparseResidency2Samples", self.sparse_residency2_samples),
            ("sparseResidency4Samples", self.sparse_residency4_samples),
            ("sparseResidency8Samples", self.sparse_residency8_samples),
            ("sparseResidencyAliased", self.sparse_residency_aliased),
            ("sparseResidencyBuffer", self.sparse_residency_buffer),
            ("sparseResidencyImage2D", self.sparse_residency_image2_d),
            ("sparseResidencyImage3D", self.sparse_residency_image3_d),
            ("stippledBresenhamLines", self.stippled_bresenham_lines),
            ("stippledRectangularLines", self.stippled_rectangular_lines),
            ("stippledSmoothLines", self.stippled_smooth_lines),
            ("storageBuffer16BitAccess", self.storage_buffer16_bit_access),
            ("storageBuffer8BitAccess", self.storage_buffer8_bit_access),
            ("storageInputOutput16", self.storage_input_output16),
            ("storagePushConstant16", self.storage_push_constant16),
            ("storagePushConstant8", self.storage_push_constant8),
            ("subgroupBroadcastDynamicId", self.subgroup_broadcast_dynamic_id),
            ("subgroupSizeControl", self.subgroup_size_control),
            ("subpassMergeFeedback", self.subpass_merge_feedback),
            ("subpassShading", self.subpass_shading),
            ("supersampleFragmentShadingRates", self.supersample_fragment_shading_rates),
            ("swapchainMaintenance1", self.swapchain_maintenance1),
            ("synchronization2", self.synchronization2),
            ("taskShader", self.task_shader),
            ("tessellationIsolines", self.tessellation_isolines),
            ("tessellationPointMode", self.tessellation_point_mode),
            ("tessellationShader", self.tessellation_shader),
            ("texelBufferAlignment", self.texel_buffer_alignment),
            ("textureBlockMatch", self.texture_block_match),
            ("textureBoxFilter", self.texture_box_filter),
            ("textureCompressionASTC_HDR", self.texture_compression_astc_hdr),
            ("textureCompressionASTC_LDR", self.texture_compression_astc_ldr),
            ("textureCompressionBC", self.texture_compression_bc),
            ("textureCompressionETC2", self.texture_compression_etc2),
            ("textureSampleWeighted", self.texture_sample_weighted),
            ("tileProperties", self.tile_properties),
            ("timelineSemaphore", self.timeline_semaphore),
            ("transformFeedback", self.transform_feedback),
            (
                "transformFeedbackPreservesProvokingVertex",
                self.transform_feedback_preserves_provoking_vertex,
            ),
            ("triangleFans", self.triangle_fans),
            ("uniformAndStorageBuffer16BitAccess", self.uniform_and_storage_buffer16_bit_access),
            ("uniformAndStorageBuffer8BitAccess", self.uniform_and_storage_buffer8_bit_access),
            ("uniformBufferStandardLayout", self.uniform_buffer_standard_layout),
            ("variableMultisampleRate", self.variable_multisample_rate),
            ("variablePointers", self.variable_pointers),
            ("variablePointersStorageBuffer", self.variable_pointers_storage_buffer),
            ("vertexAttributeAccessBeyondStride", self.vertex_attribute_access_beyond_stride),
            ("vertexAttributeInstanceRateDivisor", self.vertex_attribute_instance_rate_divisor),
            (
                "vertexAttributeInstanceRateZeroDivisor",
                self.vertex_attribute_instance_rate_zero_divisor,
            ),
            ("vertexInputDynamicState", self.vertex_input_dynamic_state),
            ("vertexPipelineStoresAndAtomics", self.vertex_pipeline_stores_and_atomics),
            ("vulkanMemoryModel", self.vulkan_memory_model),
            (
                "vulkanMemoryModelAvailabilityVisibilityChains",
                self.vulkan_memory_model_availability_visibility_chains,
            ),
            ("vulkanMemoryModelDeviceScope", self.vulkan_memory_model_device_scope),
            ("wideLines", self.wide_lines),
            ("workgroupMemoryExplicitLayout", self.workgroup_memory_explicit_layout),
            (
                "workgroupMemoryExplicitLayout16BitAccess",
                self.workgroup_memory_explicit_layout16_bit_access,
            ),
            (
                "workgroupMemoryExplicitLayout8BitAccess",
                self.workgroup_memory_explicit_layout8_bit_access,
            ),
            (
                "workgroupMemoryExplicitLayoutScalarBlockLayout",
                self.workgroup_memory_explicit_layout_scalar_block_layout,
            ),
            ("ycbcr2plane444Formats", self.ycbcr2plane444_formats),
            ("ycbcrImageArrays", self.ycbcr_image_arrays),
        ]
        .into_iter()
    }
}
#[derive(Default)]
pub(crate) struct FeaturesFfi {
    features_vulkan10: ash::vk::PhysicalDeviceFeatures2KHR,
    features_vulkan11: Option<ash::vk::PhysicalDeviceVulkan11Features>,
    features_vulkan12: Option<ash::vk::PhysicalDeviceVulkan12Features>,
    features_vulkan13: Option<ash::vk::PhysicalDeviceVulkan13Features>,
    features_16bit_storage: Option<ash::vk::PhysicalDevice16BitStorageFeatures>,
    features_multiview: Option<ash::vk::PhysicalDeviceMultiviewFeatures>,
    features_protected_memory: Option<ash::vk::PhysicalDeviceProtectedMemoryFeatures>,
    features_sampler_ycbcr_conversion:
        Option<ash::vk::PhysicalDeviceSamplerYcbcrConversionFeatures>,
    features_shader_draw_parameters: Option<ash::vk::PhysicalDeviceShaderDrawParametersFeatures>,
    features_variable_pointers: Option<ash::vk::PhysicalDeviceVariablePointersFeatures>,
    features_8bit_storage: Option<ash::vk::PhysicalDevice8BitStorageFeatures>,
    features_buffer_device_address: Option<ash::vk::PhysicalDeviceBufferDeviceAddressFeatures>,
    features_descriptor_indexing: Option<ash::vk::PhysicalDeviceDescriptorIndexingFeatures>,
    features_host_query_reset: Option<ash::vk::PhysicalDeviceHostQueryResetFeatures>,
    features_imageless_framebuffer: Option<ash::vk::PhysicalDeviceImagelessFramebufferFeatures>,
    features_scalar_block_layout: Option<ash::vk::PhysicalDeviceScalarBlockLayoutFeatures>,
    features_separate_depth_stencil_layouts:
        Option<ash::vk::PhysicalDeviceSeparateDepthStencilLayoutsFeatures>,
    features_shader_atomic_int64: Option<ash::vk::PhysicalDeviceShaderAtomicInt64Features>,
    features_shader_float16_int8: Option<ash::vk::PhysicalDeviceShaderFloat16Int8Features>,
    features_shader_subgroup_extended_types:
        Option<ash::vk::PhysicalDeviceShaderSubgroupExtendedTypesFeatures>,
    features_timeline_semaphore: Option<ash::vk::PhysicalDeviceTimelineSemaphoreFeatures>,
    features_uniform_buffer_standard_layout:
        Option<ash::vk::PhysicalDeviceUniformBufferStandardLayoutFeatures>,
    features_vulkan_memory_model: Option<ash::vk::PhysicalDeviceVulkanMemoryModelFeatures>,
    features_dynamic_rendering: Option<ash::vk::PhysicalDeviceDynamicRenderingFeatures>,
    features_image_robustness: Option<ash::vk::PhysicalDeviceImageRobustnessFeatures>,
    features_inline_uniform_block: Option<ash::vk::PhysicalDeviceInlineUniformBlockFeatures>,
    features_maintenance4: Option<ash::vk::PhysicalDeviceMaintenance4Features>,
    features_pipeline_creation_cache_control:
        Option<ash::vk::PhysicalDevicePipelineCreationCacheControlFeatures>,
    features_private_data: Option<ash::vk::PhysicalDevicePrivateDataFeatures>,
    features_shader_demote_to_helper_invocation:
        Option<ash::vk::PhysicalDeviceShaderDemoteToHelperInvocationFeatures>,
    features_shader_integer_dot_product:
        Option<ash::vk::PhysicalDeviceShaderIntegerDotProductFeatures>,
    features_shader_terminate_invocation:
        Option<ash::vk::PhysicalDeviceShaderTerminateInvocationFeatures>,
    features_subgroup_size_control: Option<ash::vk::PhysicalDeviceSubgroupSizeControlFeatures>,
    features_synchronization2: Option<ash::vk::PhysicalDeviceSynchronization2Features>,
    features_texture_compression_astchdr:
        Option<ash::vk::PhysicalDeviceTextureCompressionASTCHDRFeatures>,
    features_zero_initialize_workgroup_memory:
        Option<ash::vk::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>,
    features_acceleration_structure_khr:
        Option<ash::vk::PhysicalDeviceAccelerationStructureFeaturesKHR>,
    features_fragment_shader_barycentric_khr:
        Option<ash::vk::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR>,
    features_fragment_shading_rate_khr:
        Option<ash::vk::PhysicalDeviceFragmentShadingRateFeaturesKHR>,
    features_global_priority_query_khr:
        Option<ash::vk::PhysicalDeviceGlobalPriorityQueryFeaturesKHR>,
    features_performance_query_khr: Option<ash::vk::PhysicalDevicePerformanceQueryFeaturesKHR>,
    features_pipeline_executable_properties_khr:
        Option<ash::vk::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR>,
    features_portability_subset_khr: Option<ash::vk::PhysicalDevicePortabilitySubsetFeaturesKHR>,
    features_present_id_khr: Option<ash::vk::PhysicalDevicePresentIdFeaturesKHR>,
    features_present_wait_khr: Option<ash::vk::PhysicalDevicePresentWaitFeaturesKHR>,
    features_ray_query_khr: Option<ash::vk::PhysicalDeviceRayQueryFeaturesKHR>,
    features_ray_tracing_maintenance1_khr:
        Option<ash::vk::PhysicalDeviceRayTracingMaintenance1FeaturesKHR>,
    features_ray_tracing_pipeline_khr: Option<ash::vk::PhysicalDeviceRayTracingPipelineFeaturesKHR>,
    features_shader_clock_khr: Option<ash::vk::PhysicalDeviceShaderClockFeaturesKHR>,
    features_shader_subgroup_uniform_control_flow_khr:
        Option<ash::vk::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>,
    features_workgroup_memory_explicit_layout_khr:
        Option<ash::vk::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>,
    features_4444formats_ext: Option<ash::vk::PhysicalDevice4444FormatsFeaturesEXT>,
    features_astc_decode_ext: Option<ash::vk::PhysicalDeviceASTCDecodeFeaturesEXT>,
    features_address_binding_report_ext:
        Option<ash::vk::PhysicalDeviceAddressBindingReportFeaturesEXT>,
    features_attachment_feedback_loop_layout_ext:
        Option<ash::vk::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>,
    features_blend_operation_advanced_ext:
        Option<ash::vk::PhysicalDeviceBlendOperationAdvancedFeaturesEXT>,
    features_border_color_swizzle_ext: Option<ash::vk::PhysicalDeviceBorderColorSwizzleFeaturesEXT>,
    features_buffer_device_address_ext:
        Option<ash::vk::PhysicalDeviceBufferDeviceAddressFeaturesEXT>,
    features_color_write_enable_ext: Option<ash::vk::PhysicalDeviceColorWriteEnableFeaturesEXT>,
    features_conditional_rendering_ext:
        Option<ash::vk::PhysicalDeviceConditionalRenderingFeaturesEXT>,
    features_custom_border_color_ext: Option<ash::vk::PhysicalDeviceCustomBorderColorFeaturesEXT>,
    features_depth_clamp_zero_one_ext: Option<ash::vk::PhysicalDeviceDepthClampZeroOneFeaturesEXT>,
    features_depth_clip_control_ext: Option<ash::vk::PhysicalDeviceDepthClipControlFeaturesEXT>,
    features_depth_clip_enable_ext: Option<ash::vk::PhysicalDeviceDepthClipEnableFeaturesEXT>,
    features_descriptor_buffer_ext: Option<ash::vk::PhysicalDeviceDescriptorBufferFeaturesEXT>,
    features_device_memory_report_ext: Option<ash::vk::PhysicalDeviceDeviceMemoryReportFeaturesEXT>,
    features_extended_dynamic_state2_ext:
        Option<ash::vk::PhysicalDeviceExtendedDynamicState2FeaturesEXT>,
    features_extended_dynamic_state3_ext:
        Option<ash::vk::PhysicalDeviceExtendedDynamicState3FeaturesEXT>,
    features_extended_dynamic_state_ext:
        Option<ash::vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT>,
    features_fault_ext: Option<ash::vk::PhysicalDeviceFaultFeaturesEXT>,
    features_fragment_density_map2_ext:
        Option<ash::vk::PhysicalDeviceFragmentDensityMap2FeaturesEXT>,
    features_fragment_density_map_ext: Option<ash::vk::PhysicalDeviceFragmentDensityMapFeaturesEXT>,
    features_fragment_shader_interlock_ext:
        Option<ash::vk::PhysicalDeviceFragmentShaderInterlockFeaturesEXT>,
    features_graphics_pipeline_library_ext:
        Option<ash::vk::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>,
    features_image2_d_view_of3_d_ext: Option<ash::vk::PhysicalDeviceImage2DViewOf3DFeaturesEXT>,
    features_image_compression_control_ext:
        Option<ash::vk::PhysicalDeviceImageCompressionControlFeaturesEXT>,
    features_image_compression_control_swapchain_ext:
        Option<ash::vk::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>,
    features_image_view_min_lod_ext: Option<ash::vk::PhysicalDeviceImageViewMinLodFeaturesEXT>,
    features_index_type_uint8_ext: Option<ash::vk::PhysicalDeviceIndexTypeUint8FeaturesEXT>,
    features_legacy_dithering_ext: Option<ash::vk::PhysicalDeviceLegacyDitheringFeaturesEXT>,
    features_line_rasterization_ext: Option<ash::vk::PhysicalDeviceLineRasterizationFeaturesEXT>,
    features_memory_priority_ext: Option<ash::vk::PhysicalDeviceMemoryPriorityFeaturesEXT>,
    features_mesh_shader_ext: Option<ash::vk::PhysicalDeviceMeshShaderFeaturesEXT>,
    features_multi_draw_ext: Option<ash::vk::PhysicalDeviceMultiDrawFeaturesEXT>,
    features_multisampled_render_to_single_sampled_ext:
        Option<ash::vk::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT>,
    features_mutable_descriptor_type_ext:
        Option<ash::vk::PhysicalDeviceMutableDescriptorTypeFeaturesEXT>,
    features_non_seamless_cube_map_ext:
        Option<ash::vk::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT>,
    features_opacity_micromap_ext: Option<ash::vk::PhysicalDeviceOpacityMicromapFeaturesEXT>,
    features_pageable_device_local_memory_ext:
        Option<ash::vk::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>,
    features_pipeline_properties_ext: Option<ash::vk::PhysicalDevicePipelinePropertiesFeaturesEXT>,
    features_pipeline_protected_access_ext:
        Option<ash::vk::PhysicalDevicePipelineProtectedAccessFeaturesEXT>,
    features_pipeline_robustness_ext: Option<ash::vk::PhysicalDevicePipelineRobustnessFeaturesEXT>,
    features_primitive_topology_list_restart_ext:
        Option<ash::vk::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>,
    features_primitives_generated_query_ext:
        Option<ash::vk::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>,
    features_provoking_vertex_ext: Option<ash::vk::PhysicalDeviceProvokingVertexFeaturesEXT>,
    features_rgba10x6_formats_ext: Option<ash::vk::PhysicalDeviceRGBA10X6FormatsFeaturesEXT>,
    features_rasterization_order_attachment_access_ext:
        Option<ash::vk::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT>,
    features_robustness2_ext: Option<ash::vk::PhysicalDeviceRobustness2FeaturesEXT>,
    features_shader_atomic_float2_ext: Option<ash::vk::PhysicalDeviceShaderAtomicFloat2FeaturesEXT>,
    features_shader_atomic_float_ext: Option<ash::vk::PhysicalDeviceShaderAtomicFloatFeaturesEXT>,
    features_shader_image_atomic_int64_ext:
        Option<ash::vk::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT>,
    features_shader_module_identifier_ext:
        Option<ash::vk::PhysicalDeviceShaderModuleIdentifierFeaturesEXT>,
    features_subpass_merge_feedback_ext:
        Option<ash::vk::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT>,
    features_swapchain_maintenance1_ext:
        Option<ash::vk::PhysicalDeviceSwapchainMaintenance1FeaturesEXT>,
    features_texel_buffer_alignment_ext:
        Option<ash::vk::PhysicalDeviceTexelBufferAlignmentFeaturesEXT>,
    features_transform_feedback_ext: Option<ash::vk::PhysicalDeviceTransformFeedbackFeaturesEXT>,
    features_vertex_attribute_divisor_ext:
        Option<ash::vk::PhysicalDeviceVertexAttributeDivisorFeaturesEXT>,
    features_vertex_input_dynamic_state_ext:
        Option<ash::vk::PhysicalDeviceVertexInputDynamicStateFeaturesEXT>,
    features_ycbcr2_plane444_formats_ext:
        Option<ash::vk::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>,
    features_ycbcr_image_arrays_ext: Option<ash::vk::PhysicalDeviceYcbcrImageArraysFeaturesEXT>,
    features_amigo_profiling_sec: Option<ash::vk::PhysicalDeviceAmigoProfilingFeaturesSEC>,
    features_coherent_memory_amd: Option<ash::vk::PhysicalDeviceCoherentMemoryFeaturesAMD>,
    features_compute_shader_derivatives_nv:
        Option<ash::vk::PhysicalDeviceComputeShaderDerivativesFeaturesNV>,
    features_cooperative_matrix_nv: Option<ash::vk::PhysicalDeviceCooperativeMatrixFeaturesNV>,
    features_copy_memory_indirect_nv: Option<ash::vk::PhysicalDeviceCopyMemoryIndirectFeaturesNV>,
    features_corner_sampled_image_nv: Option<ash::vk::PhysicalDeviceCornerSampledImageFeaturesNV>,
    features_coverage_reduction_mode_nv:
        Option<ash::vk::PhysicalDeviceCoverageReductionModeFeaturesNV>,
    features_dedicated_allocation_image_aliasing_nv:
        Option<ash::vk::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>,
    features_descriptor_set_host_mapping_valve:
        Option<ash::vk::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>,
    features_device_generated_commands_nv:
        Option<ash::vk::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV>,
    features_diagnostics_config_nv: Option<ash::vk::PhysicalDeviceDiagnosticsConfigFeaturesNV>,
    features_exclusive_scissor_nv: Option<ash::vk::PhysicalDeviceExclusiveScissorFeaturesNV>,
    features_external_memory_rdma_nv: Option<ash::vk::PhysicalDeviceExternalMemoryRDMAFeaturesNV>,
    features_fragment_density_map_offset_qcom:
        Option<ash::vk::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>,
    features_fragment_shading_rate_enums_nv:
        Option<ash::vk::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV>,
    features_image_processing_qcom: Option<ash::vk::PhysicalDeviceImageProcessingFeaturesQCOM>,
    features_inherited_viewport_scissor_nv:
        Option<ash::vk::PhysicalDeviceInheritedViewportScissorFeaturesNV>,
    features_invocation_mask_huawei: Option<ash::vk::PhysicalDeviceInvocationMaskFeaturesHUAWEI>,
    features_linear_color_attachment_nv:
        Option<ash::vk::PhysicalDeviceLinearColorAttachmentFeaturesNV>,
    features_memory_decompression_nv: Option<ash::vk::PhysicalDeviceMemoryDecompressionFeaturesNV>,
    features_mesh_shader_nv: Option<ash::vk::PhysicalDeviceMeshShaderFeaturesNV>,
    features_multiview_per_view_viewports_qcom:
        Option<ash::vk::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM>,
    features_optical_flow_nv: Option<ash::vk::PhysicalDeviceOpticalFlowFeaturesNV>,
    features_present_barrier_nv: Option<ash::vk::PhysicalDevicePresentBarrierFeaturesNV>,
    features_ray_tracing_invocation_reorder_nv:
        Option<ash::vk::PhysicalDeviceRayTracingInvocationReorderFeaturesNV>,
    features_ray_tracing_motion_blur_nv:
        Option<ash::vk::PhysicalDeviceRayTracingMotionBlurFeaturesNV>,
    features_representative_fragment_test_nv:
        Option<ash::vk::PhysicalDeviceRepresentativeFragmentTestFeaturesNV>,
    features_shader_core_builtins_arm: Option<ash::vk::PhysicalDeviceShaderCoreBuiltinsFeaturesARM>,
    features_shader_early_and_late_fragment_tests_amd:
        Option<ash::vk::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD>,
    features_shader_image_footprint_nv:
        Option<ash::vk::PhysicalDeviceShaderImageFootprintFeaturesNV>,
    features_shader_integer_functions2_intel:
        Option<ash::vk::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>,
    features_shader_sm_builtins_nv: Option<ash::vk::PhysicalDeviceShaderSMBuiltinsFeaturesNV>,
    features_shading_rate_image_nv: Option<ash::vk::PhysicalDeviceShadingRateImageFeaturesNV>,
    features_subpass_shading_huawei: Option<ash::vk::PhysicalDeviceSubpassShadingFeaturesHUAWEI>,
    features_tile_properties_qcom: Option<ash::vk::PhysicalDeviceTilePropertiesFeaturesQCOM>,
}
impl FeaturesFfi {
    pub(crate) fn make_chain(
        &mut self,
        api_version: crate::Version,
        device_extensions: &crate::device::DeviceExtensions,
        _instance_extensions: &crate::instance::InstanceExtensions,
    ) {
        self.features_vulkan10 = Default::default();
        let head = &mut self.features_vulkan10;
        if [api_version >= crate::Version::V1_2].into_iter().any(|x| x) && [].into_iter().all(|x| x)
        {
            self.features_vulkan11 = Some(Default::default());
            let member = self.features_vulkan11.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_2].into_iter().any(|x| x) && [].into_iter().all(|x| x)
        {
            self.features_vulkan12 = Some(Default::default());
            let member = self.features_vulkan12.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_3].into_iter().any(|x| x) && [].into_iter().all(|x| x)
        {
            self.features_vulkan13 = Some(Default::default());
            let member = self.features_vulkan13.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_1, device_extensions.khr_16bit_storage]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan11.is_none()].into_iter().all(|x| x)
        {
            self.features_16bit_storage = Some(Default::default());
            let member = self.features_16bit_storage.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_1, device_extensions.khr_multiview]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan11.is_none()].into_iter().all(|x| x)
        {
            self.features_multiview = Some(Default::default());
            let member = self.features_multiview.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_1].into_iter().any(|x| x)
            && [self.features_vulkan11.is_none()].into_iter().all(|x| x)
        {
            self.features_protected_memory = Some(Default::default());
            let member = self.features_protected_memory.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_1, device_extensions.khr_sampler_ycbcr_conversion]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan11.is_none()].into_iter().all(|x| x)
        {
            self.features_sampler_ycbcr_conversion = Some(Default::default());
            let member = self.features_sampler_ycbcr_conversion.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_1].into_iter().any(|x| x)
            && [self.features_vulkan11.is_none()].into_iter().all(|x| x)
        {
            self.features_shader_draw_parameters = Some(Default::default());
            let member = self.features_shader_draw_parameters.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_1, device_extensions.khr_variable_pointers]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan11.is_none()].into_iter().all(|x| x)
        {
            self.features_variable_pointers = Some(Default::default());
            let member = self.features_variable_pointers.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_2, device_extensions.khr_8bit_storage]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_8bit_storage = Some(Default::default());
            let member = self.features_8bit_storage.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_2, device_extensions.khr_buffer_device_address]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_buffer_device_address = Some(Default::default());
            let member = self.features_buffer_device_address.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_2, device_extensions.ext_descriptor_indexing]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_descriptor_indexing = Some(Default::default());
            let member = self.features_descriptor_indexing.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_2, device_extensions.ext_host_query_reset]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_host_query_reset = Some(Default::default());
            let member = self.features_host_query_reset.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_2, device_extensions.khr_imageless_framebuffer]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_imageless_framebuffer = Some(Default::default());
            let member = self.features_imageless_framebuffer.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_2, device_extensions.ext_scalar_block_layout]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_scalar_block_layout = Some(Default::default());
            let member = self.features_scalar_block_layout.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [
            api_version >= crate::Version::V1_2,
            device_extensions.khr_separate_depth_stencil_layouts,
        ]
        .into_iter()
        .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_separate_depth_stencil_layouts = Some(Default::default());
            let member = self.features_separate_depth_stencil_layouts.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_2, device_extensions.khr_shader_atomic_int64]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_shader_atomic_int64 = Some(Default::default());
            let member = self.features_shader_atomic_int64.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_2, device_extensions.khr_shader_float16_int8]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_shader_float16_int8 = Some(Default::default());
            let member = self.features_shader_float16_int8.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [
            api_version >= crate::Version::V1_2,
            device_extensions.khr_shader_subgroup_extended_types,
        ]
        .into_iter()
        .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_shader_subgroup_extended_types = Some(Default::default());
            let member = self.features_shader_subgroup_extended_types.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_2, device_extensions.khr_timeline_semaphore]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_timeline_semaphore = Some(Default::default());
            let member = self.features_timeline_semaphore.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [
            api_version >= crate::Version::V1_2,
            device_extensions.khr_uniform_buffer_standard_layout,
        ]
        .into_iter()
        .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_uniform_buffer_standard_layout = Some(Default::default());
            let member = self.features_uniform_buffer_standard_layout.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_2, device_extensions.khr_vulkan_memory_model]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan12.is_none()].into_iter().all(|x| x)
        {
            self.features_vulkan_memory_model = Some(Default::default());
            let member = self.features_vulkan_memory_model.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_3, device_extensions.khr_dynamic_rendering]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_dynamic_rendering = Some(Default::default());
            let member = self.features_dynamic_rendering.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_3, device_extensions.ext_image_robustness]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_image_robustness = Some(Default::default());
            let member = self.features_image_robustness.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_3, device_extensions.ext_inline_uniform_block]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_inline_uniform_block = Some(Default::default());
            let member = self.features_inline_uniform_block.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_3, device_extensions.khr_maintenance4]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_maintenance4 = Some(Default::default());
            let member = self.features_maintenance4.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [
            api_version >= crate::Version::V1_3,
            device_extensions.ext_pipeline_creation_cache_control,
        ]
        .into_iter()
        .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_pipeline_creation_cache_control = Some(Default::default());
            let member = self.features_pipeline_creation_cache_control.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_3, device_extensions.ext_private_data]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_private_data = Some(Default::default());
            let member = self.features_private_data.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [
            api_version >= crate::Version::V1_3,
            device_extensions.ext_shader_demote_to_helper_invocation,
        ]
        .into_iter()
        .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_shader_demote_to_helper_invocation = Some(Default::default());
            let member = self.features_shader_demote_to_helper_invocation.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_3, device_extensions.khr_shader_integer_dot_product]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_shader_integer_dot_product = Some(Default::default());
            let member = self.features_shader_integer_dot_product.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_3, device_extensions.khr_shader_terminate_invocation]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_shader_terminate_invocation = Some(Default::default());
            let member = self.features_shader_terminate_invocation.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_3, device_extensions.ext_subgroup_size_control]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_subgroup_size_control = Some(Default::default());
            let member = self.features_subgroup_size_control.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_3, device_extensions.khr_synchronization2]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_synchronization2 = Some(Default::default());
            let member = self.features_synchronization2.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [api_version >= crate::Version::V1_3, device_extensions.ext_texture_compression_astc_hdr]
            .into_iter()
            .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_texture_compression_astchdr = Some(Default::default());
            let member = self.features_texture_compression_astchdr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [
            api_version >= crate::Version::V1_3,
            device_extensions.khr_zero_initialize_workgroup_memory,
        ]
        .into_iter()
        .any(|x| x)
            && [self.features_vulkan13.is_none()].into_iter().all(|x| x)
        {
            self.features_zero_initialize_workgroup_memory = Some(Default::default());
            let member = self.features_zero_initialize_workgroup_memory.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_acceleration_structure].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_acceleration_structure_khr = Some(Default::default());
            let member = self.features_acceleration_structure_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [
            device_extensions.khr_fragment_shader_barycentric,
            device_extensions.nv_fragment_shader_barycentric,
        ]
        .into_iter()
        .any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_fragment_shader_barycentric_khr = Some(Default::default());
            let member = self.features_fragment_shader_barycentric_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_fragment_shading_rate].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_fragment_shading_rate_khr = Some(Default::default());
            let member = self.features_fragment_shading_rate_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_global_priority, device_extensions.ext_global_priority_query]
            .into_iter()
            .any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_global_priority_query_khr = Some(Default::default());
            let member = self.features_global_priority_query_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_performance_query].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_performance_query_khr = Some(Default::default());
            let member = self.features_performance_query_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_pipeline_executable_properties].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_pipeline_executable_properties_khr = Some(Default::default());
            let member = self.features_pipeline_executable_properties_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_portability_subset].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_portability_subset_khr = Some(Default::default());
            let member = self.features_portability_subset_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_present_id].into_iter().any(|x| x) && [].into_iter().all(|x| x) {
            self.features_present_id_khr = Some(Default::default());
            let member = self.features_present_id_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_present_wait].into_iter().any(|x| x) && [].into_iter().all(|x| x)
        {
            self.features_present_wait_khr = Some(Default::default());
            let member = self.features_present_wait_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_ray_query].into_iter().any(|x| x) && [].into_iter().all(|x| x) {
            self.features_ray_query_khr = Some(Default::default());
            let member = self.features_ray_query_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_ray_tracing_maintenance1].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_ray_tracing_maintenance1_khr = Some(Default::default());
            let member = self.features_ray_tracing_maintenance1_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_ray_tracing_pipeline].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_ray_tracing_pipeline_khr = Some(Default::default());
            let member = self.features_ray_tracing_pipeline_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_shader_clock].into_iter().any(|x| x) && [].into_iter().all(|x| x)
        {
            self.features_shader_clock_khr = Some(Default::default());
            let member = self.features_shader_clock_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_shader_subgroup_uniform_control_flow].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_shader_subgroup_uniform_control_flow_khr = Some(Default::default());
            let member = self.features_shader_subgroup_uniform_control_flow_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.khr_workgroup_memory_explicit_layout].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_workgroup_memory_explicit_layout_khr = Some(Default::default());
            let member = self.features_workgroup_memory_explicit_layout_khr.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_4444_formats].into_iter().any(|x| x) && [].into_iter().all(|x| x)
        {
            self.features_4444formats_ext = Some(Default::default());
            let member = self.features_4444formats_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_astc_decode_mode].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_astc_decode_ext = Some(Default::default());
            let member = self.features_astc_decode_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_device_address_binding_report].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_address_binding_report_ext = Some(Default::default());
            let member = self.features_address_binding_report_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_attachment_feedback_loop_layout].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_attachment_feedback_loop_layout_ext = Some(Default::default());
            let member = self.features_attachment_feedback_loop_layout_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_blend_operation_advanced].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_blend_operation_advanced_ext = Some(Default::default());
            let member = self.features_blend_operation_advanced_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_border_color_swizzle].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_border_color_swizzle_ext = Some(Default::default());
            let member = self.features_border_color_swizzle_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_buffer_device_address].into_iter().any(|x| x)
            && [self.features_vulkan12.is_none(), self.features_buffer_device_address.is_none()]
                .into_iter()
                .all(|x| x)
        {
            self.features_buffer_device_address_ext = Some(Default::default());
            let member = self.features_buffer_device_address_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_color_write_enable].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_color_write_enable_ext = Some(Default::default());
            let member = self.features_color_write_enable_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_conditional_rendering].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_conditional_rendering_ext = Some(Default::default());
            let member = self.features_conditional_rendering_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_custom_border_color].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_custom_border_color_ext = Some(Default::default());
            let member = self.features_custom_border_color_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_depth_clamp_zero_one].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_depth_clamp_zero_one_ext = Some(Default::default());
            let member = self.features_depth_clamp_zero_one_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_depth_clip_control].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_depth_clip_control_ext = Some(Default::default());
            let member = self.features_depth_clip_control_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_depth_clip_enable].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_depth_clip_enable_ext = Some(Default::default());
            let member = self.features_depth_clip_enable_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_descriptor_buffer].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_descriptor_buffer_ext = Some(Default::default());
            let member = self.features_descriptor_buffer_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_device_memory_report].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_device_memory_report_ext = Some(Default::default());
            let member = self.features_device_memory_report_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_extended_dynamic_state2].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_extended_dynamic_state2_ext = Some(Default::default());
            let member = self.features_extended_dynamic_state2_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_extended_dynamic_state3].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_extended_dynamic_state3_ext = Some(Default::default());
            let member = self.features_extended_dynamic_state3_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_extended_dynamic_state].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_extended_dynamic_state_ext = Some(Default::default());
            let member = self.features_extended_dynamic_state_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_device_fault].into_iter().any(|x| x) && [].into_iter().all(|x| x)
        {
            self.features_fault_ext = Some(Default::default());
            let member = self.features_fault_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_fragment_density_map2].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_fragment_density_map2_ext = Some(Default::default());
            let member = self.features_fragment_density_map2_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_fragment_density_map].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_fragment_density_map_ext = Some(Default::default());
            let member = self.features_fragment_density_map_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_fragment_shader_interlock].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_fragment_shader_interlock_ext = Some(Default::default());
            let member = self.features_fragment_shader_interlock_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_graphics_pipeline_library].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_graphics_pipeline_library_ext = Some(Default::default());
            let member = self.features_graphics_pipeline_library_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_image_2d_view_of_3d].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_image2_d_view_of3_d_ext = Some(Default::default());
            let member = self.features_image2_d_view_of3_d_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_image_compression_control].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_image_compression_control_ext = Some(Default::default());
            let member = self.features_image_compression_control_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_image_compression_control_swapchain].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_image_compression_control_swapchain_ext = Some(Default::default());
            let member = self.features_image_compression_control_swapchain_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_image_view_min_lod].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_image_view_min_lod_ext = Some(Default::default());
            let member = self.features_image_view_min_lod_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_index_type_uint8].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_index_type_uint8_ext = Some(Default::default());
            let member = self.features_index_type_uint8_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_legacy_dithering].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_legacy_dithering_ext = Some(Default::default());
            let member = self.features_legacy_dithering_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_line_rasterization].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_line_rasterization_ext = Some(Default::default());
            let member = self.features_line_rasterization_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_memory_priority].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_memory_priority_ext = Some(Default::default());
            let member = self.features_memory_priority_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_mesh_shader].into_iter().any(|x| x) && [].into_iter().all(|x| x) {
            self.features_mesh_shader_ext = Some(Default::default());
            let member = self.features_mesh_shader_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_multi_draw].into_iter().any(|x| x) && [].into_iter().all(|x| x) {
            self.features_multi_draw_ext = Some(Default::default());
            let member = self.features_multi_draw_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_multisampled_render_to_single_sampled].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_multisampled_render_to_single_sampled_ext = Some(Default::default());
            let member = self.features_multisampled_render_to_single_sampled_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [
            device_extensions.ext_mutable_descriptor_type,
            device_extensions.valve_mutable_descriptor_type,
        ]
        .into_iter()
        .any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_mutable_descriptor_type_ext = Some(Default::default());
            let member = self.features_mutable_descriptor_type_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_non_seamless_cube_map].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_non_seamless_cube_map_ext = Some(Default::default());
            let member = self.features_non_seamless_cube_map_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_opacity_micromap].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_opacity_micromap_ext = Some(Default::default());
            let member = self.features_opacity_micromap_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_pageable_device_local_memory].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_pageable_device_local_memory_ext = Some(Default::default());
            let member = self.features_pageable_device_local_memory_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_pipeline_properties].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_pipeline_properties_ext = Some(Default::default());
            let member = self.features_pipeline_properties_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_pipeline_protected_access].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_pipeline_protected_access_ext = Some(Default::default());
            let member = self.features_pipeline_protected_access_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_pipeline_robustness].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_pipeline_robustness_ext = Some(Default::default());
            let member = self.features_pipeline_robustness_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_primitive_topology_list_restart].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_primitive_topology_list_restart_ext = Some(Default::default());
            let member = self.features_primitive_topology_list_restart_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_primitives_generated_query].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_primitives_generated_query_ext = Some(Default::default());
            let member = self.features_primitives_generated_query_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_provoking_vertex].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_provoking_vertex_ext = Some(Default::default());
            let member = self.features_provoking_vertex_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_rgba10x6_formats].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_rgba10x6_formats_ext = Some(Default::default());
            let member = self.features_rgba10x6_formats_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [
            device_extensions.ext_rasterization_order_attachment_access,
            device_extensions.arm_rasterization_order_attachment_access,
        ]
        .into_iter()
        .any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_rasterization_order_attachment_access_ext = Some(Default::default());
            let member = self.features_rasterization_order_attachment_access_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_robustness2].into_iter().any(|x| x) && [].into_iter().all(|x| x) {
            self.features_robustness2_ext = Some(Default::default());
            let member = self.features_robustness2_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_shader_atomic_float2].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_shader_atomic_float2_ext = Some(Default::default());
            let member = self.features_shader_atomic_float2_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_shader_atomic_float].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_shader_atomic_float_ext = Some(Default::default());
            let member = self.features_shader_atomic_float_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_shader_image_atomic_int64].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_shader_image_atomic_int64_ext = Some(Default::default());
            let member = self.features_shader_image_atomic_int64_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_shader_module_identifier].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_shader_module_identifier_ext = Some(Default::default());
            let member = self.features_shader_module_identifier_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_subpass_merge_feedback].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_subpass_merge_feedback_ext = Some(Default::default());
            let member = self.features_subpass_merge_feedback_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_swapchain_maintenance1].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_swapchain_maintenance1_ext = Some(Default::default());
            let member = self.features_swapchain_maintenance1_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_texel_buffer_alignment].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_texel_buffer_alignment_ext = Some(Default::default());
            let member = self.features_texel_buffer_alignment_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_transform_feedback].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_transform_feedback_ext = Some(Default::default());
            let member = self.features_transform_feedback_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_vertex_attribute_divisor].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_vertex_attribute_divisor_ext = Some(Default::default());
            let member = self.features_vertex_attribute_divisor_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_vertex_input_dynamic_state].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_vertex_input_dynamic_state_ext = Some(Default::default());
            let member = self.features_vertex_input_dynamic_state_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_ycbcr_2plane_444_formats].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_ycbcr2_plane444_formats_ext = Some(Default::default());
            let member = self.features_ycbcr2_plane444_formats_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.ext_ycbcr_image_arrays].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_ycbcr_image_arrays_ext = Some(Default::default());
            let member = self.features_ycbcr_image_arrays_ext.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.sec_amigo_profiling].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_amigo_profiling_sec = Some(Default::default());
            let member = self.features_amigo_profiling_sec.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.amd_device_coherent_memory].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_coherent_memory_amd = Some(Default::default());
            let member = self.features_coherent_memory_amd.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_compute_shader_derivatives].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_compute_shader_derivatives_nv = Some(Default::default());
            let member = self.features_compute_shader_derivatives_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_cooperative_matrix].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_cooperative_matrix_nv = Some(Default::default());
            let member = self.features_cooperative_matrix_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_copy_memory_indirect].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_copy_memory_indirect_nv = Some(Default::default());
            let member = self.features_copy_memory_indirect_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_corner_sampled_image].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_corner_sampled_image_nv = Some(Default::default());
            let member = self.features_corner_sampled_image_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_coverage_reduction_mode].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_coverage_reduction_mode_nv = Some(Default::default());
            let member = self.features_coverage_reduction_mode_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_dedicated_allocation_image_aliasing].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_dedicated_allocation_image_aliasing_nv = Some(Default::default());
            let member = self.features_dedicated_allocation_image_aliasing_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.valve_descriptor_set_host_mapping].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_descriptor_set_host_mapping_valve = Some(Default::default());
            let member = self.features_descriptor_set_host_mapping_valve.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_device_generated_commands].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_device_generated_commands_nv = Some(Default::default());
            let member = self.features_device_generated_commands_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_device_diagnostics_config].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_diagnostics_config_nv = Some(Default::default());
            let member = self.features_diagnostics_config_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_scissor_exclusive].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_exclusive_scissor_nv = Some(Default::default());
            let member = self.features_exclusive_scissor_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_external_memory_rdma].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_external_memory_rdma_nv = Some(Default::default());
            let member = self.features_external_memory_rdma_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.qcom_fragment_density_map_offset].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_fragment_density_map_offset_qcom = Some(Default::default());
            let member = self.features_fragment_density_map_offset_qcom.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_fragment_shading_rate_enums].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_fragment_shading_rate_enums_nv = Some(Default::default());
            let member = self.features_fragment_shading_rate_enums_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.qcom_image_processing].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_image_processing_qcom = Some(Default::default());
            let member = self.features_image_processing_qcom.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_inherited_viewport_scissor].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_inherited_viewport_scissor_nv = Some(Default::default());
            let member = self.features_inherited_viewport_scissor_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.huawei_invocation_mask].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_invocation_mask_huawei = Some(Default::default());
            let member = self.features_invocation_mask_huawei.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_linear_color_attachment].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_linear_color_attachment_nv = Some(Default::default());
            let member = self.features_linear_color_attachment_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_memory_decompression].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_memory_decompression_nv = Some(Default::default());
            let member = self.features_memory_decompression_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_mesh_shader].into_iter().any(|x| x)
            && [self.features_mesh_shader_ext.is_none()].into_iter().all(|x| x)
        {
            self.features_mesh_shader_nv = Some(Default::default());
            let member = self.features_mesh_shader_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.qcom_multiview_per_view_viewports].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_multiview_per_view_viewports_qcom = Some(Default::default());
            let member = self.features_multiview_per_view_viewports_qcom.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_optical_flow].into_iter().any(|x| x) && [].into_iter().all(|x| x) {
            self.features_optical_flow_nv = Some(Default::default());
            let member = self.features_optical_flow_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_present_barrier].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_present_barrier_nv = Some(Default::default());
            let member = self.features_present_barrier_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_ray_tracing_invocation_reorder].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_ray_tracing_invocation_reorder_nv = Some(Default::default());
            let member = self.features_ray_tracing_invocation_reorder_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_ray_tracing_motion_blur].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_ray_tracing_motion_blur_nv = Some(Default::default());
            let member = self.features_ray_tracing_motion_blur_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_representative_fragment_test].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_representative_fragment_test_nv = Some(Default::default());
            let member = self.features_representative_fragment_test_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.arm_shader_core_builtins].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_shader_core_builtins_arm = Some(Default::default());
            let member = self.features_shader_core_builtins_arm.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.amd_shader_early_and_late_fragment_tests].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_shader_early_and_late_fragment_tests_amd = Some(Default::default());
            let member = self.features_shader_early_and_late_fragment_tests_amd.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_shader_image_footprint].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_shader_image_footprint_nv = Some(Default::default());
            let member = self.features_shader_image_footprint_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.intel_shader_integer_functions2].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_shader_integer_functions2_intel = Some(Default::default());
            let member = self.features_shader_integer_functions2_intel.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_shader_sm_builtins].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_shader_sm_builtins_nv = Some(Default::default());
            let member = self.features_shader_sm_builtins_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.nv_shading_rate_image].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_shading_rate_image_nv = Some(Default::default());
            let member = self.features_shading_rate_image_nv.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.huawei_subpass_shading].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_subpass_shading_huawei = Some(Default::default());
            let member = self.features_subpass_shading_huawei.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
        if [device_extensions.qcom_tile_properties].into_iter().any(|x| x)
            && [].into_iter().all(|x| x)
        {
            self.features_tile_properties_qcom = Some(Default::default());
            let member = self.features_tile_properties_qcom.as_mut().unwrap();
            member.p_next = head.p_next;
            head.p_next = member as *mut _ as _;
        }
    }
    pub(crate) fn head_as_ref(&self) -> &ash::vk::PhysicalDeviceFeatures2KHR {
        &self.features_vulkan10
    }
    pub(crate) fn head_as_mut(&mut self) -> &mut ash::vk::PhysicalDeviceFeatures2KHR {
        &mut self.features_vulkan10
    }
}
