1 // This file is auto-generated by vulkano autogen from vk.xml header version 1.3.238. 2 // It should not be edited manually. Changes should be made by editing autogen. 3 4 #[doc = r" Represents all the features that are available on a physical device or enabled on"] 5 #[doc = r" a logical device."] 6 #[doc = r""] 7 #[doc = r" Note that the `robust_buffer_access` is guaranteed to be supported by all Vulkan"] 8 #[doc = r" implementations."] 9 #[doc = r""] 10 #[doc = r" # Examples"] 11 #[doc = r""] 12 #[doc = r" ```"] 13 #[doc = r" use vulkano::device::Features;"] 14 #[doc = r" # let physical_device: vulkano::device::physical::PhysicalDevice = return;"] 15 #[doc = r" let minimal_features = Features {"] 16 #[doc = r" geometry_shader: true,"] 17 #[doc = r" ..Features::empty()"] 18 #[doc = r" };"] 19 #[doc = r""] 20 #[doc = r" let optimal_features = vulkano::device::Features {"] 21 #[doc = r" geometry_shader: true,"] 22 #[doc = r" tessellation_shader: true,"] 23 #[doc = r" ..Features::empty()"] 24 #[doc = r" };"] 25 #[doc = r""] 26 #[doc = r" if !physical_device.supported_features().is_superset_of(&minimal_features) {"] 27 #[doc = r#" panic!("The physical device is not good enough for this application.");"#] 28 #[doc = r" }"] 29 #[doc = r""] 30 #[doc = r" assert!(optimal_features.is_superset_of(&minimal_features));"] 31 #[doc = r" let features_to_request = optimal_features.intersection(physical_device.supported_features());"] 32 #[doc = r" ```"] 33 #[derive(Copy, Clone, PartialEq, Eq, Hash)] 34 pub struct Features { 35 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructure)"] 36 pub acceleration_structure: bool, 37 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructureCaptureReplay)"] 38 pub acceleration_structure_capture_replay: bool, 39 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructureHostCommands)"] 40 pub acceleration_structure_host_commands: bool, 41 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructureIndirectBuild)"] 42 pub acceleration_structure_indirect_build: bool, 43 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html#features-advancedBlendCoherentOperations)"] 44 pub advanced_blend_coherent_operations: bool, 45 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-alphaToOne)"] 46 pub alpha_to_one: bool, 47 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAmigoProfilingFeaturesSEC.html#features-amigoProfiling)"] 48 pub amigo_profiling: bool, 49 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.html#features-attachmentFeedbackLoopLayout)"] 50 pub attachment_feedback_loop_layout: bool, 51 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html#features-attachmentFragmentShadingRate)\n- Conflicts with features: [`shading_rate_image`](crate::device::Features::shading_rate_image), [`fragment_density_map`](crate::device::Features::fragment_density_map)"] 52 pub attachment_fragment_shading_rate: bool, 53 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html#features-borderColorSwizzle)"] 54 pub border_color_swizzle: bool, 55 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html#features-borderColorSwizzleFromImage)"] 56 pub border_color_swizzle_from_image: bool, 57 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-bresenhamLines)"] 58 pub bresenham_lines: bool, 59 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-bufferDeviceAddress)"] 60 pub buffer_device_address: bool, 61 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-bufferDeviceAddressCaptureReplay)"] 62 pub buffer_device_address_capture_replay: bool, 63 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-bufferDeviceAddressMultiDevice)"] 64 pub buffer_device_address_multi_device: bool, 65 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html#features-colorWriteEnable)"] 66 pub color_write_enable: bool, 67 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html#features-computeDerivativeGroupLinear)"] 68 pub compute_derivative_group_linear: bool, 69 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html#features-computeDerivativeGroupQuads)"] 70 pub compute_derivative_group_quads: bool, 71 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-computeFullSubgroups)"] 72 pub compute_full_subgroups: bool, 73 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html#features-conditionalRendering)"] 74 pub conditional_rendering: bool, 75 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-constantAlphaColorBlendFactors)"] 76 pub constant_alpha_color_blend_factors: bool, 77 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html#features-cooperativeMatrix)"] 78 pub cooperative_matrix: bool, 79 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html#features-cooperativeMatrixRobustBufferAccess)"] 80 pub cooperative_matrix_robust_buffer_access: bool, 81 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html#features-cornerSampledImage)"] 82 pub corner_sampled_image: bool, 83 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html#features-coverageReductionMode)"] 84 pub coverage_reduction_mode: bool, 85 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html#features-customBorderColorWithoutFormat)"] 86 pub custom_border_color_without_format: bool, 87 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html#features-customBorderColors)"] 88 pub custom_border_colors: bool, 89 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html#features-decodeModeSharedExponent)"] 90 pub decode_mode_shared_exponent: bool, 91 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html#features-dedicatedAllocationImageAliasing)"] 92 pub dedicated_allocation_image_aliasing: bool, 93 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-depthBiasClamp)"] 94 pub depth_bias_clamp: bool, 95 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-depthBounds)"] 96 pub depth_bounds: bool, 97 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-depthClamp)"] 98 pub depth_clamp: bool, 99 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.html#features-depthClampZeroOne)"] 100 pub depth_clamp_zero_one: bool, 101 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html#features-depthClipControl)"] 102 pub depth_clip_control: bool, 103 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html#features-depthClipEnable)"] 104 pub depth_clip_enable: bool, 105 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-descriptorBindingAccelerationStructureUpdateAfterBind)"] 106 pub descriptor_binding_acceleration_structure_update_after_bind: bool, 107 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-descriptorBindingInlineUniformBlockUpdateAfterBind)"] 108 pub descriptor_binding_inline_uniform_block_update_after_bind: bool, 109 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingPartiallyBound)"] 110 pub descriptor_binding_partially_bound: bool, 111 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingSampledImageUpdateAfterBind)"] 112 pub descriptor_binding_sampled_image_update_after_bind: bool, 113 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingStorageBufferUpdateAfterBind)"] 114 pub descriptor_binding_storage_buffer_update_after_bind: bool, 115 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingStorageImageUpdateAfterBind)"] 116 pub descriptor_binding_storage_image_update_after_bind: bool, 117 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingStorageTexelBufferUpdateAfterBind)"] 118 pub descriptor_binding_storage_texel_buffer_update_after_bind: bool, 119 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingUniformBufferUpdateAfterBind)"] 120 pub descriptor_binding_uniform_buffer_update_after_bind: bool, 121 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingUniformTexelBufferUpdateAfterBind)"] 122 pub descriptor_binding_uniform_texel_buffer_update_after_bind: bool, 123 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingUpdateUnusedWhilePending)"] 124 pub descriptor_binding_update_unused_while_pending: bool, 125 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingVariableDescriptorCount)"] 126 pub descriptor_binding_variable_descriptor_count: bool, 127 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBuffer)"] 128 pub descriptor_buffer: bool, 129 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBufferCaptureReplay)"] 130 pub descriptor_buffer_capture_replay: bool, 131 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBufferImageLayoutIgnored)"] 132 pub descriptor_buffer_image_layout_ignored: bool, 133 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBufferPushDescriptors)"] 134 pub descriptor_buffer_push_descriptors: bool, 135 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorIndexing)\n- Required by device extension: [`ext_descriptor_indexing`](crate::device::DeviceExtensions::ext_descriptor_indexing)"] 136 pub descriptor_indexing: bool, 137 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.html#features-descriptorSetHostMapping)"] 138 pub descriptor_set_host_mapping: bool, 139 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html#features-deviceCoherentMemory)"] 140 pub device_coherent_memory: bool, 141 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFaultFeaturesEXT.html#features-deviceFault)"] 142 pub device_fault: bool, 143 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFaultFeaturesEXT.html#features-deviceFaultVendorBinary)"] 144 pub device_fault_vendor_binary: bool, 145 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html#features-deviceGeneratedCommands)"] 146 pub device_generated_commands: bool, 147 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html#features-deviceMemoryReport)"] 148 pub device_memory_report: bool, 149 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html#features-diagnosticsConfig)"] 150 pub diagnostics_config: bool, 151 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-drawIndirectCount)\n- Required by device extension: [`khr_draw_indirect_count`](crate::device::DeviceExtensions::khr_draw_indirect_count)"] 152 pub draw_indirect_count: bool, 153 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-drawIndirectFirstInstance)"] 154 pub draw_indirect_first_instance: bool, 155 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-dualSrcBlend)"] 156 pub dual_src_blend: bool, 157 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-dynamicRendering)"] 158 pub dynamic_rendering: bool, 159 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-events)"] 160 pub events: bool, 161 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html#features-exclusiveScissor)"] 162 pub exclusive_scissor: bool, 163 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html#features-extendedDynamicState)"] 164 pub extended_dynamic_state: bool, 165 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html#features-extendedDynamicState2)"] 166 pub extended_dynamic_state2: bool, 167 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html#features-extendedDynamicState2LogicOp)"] 168 pub extended_dynamic_state2_logic_op: bool, 169 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html#features-extendedDynamicState2PatchControlPoints)"] 170 pub extended_dynamic_state2_patch_control_points: bool, 171 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3AlphaToCoverageEnable)"] 172 pub extended_dynamic_state3_alpha_to_coverage_enable: bool, 173 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3AlphaToOneEnable)"] 174 pub extended_dynamic_state3_alpha_to_one_enable: bool, 175 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorBlendAdvanced)"] 176 pub extended_dynamic_state3_color_blend_advanced: bool, 177 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorBlendEnable)"] 178 pub extended_dynamic_state3_color_blend_enable: bool, 179 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorBlendEquation)"] 180 pub extended_dynamic_state3_color_blend_equation: bool, 181 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorWriteMask)"] 182 pub extended_dynamic_state3_color_write_mask: bool, 183 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ConservativeRasterizationMode)"] 184 pub extended_dynamic_state3_conservative_rasterization_mode: bool, 185 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageModulationMode)"] 186 pub extended_dynamic_state3_coverage_modulation_mode: bool, 187 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageModulationTable)"] 188 pub extended_dynamic_state3_coverage_modulation_table: bool, 189 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageModulationTableEnable)"] 190 pub extended_dynamic_state3_coverage_modulation_table_enable: bool, 191 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageReductionMode)"] 192 pub extended_dynamic_state3_coverage_reduction_mode: bool, 193 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageToColorEnable)"] 194 pub extended_dynamic_state3_coverage_to_color_enable: bool, 195 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageToColorLocation)"] 196 pub extended_dynamic_state3_coverage_to_color_location: bool, 197 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3DepthClampEnable)"] 198 pub extended_dynamic_state3_depth_clamp_enable: bool, 199 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3DepthClipEnable)"] 200 pub extended_dynamic_state3_depth_clip_enable: bool, 201 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3DepthClipNegativeOneToOne)"] 202 pub extended_dynamic_state3_depth_clip_negative_one_to_one: bool, 203 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ExtraPrimitiveOverestimationSize)"] 204 pub extended_dynamic_state3_extra_primitive_overestimation_size: bool, 205 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3LineRasterizationMode)"] 206 pub extended_dynamic_state3_line_rasterization_mode: bool, 207 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3LineStippleEnable)"] 208 pub extended_dynamic_state3_line_stipple_enable: bool, 209 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3LogicOpEnable)"] 210 pub extended_dynamic_state3_logic_op_enable: bool, 211 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3PolygonMode)"] 212 pub extended_dynamic_state3_polygon_mode: bool, 213 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ProvokingVertexMode)"] 214 pub extended_dynamic_state3_provoking_vertex_mode: bool, 215 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3RasterizationSamples)"] 216 pub extended_dynamic_state3_rasterization_samples: bool, 217 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3RasterizationStream)"] 218 pub extended_dynamic_state3_rasterization_stream: bool, 219 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3RepresentativeFragmentTestEnable)"] 220 pub extended_dynamic_state3_representative_fragment_test_enable: bool, 221 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3SampleLocationsEnable)"] 222 pub extended_dynamic_state3_sample_locations_enable: bool, 223 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3SampleMask)"] 224 pub extended_dynamic_state3_sample_mask: bool, 225 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ShadingRateImageEnable)"] 226 pub extended_dynamic_state3_shading_rate_image_enable: bool, 227 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3TessellationDomainOrigin)"] 228 pub extended_dynamic_state3_tessellation_domain_origin: bool, 229 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ViewportSwizzle)"] 230 pub extended_dynamic_state3_viewport_swizzle: bool, 231 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ViewportWScalingEnable)"] 232 pub extended_dynamic_state3_viewport_w_scaling_enable: bool, 233 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html#features-externalMemoryRDMA)"] 234 pub external_memory_rdma: bool, 235 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-fillModeNonSolid)"] 236 pub fill_mode_non_solid: bool, 237 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html#features-formatA4B4G4R4)"] 238 pub format_a4b4g4r4: bool, 239 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html#features-formatA4R4G4B4)"] 240 pub format_a4r4g4b4: bool, 241 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html#features-formatRgba10x6WithoutYCbCrSampler)"] 242 pub format_rgba10x6_without_y_cb_cr_sampler: bool, 243 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html#features-fragmentDensityMap)\n- Conflicts with features: [`pipeline_fragment_shading_rate`](crate::device::Features::pipeline_fragment_shading_rate), [`primitive_fragment_shading_rate`](crate::device::Features::primitive_fragment_shading_rate), [`attachment_fragment_shading_rate`](crate::device::Features::attachment_fragment_shading_rate)"] 244 pub fragment_density_map: bool, 245 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html#features-fragmentDensityMapDeferred)"] 246 pub fragment_density_map_deferred: bool, 247 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html#features-fragmentDensityMapDynamic)"] 248 pub fragment_density_map_dynamic: bool, 249 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html#features-fragmentDensityMapNonSubsampledImages)"] 250 pub fragment_density_map_non_subsampled_images: bool, 251 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.html#features-fragmentDensityMapOffset)"] 252 pub fragment_density_map_offset: bool, 253 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.html#features-fragmentShaderBarycentric)"] 254 pub fragment_shader_barycentric: bool, 255 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html#features-fragmentShaderPixelInterlock)"] 256 pub fragment_shader_pixel_interlock: bool, 257 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html#features-fragmentShaderSampleInterlock)"] 258 pub fragment_shader_sample_interlock: bool, 259 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html#features-fragmentShaderShadingRateInterlock)"] 260 pub fragment_shader_shading_rate_interlock: bool, 261 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html#features-fragmentShadingRateEnums)"] 262 pub fragment_shading_rate_enums: bool, 263 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-fragmentStoresAndAtomics)"] 264 pub fragment_stores_and_atomics: bool, 265 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-fullDrawIndexUint32)"] 266 pub full_draw_index_uint32: bool, 267 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-geometryShader)"] 268 pub geometry_shader: bool, 269 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html#features-geometryStreams)"] 270 pub geometry_streams: bool, 271 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.html#features-globalPriorityQuery)"] 272 pub global_priority_query: bool, 273 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.html#features-graphicsPipelineLibrary)"] 274 pub graphics_pipeline_library: bool, 275 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-hostQueryReset)"] 276 pub host_query_reset: bool, 277 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html#features-image2DViewOf3D)"] 278 pub image2_d_view_of3_d: bool, 279 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageCompressionControlFeaturesEXT.html#features-imageCompressionControl)"] 280 pub image_compression_control: bool, 281 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.html#features-imageCompressionControlSwapchain)"] 282 pub image_compression_control_swapchain: bool, 283 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-imageCubeArray)"] 284 pub image_cube_array: bool, 285 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html#features-imageFootprint)"] 286 pub image_footprint: bool, 287 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-imageView2DOn3DImage)"] 288 pub image_view2_d_on3_d_image: bool, 289 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-imageViewFormatReinterpretation)"] 290 pub image_view_format_reinterpretation: bool, 291 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-imageViewFormatSwizzle)"] 292 pub image_view_format_swizzle: bool, 293 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-imagelessFramebuffer)"] 294 pub imageless_framebuffer: bool, 295 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-independentBlend)"] 296 pub independent_blend: bool, 297 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html#features-indexTypeUint8)"] 298 pub index_type_uint8: bool, 299 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.html#features-indirectCopy)"] 300 pub indirect_copy: bool, 301 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html#features-inheritedConditionalRendering)"] 302 pub inherited_conditional_rendering: bool, 303 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-inheritedQueries)"] 304 pub inherited_queries: bool, 305 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html#features-inheritedViewportScissor2D)"] 306 pub inherited_viewport_scissor2_d: bool, 307 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-inlineUniformBlock)"] 308 pub inline_uniform_block: bool, 309 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html#features-invocationMask)"] 310 pub invocation_mask: bool, 311 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-largePoints)"] 312 pub large_points: bool, 313 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLegacyDitheringFeaturesEXT.html#features-legacyDithering)"] 314 pub legacy_dithering: bool, 315 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html#features-linearColorAttachment)"] 316 pub linear_color_attachment: bool, 317 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-logicOp)"] 318 pub logic_op: bool, 319 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-maintenance4)"] 320 pub maintenance4: bool, 321 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesNV.html#features-memoryDecompression)"] 322 pub memory_decompression: bool, 323 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html#features-memoryPriority)"] 324 pub memory_priority: bool, 325 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-meshShader)"] 326 pub mesh_shader: bool, 327 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-meshShaderQueries)"] 328 pub mesh_shader_queries: bool, 329 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html#features-micromap)"] 330 pub micromap: bool, 331 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html#features-micromapCaptureReplay)"] 332 pub micromap_capture_replay: bool, 333 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html#features-micromapHostCommands)"] 334 pub micromap_host_commands: bool, 335 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html#features-minLod)"] 336 pub min_lod: bool, 337 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html#features-multiDraw)"] 338 pub multi_draw: bool, 339 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-multiDrawIndirect)"] 340 pub multi_draw_indirect: bool, 341 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-multiViewport)"] 342 pub multi_viewport: bool, 343 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-multisampleArrayImage)"] 344 pub multisample_array_image: bool, 345 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.html#features-multisampledRenderToSingleSampled)"] 346 pub multisampled_render_to_single_sampled: bool, 347 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-multiview)"] 348 pub multiview: bool, 349 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-multiviewGeometryShader)"] 350 pub multiview_geometry_shader: bool, 351 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-multiviewMeshShader)"] 352 pub multiview_mesh_shader: bool, 353 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.html#features-multiviewPerViewViewports)"] 354 pub multiview_per_view_viewports: bool, 355 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-multiviewTessellationShader)"] 356 pub multiview_tessellation_shader: bool, 357 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-mutableComparisonSamplers)"] 358 pub mutable_comparison_samplers: bool, 359 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.html#features-mutableDescriptorType)"] 360 pub mutable_descriptor_type: bool, 361 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html#features-noInvocationFragmentShadingRates)"] 362 pub no_invocation_fragment_shading_rates: bool, 363 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.html#features-nonSeamlessCubeMap)"] 364 pub non_seamless_cube_map: bool, 365 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html#features-nullDescriptor)"] 366 pub null_descriptor: bool, 367 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-occlusionQueryPrecise)"] 368 pub occlusion_query_precise: bool, 369 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowFeaturesNV.html#features-opticalFlow)"] 370 pub optical_flow: bool, 371 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html#features-pageableDeviceLocalMemory)"] 372 pub pageable_device_local_memory: bool, 373 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html#features-performanceCounterMultipleQueryPools)"] 374 pub performance_counter_multiple_query_pools: bool, 375 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html#features-performanceCounterQueryPools)"] 376 pub performance_counter_query_pools: bool, 377 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-pipelineCreationCacheControl)"] 378 pub pipeline_creation_cache_control: bool, 379 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html#features-pipelineExecutableInfo)"] 380 pub pipeline_executable_info: bool, 381 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html#features-pipelineFragmentShadingRate)\n- Conflicts with features: [`shading_rate_image`](crate::device::Features::shading_rate_image), [`fragment_density_map`](crate::device::Features::fragment_density_map)"] 382 pub pipeline_fragment_shading_rate: bool, 383 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelinePropertiesFeaturesEXT.html#features-pipelinePropertiesIdentifier)"] 384 pub pipeline_properties_identifier: bool, 385 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.html#features-pipelineProtectedAccess)"] 386 pub pipeline_protected_access: bool, 387 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineRobustnessFeaturesEXT.html#features-pipelineRobustness)"] 388 pub pipeline_robustness: bool, 389 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-pipelineStatisticsQuery)"] 390 pub pipeline_statistics_query: bool, 391 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-pointPolygons)"] 392 pub point_polygons: bool, 393 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePresentBarrierFeaturesNV.html#features-presentBarrier)"] 394 pub present_barrier: bool, 395 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html#features-presentId)"] 396 pub present_id: bool, 397 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html#features-presentWait)"] 398 pub present_wait: bool, 399 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html#features-primitiveFragmentShadingRate)\n- Conflicts with features: [`shading_rate_image`](crate::device::Features::shading_rate_image), [`fragment_density_map`](crate::device::Features::fragment_density_map)"] 400 pub primitive_fragment_shading_rate: bool, 401 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-primitiveFragmentShadingRateMeshShader)"] 402 pub primitive_fragment_shading_rate_mesh_shader: bool, 403 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html#features-primitiveTopologyListRestart)"] 404 pub primitive_topology_list_restart: bool, 405 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html#features-primitiveTopologyPatchListRestart)"] 406 pub primitive_topology_patch_list_restart: bool, 407 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html#features-primitivesGeneratedQuery)"] 408 pub primitives_generated_query: bool, 409 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html#features-primitivesGeneratedQueryWithNonZeroStreams)"] 410 pub primitives_generated_query_with_non_zero_streams: bool, 411 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html#features-primitivesGeneratedQueryWithRasterizerDiscard)"] 412 pub primitives_generated_query_with_rasterizer_discard: bool, 413 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-privateData)"] 414 pub private_data: bool, 415 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-protectedMemory)"] 416 pub protected_memory: bool, 417 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html#features-provokingVertexLast)"] 418 pub provoking_vertex_last: bool, 419 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html#features-rasterizationOrderColorAttachmentAccess)"] 420 pub rasterization_order_color_attachment_access: bool, 421 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html#features-rasterizationOrderDepthAttachmentAccess)"] 422 pub rasterization_order_depth_attachment_access: bool, 423 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html#features-rasterizationOrderStencilAttachmentAccess)"] 424 pub rasterization_order_stencil_attachment_access: bool, 425 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html#features-rayQuery)"] 426 pub ray_query: bool, 427 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.html#features-rayTracingInvocationReorder)"] 428 pub ray_tracing_invocation_reorder: bool, 429 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html#features-rayTracingMaintenance1)"] 430 pub ray_tracing_maintenance1: bool, 431 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html#features-rayTracingMotionBlur)"] 432 pub ray_tracing_motion_blur: bool, 433 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html#features-rayTracingMotionBlurPipelineTraceRaysIndirect)"] 434 pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: bool, 435 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipeline)"] 436 pub ray_tracing_pipeline: bool, 437 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipelineShaderGroupHandleCaptureReplay)"] 438 pub ray_tracing_pipeline_shader_group_handle_capture_replay: bool, 439 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed)"] 440 pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: bool, 441 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipelineTraceRaysIndirect)"] 442 pub ray_tracing_pipeline_trace_rays_indirect: bool, 443 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html#features-rayTracingPipelineTraceRaysIndirect2)"] 444 pub ray_tracing_pipeline_trace_rays_indirect2: bool, 445 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTraversalPrimitiveCulling)"] 446 pub ray_traversal_primitive_culling: bool, 447 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-rectangularLines)"] 448 pub rectangular_lines: bool, 449 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAddressBindingReportFeaturesEXT.html#features-reportAddressBinding)"] 450 pub report_address_binding: bool, 451 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html#features-representativeFragmentTest)"] 452 pub representative_fragment_test: bool, 453 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-robustBufferAccess)"] 454 pub robust_buffer_access: bool, 455 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html#features-robustBufferAccess2)"] 456 pub robust_buffer_access2: bool, 457 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-robustImageAccess)"] 458 pub robust_image_access: bool, 459 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html#features-robustImageAccess2)"] 460 pub robust_image_access2: bool, 461 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-runtimeDescriptorArray)"] 462 pub runtime_descriptor_array: bool, 463 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sampleRateShading)"] 464 pub sample_rate_shading: bool, 465 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html#features-sampler2DViewOf3D)"] 466 pub sampler2_d_view_of3_d: bool, 467 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-samplerAnisotropy)"] 468 pub sampler_anisotropy: bool, 469 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-samplerFilterMinmax)\n- Required by device extension: [`ext_sampler_filter_minmax`](crate::device::DeviceExtensions::ext_sampler_filter_minmax)"] 470 pub sampler_filter_minmax: bool, 471 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-samplerMipLodBias)"] 472 pub sampler_mip_lod_bias: bool, 473 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-samplerMirrorClampToEdge)\n- Required by device extension: [`khr_sampler_mirror_clamp_to_edge`](crate::device::DeviceExtensions::khr_sampler_mirror_clamp_to_edge)"] 474 pub sampler_mirror_clamp_to_edge: bool, 475 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-samplerYcbcrConversion)"] 476 pub sampler_ycbcr_conversion: bool, 477 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-scalarBlockLayout)"] 478 pub scalar_block_layout: bool, 479 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-separateDepthStencilLayouts)"] 480 pub separate_depth_stencil_layouts: bool, 481 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-separateStencilMaskRef)"] 482 pub separate_stencil_mask_ref: bool, 483 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat16AtomicAdd)"] 484 pub shader_buffer_float16_atomic_add: bool, 485 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat16AtomicMinMax)"] 486 pub shader_buffer_float16_atomic_min_max: bool, 487 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat16Atomics)"] 488 pub shader_buffer_float16_atomics: bool, 489 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat32AtomicAdd)"] 490 pub shader_buffer_float32_atomic_add: bool, 491 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat32AtomicMinMax)"] 492 pub shader_buffer_float32_atomic_min_max: bool, 493 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat32Atomics)"] 494 pub shader_buffer_float32_atomics: bool, 495 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat64AtomicAdd)"] 496 pub shader_buffer_float64_atomic_add: bool, 497 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat64AtomicMinMax)"] 498 pub shader_buffer_float64_atomic_min_max: bool, 499 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat64Atomics)"] 500 pub shader_buffer_float64_atomics: bool, 501 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderBufferInt64Atomics)"] 502 pub shader_buffer_int64_atomics: bool, 503 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderClipDistance)"] 504 pub shader_clip_distance: bool, 505 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.html#features-shaderCoreBuiltins)"] 506 pub shader_core_builtins: bool, 507 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderCullDistance)"] 508 pub shader_cull_distance: bool, 509 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderDemoteToHelperInvocation)"] 510 pub shader_demote_to_helper_invocation: bool, 511 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html#features-shaderDeviceClock)"] 512 pub shader_device_clock: bool, 513 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-shaderDrawParameters)\n- Required by device extension: [`khr_shader_draw_parameters`](crate::device::DeviceExtensions::khr_shader_draw_parameters)"] 514 pub shader_draw_parameters: bool, 515 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.html#features-shaderEarlyAndLateFragmentTests)"] 516 pub shader_early_and_late_fragment_tests: bool, 517 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderFloat16)"] 518 pub shader_float16: bool, 519 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderFloat64)"] 520 pub shader_float64: bool, 521 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderImageFloat32AtomicAdd)"] 522 pub shader_image_float32_atomic_add: bool, 523 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderImageFloat32AtomicMinMax)"] 524 pub shader_image_float32_atomic_min_max: bool, 525 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderImageFloat32Atomics)"] 526 pub shader_image_float32_atomics: bool, 527 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderImageGatherExtended)"] 528 pub shader_image_gather_extended: bool, 529 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html#features-shaderImageInt64Atomics)"] 530 pub shader_image_int64_atomics: bool, 531 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderInputAttachmentArrayDynamicIndexing)"] 532 pub shader_input_attachment_array_dynamic_indexing: bool, 533 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderInputAttachmentArrayNonUniformIndexing)"] 534 pub shader_input_attachment_array_non_uniform_indexing: bool, 535 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderInt16)"] 536 pub shader_int16: bool, 537 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderInt64)"] 538 pub shader_int64: bool, 539 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderInt8)"] 540 pub shader_int8: bool, 541 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderIntegerDotProduct)"] 542 pub shader_integer_dot_product: bool, 543 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html#features-shaderIntegerFunctions2)"] 544 pub shader_integer_functions2: bool, 545 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.html#features-shaderModuleIdentifier)"] 546 pub shader_module_identifier: bool, 547 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderOutputLayer)\n- Required by device extension: [`ext_shader_viewport_index_layer`](crate::device::DeviceExtensions::ext_shader_viewport_index_layer)"] 548 pub shader_output_layer: bool, 549 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderOutputViewportIndex)\n- Required by device extension: [`ext_shader_viewport_index_layer`](crate::device::DeviceExtensions::ext_shader_viewport_index_layer)"] 550 pub shader_output_viewport_index: bool, 551 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderResourceMinLod)"] 552 pub shader_resource_min_lod: bool, 553 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderResourceResidency)"] 554 pub shader_resource_residency: bool, 555 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-shaderSampleRateInterpolationFunctions)"] 556 pub shader_sample_rate_interpolation_functions: bool, 557 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderSampledImageArrayDynamicIndexing)"] 558 pub shader_sampled_image_array_dynamic_indexing: bool, 559 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderSampledImageArrayNonUniformIndexing)"] 560 pub shader_sampled_image_array_non_uniform_indexing: bool, 561 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat16AtomicAdd)"] 562 pub shader_shared_float16_atomic_add: bool, 563 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat16AtomicMinMax)"] 564 pub shader_shared_float16_atomic_min_max: bool, 565 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat16Atomics)"] 566 pub shader_shared_float16_atomics: bool, 567 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat32AtomicAdd)"] 568 pub shader_shared_float32_atomic_add: bool, 569 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat32AtomicMinMax)"] 570 pub shader_shared_float32_atomic_min_max: bool, 571 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat32Atomics)"] 572 pub shader_shared_float32_atomics: bool, 573 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat64AtomicAdd)"] 574 pub shader_shared_float64_atomic_add: bool, 575 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat64AtomicMinMax)"] 576 pub shader_shared_float64_atomic_min_max: bool, 577 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat64Atomics)"] 578 pub shader_shared_float64_atomics: bool, 579 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderSharedInt64Atomics)"] 580 pub shader_shared_int64_atomics: bool, 581 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html#features-shaderSMBuiltins)"] 582 pub shader_sm_builtins: bool, 583 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageBufferArrayDynamicIndexing)"] 584 pub shader_storage_buffer_array_dynamic_indexing: bool, 585 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageBufferArrayNonUniformIndexing)"] 586 pub shader_storage_buffer_array_non_uniform_indexing: bool, 587 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageArrayDynamicIndexing)"] 588 pub shader_storage_image_array_dynamic_indexing: bool, 589 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageImageArrayNonUniformIndexing)"] 590 pub shader_storage_image_array_non_uniform_indexing: bool, 591 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageExtendedFormats)"] 592 pub shader_storage_image_extended_formats: bool, 593 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageMultisample)"] 594 pub shader_storage_image_multisample: bool, 595 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageReadWithoutFormat)"] 596 pub shader_storage_image_read_without_format: bool, 597 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageWriteWithoutFormat)"] 598 pub shader_storage_image_write_without_format: bool, 599 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageTexelBufferArrayDynamicIndexing)"] 600 pub shader_storage_texel_buffer_array_dynamic_indexing: bool, 601 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageTexelBufferArrayNonUniformIndexing)"] 602 pub shader_storage_texel_buffer_array_non_uniform_indexing: bool, 603 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html#features-shaderSubgroupClock)"] 604 pub shader_subgroup_clock: bool, 605 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderSubgroupExtendedTypes)"] 606 pub shader_subgroup_extended_types: bool, 607 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html#features-shaderSubgroupUniformControlFlow)"] 608 pub shader_subgroup_uniform_control_flow: bool, 609 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderTerminateInvocation)"] 610 pub shader_terminate_invocation: bool, 611 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderTessellationAndGeometryPointSize)"] 612 pub shader_tessellation_and_geometry_point_size: bool, 613 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderUniformBufferArrayDynamicIndexing)"] 614 pub shader_uniform_buffer_array_dynamic_indexing: bool, 615 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderUniformBufferArrayNonUniformIndexing)"] 616 pub shader_uniform_buffer_array_non_uniform_indexing: bool, 617 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderUniformTexelBufferArrayDynamicIndexing)"] 618 pub shader_uniform_texel_buffer_array_dynamic_indexing: bool, 619 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderUniformTexelBufferArrayNonUniformIndexing)"] 620 pub shader_uniform_texel_buffer_array_non_uniform_indexing: bool, 621 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderZeroInitializeWorkgroupMemory)"] 622 pub shader_zero_initialize_workgroup_memory: bool, 623 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html#features-shadingRateCoarseSampleOrder)"] 624 pub shading_rate_coarse_sample_order: bool, 625 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html#features-shadingRateImage)\n- Conflicts with features: [`pipeline_fragment_shading_rate`](crate::device::Features::pipeline_fragment_shading_rate), [`primitive_fragment_shading_rate`](crate::device::Features::primitive_fragment_shading_rate), [`attachment_fragment_shading_rate`](crate::device::Features::attachment_fragment_shading_rate)"] 626 pub shading_rate_image: bool, 627 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-smoothLines)"] 628 pub smooth_lines: bool, 629 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseBinding)"] 630 pub sparse_binding: bool, 631 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-sparseImageFloat32AtomicAdd)\n- Requires feature: [`shader_image_float32_atomic_add`](crate::device::Features::shader_image_float32_atomic_add)"] 632 pub sparse_image_float32_atomic_add: bool, 633 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-sparseImageFloat32AtomicMinMax)\n- Requires feature: [`shader_image_float32_atomic_min_max`](crate::device::Features::shader_image_float32_atomic_min_max)"] 634 pub sparse_image_float32_atomic_min_max: bool, 635 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-sparseImageFloat32Atomics)\n- Requires feature: [`shader_image_float32_atomics`](crate::device::Features::shader_image_float32_atomics)"] 636 pub sparse_image_float32_atomics: bool, 637 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html#features-sparseImageInt64Atomics)\n- Requires feature: [`shader_image_int64_atomics`](crate::device::Features::shader_image_int64_atomics)"] 638 pub sparse_image_int64_atomics: bool, 639 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency16Samples)"] 640 pub sparse_residency16_samples: bool, 641 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency2Samples)"] 642 pub sparse_residency2_samples: bool, 643 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency4Samples)"] 644 pub sparse_residency4_samples: bool, 645 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency8Samples)"] 646 pub sparse_residency8_samples: bool, 647 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyAliased)"] 648 pub sparse_residency_aliased: bool, 649 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyBuffer)"] 650 pub sparse_residency_buffer: bool, 651 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyImage2D)"] 652 pub sparse_residency_image2_d: bool, 653 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyImage3D)"] 654 pub sparse_residency_image3_d: bool, 655 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-stippledBresenhamLines)"] 656 pub stippled_bresenham_lines: bool, 657 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-stippledRectangularLines)"] 658 pub stippled_rectangular_lines: bool, 659 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-stippledSmoothLines)"] 660 pub stippled_smooth_lines: bool, 661 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-storageBuffer16BitAccess)"] 662 pub storage_buffer16_bit_access: bool, 663 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-storageBuffer8BitAccess)"] 664 pub storage_buffer8_bit_access: bool, 665 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-storageInputOutput16)"] 666 pub storage_input_output16: bool, 667 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-storagePushConstant16)"] 668 pub storage_push_constant16: bool, 669 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-storagePushConstant8)"] 670 pub storage_push_constant8: bool, 671 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-subgroupBroadcastDynamicId)"] 672 pub subgroup_broadcast_dynamic_id: bool, 673 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-subgroupSizeControl)"] 674 pub subgroup_size_control: bool, 675 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.html#features-subpassMergeFeedback)"] 676 pub subpass_merge_feedback: bool, 677 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html#features-subpassShading)"] 678 pub subpass_shading: bool, 679 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html#features-supersampleFragmentShadingRates)"] 680 pub supersample_fragment_shading_rates: bool, 681 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.html#features-swapchainMaintenance1)"] 682 pub swapchain_maintenance1: bool, 683 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-synchronization2)"] 684 pub synchronization2: bool, 685 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-taskShader)"] 686 pub task_shader: bool, 687 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-tessellationIsolines)"] 688 pub tessellation_isolines: bool, 689 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-tessellationPointMode)"] 690 pub tessellation_point_mode: bool, 691 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-tessellationShader)"] 692 pub tessellation_shader: bool, 693 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html#features-texelBufferAlignment)"] 694 pub texel_buffer_alignment: bool, 695 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html#features-textureBlockMatch)"] 696 pub texture_block_match: bool, 697 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html#features-textureBoxFilter)"] 698 pub texture_box_filter: bool, 699 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-textureCompressionASTC_HDR)"] 700 pub texture_compression_astc_hdr: bool, 701 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-textureCompressionASTC_LDR)"] 702 pub texture_compression_astc_ldr: bool, 703 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-textureCompressionBC)"] 704 pub texture_compression_bc: bool, 705 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-textureCompressionETC2)"] 706 pub texture_compression_etc2: bool, 707 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html#features-textureSampleWeighted)"] 708 pub texture_sample_weighted: bool, 709 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTilePropertiesFeaturesQCOM.html#features-tileProperties)"] 710 pub tile_properties: bool, 711 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-timelineSemaphore)"] 712 pub timeline_semaphore: bool, 713 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html#features-transformFeedback)"] 714 pub transform_feedback: bool, 715 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html#features-transformFeedbackPreservesProvokingVertex)"] 716 pub transform_feedback_preserves_provoking_vertex: bool, 717 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-triangleFans)"] 718 pub triangle_fans: bool, 719 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-uniformAndStorageBuffer16BitAccess)"] 720 pub uniform_and_storage_buffer16_bit_access: bool, 721 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-uniformAndStorageBuffer8BitAccess)"] 722 pub uniform_and_storage_buffer8_bit_access: bool, 723 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-uniformBufferStandardLayout)"] 724 pub uniform_buffer_standard_layout: bool, 725 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-variableMultisampleRate)"] 726 pub variable_multisample_rate: bool, 727 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-variablePointers)"] 728 pub variable_pointers: bool, 729 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-variablePointersStorageBuffer)"] 730 pub variable_pointers_storage_buffer: bool, 731 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-vertexAttributeAccessBeyondStride)"] 732 pub vertex_attribute_access_beyond_stride: bool, 733 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html#features-vertexAttributeInstanceRateDivisor)"] 734 pub vertex_attribute_instance_rate_divisor: bool, 735 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html#features-vertexAttributeInstanceRateZeroDivisor)"] 736 pub vertex_attribute_instance_rate_zero_divisor: bool, 737 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html#features-vertexInputDynamicState)"] 738 pub vertex_input_dynamic_state: bool, 739 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-vertexPipelineStoresAndAtomics)"] 740 pub vertex_pipeline_stores_and_atomics: bool, 741 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-vulkanMemoryModel)"] 742 pub vulkan_memory_model: bool, 743 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-vulkanMemoryModelAvailabilityVisibilityChains)"] 744 pub vulkan_memory_model_availability_visibility_chains: bool, 745 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-vulkanMemoryModelDeviceScope)"] 746 pub vulkan_memory_model_device_scope: bool, 747 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-wideLines)"] 748 pub wide_lines: bool, 749 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayout)"] 750 pub workgroup_memory_explicit_layout: bool, 751 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayout16BitAccess)"] 752 pub workgroup_memory_explicit_layout16_bit_access: bool, 753 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayout8BitAccess)"] 754 pub workgroup_memory_explicit_layout8_bit_access: bool, 755 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayoutScalarBlockLayout)"] 756 pub workgroup_memory_explicit_layout_scalar_block_layout: bool, 757 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html#features-ycbcr2plane444Formats)"] 758 pub ycbcr2plane444_formats: bool, 759 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html#features-ycbcrImageArrays)"] 760 pub ycbcr_image_arrays: bool, 761 pub _ne: crate::NonExhaustive, 762 } 763 impl Default for Features { 764 #[inline] default() -> Self765 fn default() -> Self { 766 Self::empty() 767 } 768 } 769 impl Features { 770 #[doc = r" Checks enabled features against the device version, device extensions and each"] 771 #[doc = r" other."] check_requirements( &self, supported: &Features, api_version: crate::Version, extensions: &crate::device::DeviceExtensions, ) -> Result<(), crate::device::FeatureRestrictionError>772 pub(super) fn check_requirements( 773 &self, 774 supported: &Features, 775 api_version: crate::Version, 776 extensions: &crate::device::DeviceExtensions, 777 ) -> Result<(), crate::device::FeatureRestrictionError> { 778 if self.acceleration_structure { 779 if !supported.acceleration_structure { 780 return Err(crate::device::FeatureRestrictionError { 781 feature: "acceleration_structure", 782 restriction: crate::device::FeatureRestriction::NotSupported, 783 }); 784 } 785 } else { 786 } 787 if self.acceleration_structure_capture_replay { 788 if !supported.acceleration_structure_capture_replay { 789 return Err(crate::device::FeatureRestrictionError { 790 feature: "acceleration_structure_capture_replay", 791 restriction: crate::device::FeatureRestriction::NotSupported, 792 }); 793 } 794 } else { 795 } 796 if self.acceleration_structure_host_commands { 797 if !supported.acceleration_structure_host_commands { 798 return Err(crate::device::FeatureRestrictionError { 799 feature: "acceleration_structure_host_commands", 800 restriction: crate::device::FeatureRestriction::NotSupported, 801 }); 802 } 803 } else { 804 } 805 if self.acceleration_structure_indirect_build { 806 if !supported.acceleration_structure_indirect_build { 807 return Err(crate::device::FeatureRestrictionError { 808 feature: "acceleration_structure_indirect_build", 809 restriction: crate::device::FeatureRestriction::NotSupported, 810 }); 811 } 812 } else { 813 } 814 if self.advanced_blend_coherent_operations { 815 if !supported.advanced_blend_coherent_operations { 816 return Err(crate::device::FeatureRestrictionError { 817 feature: "advanced_blend_coherent_operations", 818 restriction: crate::device::FeatureRestriction::NotSupported, 819 }); 820 } 821 } else { 822 } 823 if self.alpha_to_one { 824 if !supported.alpha_to_one { 825 return Err(crate::device::FeatureRestrictionError { 826 feature: "alpha_to_one", 827 restriction: crate::device::FeatureRestriction::NotSupported, 828 }); 829 } 830 } else { 831 } 832 if self.amigo_profiling { 833 if !supported.amigo_profiling { 834 return Err(crate::device::FeatureRestrictionError { 835 feature: "amigo_profiling", 836 restriction: crate::device::FeatureRestriction::NotSupported, 837 }); 838 } 839 } else { 840 } 841 if self.attachment_feedback_loop_layout { 842 if !supported.attachment_feedback_loop_layout { 843 return Err(crate::device::FeatureRestrictionError { 844 feature: "attachment_feedback_loop_layout", 845 restriction: crate::device::FeatureRestriction::NotSupported, 846 }); 847 } 848 } else { 849 } 850 if self.attachment_fragment_shading_rate { 851 if !supported.attachment_fragment_shading_rate { 852 return Err(crate::device::FeatureRestrictionError { 853 feature: "attachment_fragment_shading_rate", 854 restriction: crate::device::FeatureRestriction::NotSupported, 855 }); 856 } 857 if self.shading_rate_image { 858 return Err(crate::device::FeatureRestrictionError { 859 feature: "attachment_fragment_shading_rate", 860 restriction: crate::device::FeatureRestriction::ConflictsFeature( 861 "shading_rate_image", 862 ), 863 }); 864 } 865 if self.fragment_density_map { 866 return Err(crate::device::FeatureRestrictionError { 867 feature: "attachment_fragment_shading_rate", 868 restriction: crate::device::FeatureRestriction::ConflictsFeature( 869 "fragment_density_map", 870 ), 871 }); 872 } 873 } else { 874 } 875 if self.border_color_swizzle { 876 if !supported.border_color_swizzle { 877 return Err(crate::device::FeatureRestrictionError { 878 feature: "border_color_swizzle", 879 restriction: crate::device::FeatureRestriction::NotSupported, 880 }); 881 } 882 } else { 883 } 884 if self.border_color_swizzle_from_image { 885 if !supported.border_color_swizzle_from_image { 886 return Err(crate::device::FeatureRestrictionError { 887 feature: "border_color_swizzle_from_image", 888 restriction: crate::device::FeatureRestriction::NotSupported, 889 }); 890 } 891 } else { 892 } 893 if self.bresenham_lines { 894 if !supported.bresenham_lines { 895 return Err(crate::device::FeatureRestrictionError { 896 feature: "bresenham_lines", 897 restriction: crate::device::FeatureRestriction::NotSupported, 898 }); 899 } 900 } else { 901 } 902 if self.buffer_device_address { 903 if !supported.buffer_device_address { 904 return Err(crate::device::FeatureRestrictionError { 905 feature: "buffer_device_address", 906 restriction: crate::device::FeatureRestriction::NotSupported, 907 }); 908 } 909 } else { 910 } 911 if self.buffer_device_address_capture_replay { 912 if !supported.buffer_device_address_capture_replay { 913 return Err(crate::device::FeatureRestrictionError { 914 feature: "buffer_device_address_capture_replay", 915 restriction: crate::device::FeatureRestriction::NotSupported, 916 }); 917 } 918 } else { 919 } 920 if self.buffer_device_address_multi_device { 921 if !supported.buffer_device_address_multi_device { 922 return Err(crate::device::FeatureRestrictionError { 923 feature: "buffer_device_address_multi_device", 924 restriction: crate::device::FeatureRestriction::NotSupported, 925 }); 926 } 927 } else { 928 } 929 if self.color_write_enable { 930 if !supported.color_write_enable { 931 return Err(crate::device::FeatureRestrictionError { 932 feature: "color_write_enable", 933 restriction: crate::device::FeatureRestriction::NotSupported, 934 }); 935 } 936 } else { 937 } 938 if self.compute_derivative_group_linear { 939 if !supported.compute_derivative_group_linear { 940 return Err(crate::device::FeatureRestrictionError { 941 feature: "compute_derivative_group_linear", 942 restriction: crate::device::FeatureRestriction::NotSupported, 943 }); 944 } 945 } else { 946 } 947 if self.compute_derivative_group_quads { 948 if !supported.compute_derivative_group_quads { 949 return Err(crate::device::FeatureRestrictionError { 950 feature: "compute_derivative_group_quads", 951 restriction: crate::device::FeatureRestriction::NotSupported, 952 }); 953 } 954 } else { 955 } 956 if self.compute_full_subgroups { 957 if !supported.compute_full_subgroups { 958 return Err(crate::device::FeatureRestrictionError { 959 feature: "compute_full_subgroups", 960 restriction: crate::device::FeatureRestriction::NotSupported, 961 }); 962 } 963 } else { 964 } 965 if self.conditional_rendering { 966 if !supported.conditional_rendering { 967 return Err(crate::device::FeatureRestrictionError { 968 feature: "conditional_rendering", 969 restriction: crate::device::FeatureRestriction::NotSupported, 970 }); 971 } 972 } else { 973 } 974 if self.constant_alpha_color_blend_factors { 975 if !supported.constant_alpha_color_blend_factors { 976 return Err(crate::device::FeatureRestrictionError { 977 feature: "constant_alpha_color_blend_factors", 978 restriction: crate::device::FeatureRestriction::NotSupported, 979 }); 980 } 981 } else { 982 } 983 if self.cooperative_matrix { 984 if !supported.cooperative_matrix { 985 return Err(crate::device::FeatureRestrictionError { 986 feature: "cooperative_matrix", 987 restriction: crate::device::FeatureRestriction::NotSupported, 988 }); 989 } 990 } else { 991 } 992 if self.cooperative_matrix_robust_buffer_access { 993 if !supported.cooperative_matrix_robust_buffer_access { 994 return Err(crate::device::FeatureRestrictionError { 995 feature: "cooperative_matrix_robust_buffer_access", 996 restriction: crate::device::FeatureRestriction::NotSupported, 997 }); 998 } 999 } else { 1000 } 1001 if self.corner_sampled_image { 1002 if !supported.corner_sampled_image { 1003 return Err(crate::device::FeatureRestrictionError { 1004 feature: "corner_sampled_image", 1005 restriction: crate::device::FeatureRestriction::NotSupported, 1006 }); 1007 } 1008 } else { 1009 } 1010 if self.coverage_reduction_mode { 1011 if !supported.coverage_reduction_mode { 1012 return Err(crate::device::FeatureRestrictionError { 1013 feature: "coverage_reduction_mode", 1014 restriction: crate::device::FeatureRestriction::NotSupported, 1015 }); 1016 } 1017 } else { 1018 } 1019 if self.custom_border_color_without_format { 1020 if !supported.custom_border_color_without_format { 1021 return Err(crate::device::FeatureRestrictionError { 1022 feature: "custom_border_color_without_format", 1023 restriction: crate::device::FeatureRestriction::NotSupported, 1024 }); 1025 } 1026 } else { 1027 } 1028 if self.custom_border_colors { 1029 if !supported.custom_border_colors { 1030 return Err(crate::device::FeatureRestrictionError { 1031 feature: "custom_border_colors", 1032 restriction: crate::device::FeatureRestriction::NotSupported, 1033 }); 1034 } 1035 } else { 1036 } 1037 if self.decode_mode_shared_exponent { 1038 if !supported.decode_mode_shared_exponent { 1039 return Err(crate::device::FeatureRestrictionError { 1040 feature: "decode_mode_shared_exponent", 1041 restriction: crate::device::FeatureRestriction::NotSupported, 1042 }); 1043 } 1044 } else { 1045 } 1046 if self.dedicated_allocation_image_aliasing { 1047 if !supported.dedicated_allocation_image_aliasing { 1048 return Err(crate::device::FeatureRestrictionError { 1049 feature: "dedicated_allocation_image_aliasing", 1050 restriction: crate::device::FeatureRestriction::NotSupported, 1051 }); 1052 } 1053 } else { 1054 } 1055 if self.depth_bias_clamp { 1056 if !supported.depth_bias_clamp { 1057 return Err(crate::device::FeatureRestrictionError { 1058 feature: "depth_bias_clamp", 1059 restriction: crate::device::FeatureRestriction::NotSupported, 1060 }); 1061 } 1062 } else { 1063 } 1064 if self.depth_bounds { 1065 if !supported.depth_bounds { 1066 return Err(crate::device::FeatureRestrictionError { 1067 feature: "depth_bounds", 1068 restriction: crate::device::FeatureRestriction::NotSupported, 1069 }); 1070 } 1071 } else { 1072 } 1073 if self.depth_clamp { 1074 if !supported.depth_clamp { 1075 return Err(crate::device::FeatureRestrictionError { 1076 feature: "depth_clamp", 1077 restriction: crate::device::FeatureRestriction::NotSupported, 1078 }); 1079 } 1080 } else { 1081 } 1082 if self.depth_clamp_zero_one { 1083 if !supported.depth_clamp_zero_one { 1084 return Err(crate::device::FeatureRestrictionError { 1085 feature: "depth_clamp_zero_one", 1086 restriction: crate::device::FeatureRestriction::NotSupported, 1087 }); 1088 } 1089 } else { 1090 } 1091 if self.depth_clip_control { 1092 if !supported.depth_clip_control { 1093 return Err(crate::device::FeatureRestrictionError { 1094 feature: "depth_clip_control", 1095 restriction: crate::device::FeatureRestriction::NotSupported, 1096 }); 1097 } 1098 } else { 1099 } 1100 if self.depth_clip_enable { 1101 if !supported.depth_clip_enable { 1102 return Err(crate::device::FeatureRestrictionError { 1103 feature: "depth_clip_enable", 1104 restriction: crate::device::FeatureRestriction::NotSupported, 1105 }); 1106 } 1107 } else { 1108 } 1109 if self.descriptor_binding_acceleration_structure_update_after_bind { 1110 if !supported.descriptor_binding_acceleration_structure_update_after_bind { 1111 return Err(crate::device::FeatureRestrictionError { 1112 feature: "descriptor_binding_acceleration_structure_update_after_bind", 1113 restriction: crate::device::FeatureRestriction::NotSupported, 1114 }); 1115 } 1116 } else { 1117 } 1118 if self.descriptor_binding_inline_uniform_block_update_after_bind { 1119 if !supported.descriptor_binding_inline_uniform_block_update_after_bind { 1120 return Err(crate::device::FeatureRestrictionError { 1121 feature: "descriptor_binding_inline_uniform_block_update_after_bind", 1122 restriction: crate::device::FeatureRestriction::NotSupported, 1123 }); 1124 } 1125 } else { 1126 } 1127 if self.descriptor_binding_partially_bound { 1128 if !supported.descriptor_binding_partially_bound { 1129 return Err(crate::device::FeatureRestrictionError { 1130 feature: "descriptor_binding_partially_bound", 1131 restriction: crate::device::FeatureRestriction::NotSupported, 1132 }); 1133 } 1134 } else { 1135 } 1136 if self.descriptor_binding_sampled_image_update_after_bind { 1137 if !supported.descriptor_binding_sampled_image_update_after_bind { 1138 return Err(crate::device::FeatureRestrictionError { 1139 feature: "descriptor_binding_sampled_image_update_after_bind", 1140 restriction: crate::device::FeatureRestriction::NotSupported, 1141 }); 1142 } 1143 } else { 1144 } 1145 if self.descriptor_binding_storage_buffer_update_after_bind { 1146 if !supported.descriptor_binding_storage_buffer_update_after_bind { 1147 return Err(crate::device::FeatureRestrictionError { 1148 feature: "descriptor_binding_storage_buffer_update_after_bind", 1149 restriction: crate::device::FeatureRestriction::NotSupported, 1150 }); 1151 } 1152 } else { 1153 } 1154 if self.descriptor_binding_storage_image_update_after_bind { 1155 if !supported.descriptor_binding_storage_image_update_after_bind { 1156 return Err(crate::device::FeatureRestrictionError { 1157 feature: "descriptor_binding_storage_image_update_after_bind", 1158 restriction: crate::device::FeatureRestriction::NotSupported, 1159 }); 1160 } 1161 } else { 1162 } 1163 if self.descriptor_binding_storage_texel_buffer_update_after_bind { 1164 if !supported.descriptor_binding_storage_texel_buffer_update_after_bind { 1165 return Err(crate::device::FeatureRestrictionError { 1166 feature: "descriptor_binding_storage_texel_buffer_update_after_bind", 1167 restriction: crate::device::FeatureRestriction::NotSupported, 1168 }); 1169 } 1170 } else { 1171 } 1172 if self.descriptor_binding_uniform_buffer_update_after_bind { 1173 if !supported.descriptor_binding_uniform_buffer_update_after_bind { 1174 return Err(crate::device::FeatureRestrictionError { 1175 feature: "descriptor_binding_uniform_buffer_update_after_bind", 1176 restriction: crate::device::FeatureRestriction::NotSupported, 1177 }); 1178 } 1179 } else { 1180 } 1181 if self.descriptor_binding_uniform_texel_buffer_update_after_bind { 1182 if !supported.descriptor_binding_uniform_texel_buffer_update_after_bind { 1183 return Err(crate::device::FeatureRestrictionError { 1184 feature: "descriptor_binding_uniform_texel_buffer_update_after_bind", 1185 restriction: crate::device::FeatureRestriction::NotSupported, 1186 }); 1187 } 1188 } else { 1189 } 1190 if self.descriptor_binding_update_unused_while_pending { 1191 if !supported.descriptor_binding_update_unused_while_pending { 1192 return Err(crate::device::FeatureRestrictionError { 1193 feature: "descriptor_binding_update_unused_while_pending", 1194 restriction: crate::device::FeatureRestriction::NotSupported, 1195 }); 1196 } 1197 } else { 1198 } 1199 if self.descriptor_binding_variable_descriptor_count { 1200 if !supported.descriptor_binding_variable_descriptor_count { 1201 return Err(crate::device::FeatureRestrictionError { 1202 feature: "descriptor_binding_variable_descriptor_count", 1203 restriction: crate::device::FeatureRestriction::NotSupported, 1204 }); 1205 } 1206 } else { 1207 } 1208 if self.descriptor_buffer { 1209 if !supported.descriptor_buffer { 1210 return Err(crate::device::FeatureRestrictionError { 1211 feature: "descriptor_buffer", 1212 restriction: crate::device::FeatureRestriction::NotSupported, 1213 }); 1214 } 1215 } else { 1216 } 1217 if self.descriptor_buffer_capture_replay { 1218 if !supported.descriptor_buffer_capture_replay { 1219 return Err(crate::device::FeatureRestrictionError { 1220 feature: "descriptor_buffer_capture_replay", 1221 restriction: crate::device::FeatureRestriction::NotSupported, 1222 }); 1223 } 1224 } else { 1225 } 1226 if self.descriptor_buffer_image_layout_ignored { 1227 if !supported.descriptor_buffer_image_layout_ignored { 1228 return Err(crate::device::FeatureRestrictionError { 1229 feature: "descriptor_buffer_image_layout_ignored", 1230 restriction: crate::device::FeatureRestriction::NotSupported, 1231 }); 1232 } 1233 } else { 1234 } 1235 if self.descriptor_buffer_push_descriptors { 1236 if !supported.descriptor_buffer_push_descriptors { 1237 return Err(crate::device::FeatureRestrictionError { 1238 feature: "descriptor_buffer_push_descriptors", 1239 restriction: crate::device::FeatureRestriction::NotSupported, 1240 }); 1241 } 1242 } else { 1243 } 1244 if self.descriptor_indexing { 1245 if !supported.descriptor_indexing { 1246 return Err(crate::device::FeatureRestrictionError { 1247 feature: "descriptor_indexing", 1248 restriction: crate::device::FeatureRestriction::NotSupported, 1249 }); 1250 } 1251 } else { 1252 if extensions.ext_descriptor_indexing && api_version >= crate::Version::V1_2 { 1253 return Err(crate::device::FeatureRestrictionError { 1254 feature: "descriptor_indexing", 1255 restriction: crate::device::FeatureRestriction::RequiredByExtension( 1256 "ext_descriptor_indexing", 1257 ), 1258 }); 1259 } 1260 } 1261 if self.descriptor_set_host_mapping { 1262 if !supported.descriptor_set_host_mapping { 1263 return Err(crate::device::FeatureRestrictionError { 1264 feature: "descriptor_set_host_mapping", 1265 restriction: crate::device::FeatureRestriction::NotSupported, 1266 }); 1267 } 1268 } else { 1269 } 1270 if self.device_coherent_memory { 1271 if !supported.device_coherent_memory { 1272 return Err(crate::device::FeatureRestrictionError { 1273 feature: "device_coherent_memory", 1274 restriction: crate::device::FeatureRestriction::NotSupported, 1275 }); 1276 } 1277 } else { 1278 } 1279 if self.device_fault { 1280 if !supported.device_fault { 1281 return Err(crate::device::FeatureRestrictionError { 1282 feature: "device_fault", 1283 restriction: crate::device::FeatureRestriction::NotSupported, 1284 }); 1285 } 1286 } else { 1287 } 1288 if self.device_fault_vendor_binary { 1289 if !supported.device_fault_vendor_binary { 1290 return Err(crate::device::FeatureRestrictionError { 1291 feature: "device_fault_vendor_binary", 1292 restriction: crate::device::FeatureRestriction::NotSupported, 1293 }); 1294 } 1295 } else { 1296 } 1297 if self.device_generated_commands { 1298 if !supported.device_generated_commands { 1299 return Err(crate::device::FeatureRestrictionError { 1300 feature: "device_generated_commands", 1301 restriction: crate::device::FeatureRestriction::NotSupported, 1302 }); 1303 } 1304 } else { 1305 } 1306 if self.device_memory_report { 1307 if !supported.device_memory_report { 1308 return Err(crate::device::FeatureRestrictionError { 1309 feature: "device_memory_report", 1310 restriction: crate::device::FeatureRestriction::NotSupported, 1311 }); 1312 } 1313 } else { 1314 } 1315 if self.diagnostics_config { 1316 if !supported.diagnostics_config { 1317 return Err(crate::device::FeatureRestrictionError { 1318 feature: "diagnostics_config", 1319 restriction: crate::device::FeatureRestriction::NotSupported, 1320 }); 1321 } 1322 } else { 1323 } 1324 if self.draw_indirect_count { 1325 if !supported.draw_indirect_count { 1326 return Err(crate::device::FeatureRestrictionError { 1327 feature: "draw_indirect_count", 1328 restriction: crate::device::FeatureRestriction::NotSupported, 1329 }); 1330 } 1331 } else { 1332 if extensions.khr_draw_indirect_count && api_version >= crate::Version::V1_2 { 1333 return Err(crate::device::FeatureRestrictionError { 1334 feature: "draw_indirect_count", 1335 restriction: crate::device::FeatureRestriction::RequiredByExtension( 1336 "khr_draw_indirect_count", 1337 ), 1338 }); 1339 } 1340 } 1341 if self.draw_indirect_first_instance { 1342 if !supported.draw_indirect_first_instance { 1343 return Err(crate::device::FeatureRestrictionError { 1344 feature: "draw_indirect_first_instance", 1345 restriction: crate::device::FeatureRestriction::NotSupported, 1346 }); 1347 } 1348 } else { 1349 } 1350 if self.dual_src_blend { 1351 if !supported.dual_src_blend { 1352 return Err(crate::device::FeatureRestrictionError { 1353 feature: "dual_src_blend", 1354 restriction: crate::device::FeatureRestriction::NotSupported, 1355 }); 1356 } 1357 } else { 1358 } 1359 if self.dynamic_rendering { 1360 if !supported.dynamic_rendering { 1361 return Err(crate::device::FeatureRestrictionError { 1362 feature: "dynamic_rendering", 1363 restriction: crate::device::FeatureRestriction::NotSupported, 1364 }); 1365 } 1366 } else { 1367 } 1368 if self.events { 1369 if !supported.events { 1370 return Err(crate::device::FeatureRestrictionError { 1371 feature: "events", 1372 restriction: crate::device::FeatureRestriction::NotSupported, 1373 }); 1374 } 1375 } else { 1376 } 1377 if self.exclusive_scissor { 1378 if !supported.exclusive_scissor { 1379 return Err(crate::device::FeatureRestrictionError { 1380 feature: "exclusive_scissor", 1381 restriction: crate::device::FeatureRestriction::NotSupported, 1382 }); 1383 } 1384 } else { 1385 } 1386 if self.extended_dynamic_state { 1387 if !supported.extended_dynamic_state { 1388 return Err(crate::device::FeatureRestrictionError { 1389 feature: "extended_dynamic_state", 1390 restriction: crate::device::FeatureRestriction::NotSupported, 1391 }); 1392 } 1393 } else { 1394 } 1395 if self.extended_dynamic_state2 { 1396 if !supported.extended_dynamic_state2 { 1397 return Err(crate::device::FeatureRestrictionError { 1398 feature: "extended_dynamic_state2", 1399 restriction: crate::device::FeatureRestriction::NotSupported, 1400 }); 1401 } 1402 } else { 1403 } 1404 if self.extended_dynamic_state2_logic_op { 1405 if !supported.extended_dynamic_state2_logic_op { 1406 return Err(crate::device::FeatureRestrictionError { 1407 feature: "extended_dynamic_state2_logic_op", 1408 restriction: crate::device::FeatureRestriction::NotSupported, 1409 }); 1410 } 1411 } else { 1412 } 1413 if self.extended_dynamic_state2_patch_control_points { 1414 if !supported.extended_dynamic_state2_patch_control_points { 1415 return Err(crate::device::FeatureRestrictionError { 1416 feature: "extended_dynamic_state2_patch_control_points", 1417 restriction: crate::device::FeatureRestriction::NotSupported, 1418 }); 1419 } 1420 } else { 1421 } 1422 if self.extended_dynamic_state3_alpha_to_coverage_enable { 1423 if !supported.extended_dynamic_state3_alpha_to_coverage_enable { 1424 return Err(crate::device::FeatureRestrictionError { 1425 feature: "extended_dynamic_state3_alpha_to_coverage_enable", 1426 restriction: crate::device::FeatureRestriction::NotSupported, 1427 }); 1428 } 1429 } else { 1430 } 1431 if self.extended_dynamic_state3_alpha_to_one_enable { 1432 if !supported.extended_dynamic_state3_alpha_to_one_enable { 1433 return Err(crate::device::FeatureRestrictionError { 1434 feature: "extended_dynamic_state3_alpha_to_one_enable", 1435 restriction: crate::device::FeatureRestriction::NotSupported, 1436 }); 1437 } 1438 } else { 1439 } 1440 if self.extended_dynamic_state3_color_blend_advanced { 1441 if !supported.extended_dynamic_state3_color_blend_advanced { 1442 return Err(crate::device::FeatureRestrictionError { 1443 feature: "extended_dynamic_state3_color_blend_advanced", 1444 restriction: crate::device::FeatureRestriction::NotSupported, 1445 }); 1446 } 1447 } else { 1448 } 1449 if self.extended_dynamic_state3_color_blend_enable { 1450 if !supported.extended_dynamic_state3_color_blend_enable { 1451 return Err(crate::device::FeatureRestrictionError { 1452 feature: "extended_dynamic_state3_color_blend_enable", 1453 restriction: crate::device::FeatureRestriction::NotSupported, 1454 }); 1455 } 1456 } else { 1457 } 1458 if self.extended_dynamic_state3_color_blend_equation { 1459 if !supported.extended_dynamic_state3_color_blend_equation { 1460 return Err(crate::device::FeatureRestrictionError { 1461 feature: "extended_dynamic_state3_color_blend_equation", 1462 restriction: crate::device::FeatureRestriction::NotSupported, 1463 }); 1464 } 1465 } else { 1466 } 1467 if self.extended_dynamic_state3_color_write_mask { 1468 if !supported.extended_dynamic_state3_color_write_mask { 1469 return Err(crate::device::FeatureRestrictionError { 1470 feature: "extended_dynamic_state3_color_write_mask", 1471 restriction: crate::device::FeatureRestriction::NotSupported, 1472 }); 1473 } 1474 } else { 1475 } 1476 if self.extended_dynamic_state3_conservative_rasterization_mode { 1477 if !supported.extended_dynamic_state3_conservative_rasterization_mode { 1478 return Err(crate::device::FeatureRestrictionError { 1479 feature: "extended_dynamic_state3_conservative_rasterization_mode", 1480 restriction: crate::device::FeatureRestriction::NotSupported, 1481 }); 1482 } 1483 } else { 1484 } 1485 if self.extended_dynamic_state3_coverage_modulation_mode { 1486 if !supported.extended_dynamic_state3_coverage_modulation_mode { 1487 return Err(crate::device::FeatureRestrictionError { 1488 feature: "extended_dynamic_state3_coverage_modulation_mode", 1489 restriction: crate::device::FeatureRestriction::NotSupported, 1490 }); 1491 } 1492 } else { 1493 } 1494 if self.extended_dynamic_state3_coverage_modulation_table { 1495 if !supported.extended_dynamic_state3_coverage_modulation_table { 1496 return Err(crate::device::FeatureRestrictionError { 1497 feature: "extended_dynamic_state3_coverage_modulation_table", 1498 restriction: crate::device::FeatureRestriction::NotSupported, 1499 }); 1500 } 1501 } else { 1502 } 1503 if self.extended_dynamic_state3_coverage_modulation_table_enable { 1504 if !supported.extended_dynamic_state3_coverage_modulation_table_enable { 1505 return Err(crate::device::FeatureRestrictionError { 1506 feature: "extended_dynamic_state3_coverage_modulation_table_enable", 1507 restriction: crate::device::FeatureRestriction::NotSupported, 1508 }); 1509 } 1510 } else { 1511 } 1512 if self.extended_dynamic_state3_coverage_reduction_mode { 1513 if !supported.extended_dynamic_state3_coverage_reduction_mode { 1514 return Err(crate::device::FeatureRestrictionError { 1515 feature: "extended_dynamic_state3_coverage_reduction_mode", 1516 restriction: crate::device::FeatureRestriction::NotSupported, 1517 }); 1518 } 1519 } else { 1520 } 1521 if self.extended_dynamic_state3_coverage_to_color_enable { 1522 if !supported.extended_dynamic_state3_coverage_to_color_enable { 1523 return Err(crate::device::FeatureRestrictionError { 1524 feature: "extended_dynamic_state3_coverage_to_color_enable", 1525 restriction: crate::device::FeatureRestriction::NotSupported, 1526 }); 1527 } 1528 } else { 1529 } 1530 if self.extended_dynamic_state3_coverage_to_color_location { 1531 if !supported.extended_dynamic_state3_coverage_to_color_location { 1532 return Err(crate::device::FeatureRestrictionError { 1533 feature: "extended_dynamic_state3_coverage_to_color_location", 1534 restriction: crate::device::FeatureRestriction::NotSupported, 1535 }); 1536 } 1537 } else { 1538 } 1539 if self.extended_dynamic_state3_depth_clamp_enable { 1540 if !supported.extended_dynamic_state3_depth_clamp_enable { 1541 return Err(crate::device::FeatureRestrictionError { 1542 feature: "extended_dynamic_state3_depth_clamp_enable", 1543 restriction: crate::device::FeatureRestriction::NotSupported, 1544 }); 1545 } 1546 } else { 1547 } 1548 if self.extended_dynamic_state3_depth_clip_enable { 1549 if !supported.extended_dynamic_state3_depth_clip_enable { 1550 return Err(crate::device::FeatureRestrictionError { 1551 feature: "extended_dynamic_state3_depth_clip_enable", 1552 restriction: crate::device::FeatureRestriction::NotSupported, 1553 }); 1554 } 1555 } else { 1556 } 1557 if self.extended_dynamic_state3_depth_clip_negative_one_to_one { 1558 if !supported.extended_dynamic_state3_depth_clip_negative_one_to_one { 1559 return Err(crate::device::FeatureRestrictionError { 1560 feature: "extended_dynamic_state3_depth_clip_negative_one_to_one", 1561 restriction: crate::device::FeatureRestriction::NotSupported, 1562 }); 1563 } 1564 } else { 1565 } 1566 if self.extended_dynamic_state3_extra_primitive_overestimation_size { 1567 if !supported.extended_dynamic_state3_extra_primitive_overestimation_size { 1568 return Err(crate::device::FeatureRestrictionError { 1569 feature: "extended_dynamic_state3_extra_primitive_overestimation_size", 1570 restriction: crate::device::FeatureRestriction::NotSupported, 1571 }); 1572 } 1573 } else { 1574 } 1575 if self.extended_dynamic_state3_line_rasterization_mode { 1576 if !supported.extended_dynamic_state3_line_rasterization_mode { 1577 return Err(crate::device::FeatureRestrictionError { 1578 feature: "extended_dynamic_state3_line_rasterization_mode", 1579 restriction: crate::device::FeatureRestriction::NotSupported, 1580 }); 1581 } 1582 } else { 1583 } 1584 if self.extended_dynamic_state3_line_stipple_enable { 1585 if !supported.extended_dynamic_state3_line_stipple_enable { 1586 return Err(crate::device::FeatureRestrictionError { 1587 feature: "extended_dynamic_state3_line_stipple_enable", 1588 restriction: crate::device::FeatureRestriction::NotSupported, 1589 }); 1590 } 1591 } else { 1592 } 1593 if self.extended_dynamic_state3_logic_op_enable { 1594 if !supported.extended_dynamic_state3_logic_op_enable { 1595 return Err(crate::device::FeatureRestrictionError { 1596 feature: "extended_dynamic_state3_logic_op_enable", 1597 restriction: crate::device::FeatureRestriction::NotSupported, 1598 }); 1599 } 1600 } else { 1601 } 1602 if self.extended_dynamic_state3_polygon_mode { 1603 if !supported.extended_dynamic_state3_polygon_mode { 1604 return Err(crate::device::FeatureRestrictionError { 1605 feature: "extended_dynamic_state3_polygon_mode", 1606 restriction: crate::device::FeatureRestriction::NotSupported, 1607 }); 1608 } 1609 } else { 1610 } 1611 if self.extended_dynamic_state3_provoking_vertex_mode { 1612 if !supported.extended_dynamic_state3_provoking_vertex_mode { 1613 return Err(crate::device::FeatureRestrictionError { 1614 feature: "extended_dynamic_state3_provoking_vertex_mode", 1615 restriction: crate::device::FeatureRestriction::NotSupported, 1616 }); 1617 } 1618 } else { 1619 } 1620 if self.extended_dynamic_state3_rasterization_samples { 1621 if !supported.extended_dynamic_state3_rasterization_samples { 1622 return Err(crate::device::FeatureRestrictionError { 1623 feature: "extended_dynamic_state3_rasterization_samples", 1624 restriction: crate::device::FeatureRestriction::NotSupported, 1625 }); 1626 } 1627 } else { 1628 } 1629 if self.extended_dynamic_state3_rasterization_stream { 1630 if !supported.extended_dynamic_state3_rasterization_stream { 1631 return Err(crate::device::FeatureRestrictionError { 1632 feature: "extended_dynamic_state3_rasterization_stream", 1633 restriction: crate::device::FeatureRestriction::NotSupported, 1634 }); 1635 } 1636 } else { 1637 } 1638 if self.extended_dynamic_state3_representative_fragment_test_enable { 1639 if !supported.extended_dynamic_state3_representative_fragment_test_enable { 1640 return Err(crate::device::FeatureRestrictionError { 1641 feature: "extended_dynamic_state3_representative_fragment_test_enable", 1642 restriction: crate::device::FeatureRestriction::NotSupported, 1643 }); 1644 } 1645 } else { 1646 } 1647 if self.extended_dynamic_state3_sample_locations_enable { 1648 if !supported.extended_dynamic_state3_sample_locations_enable { 1649 return Err(crate::device::FeatureRestrictionError { 1650 feature: "extended_dynamic_state3_sample_locations_enable", 1651 restriction: crate::device::FeatureRestriction::NotSupported, 1652 }); 1653 } 1654 } else { 1655 } 1656 if self.extended_dynamic_state3_sample_mask { 1657 if !supported.extended_dynamic_state3_sample_mask { 1658 return Err(crate::device::FeatureRestrictionError { 1659 feature: "extended_dynamic_state3_sample_mask", 1660 restriction: crate::device::FeatureRestriction::NotSupported, 1661 }); 1662 } 1663 } else { 1664 } 1665 if self.extended_dynamic_state3_shading_rate_image_enable { 1666 if !supported.extended_dynamic_state3_shading_rate_image_enable { 1667 return Err(crate::device::FeatureRestrictionError { 1668 feature: "extended_dynamic_state3_shading_rate_image_enable", 1669 restriction: crate::device::FeatureRestriction::NotSupported, 1670 }); 1671 } 1672 } else { 1673 } 1674 if self.extended_dynamic_state3_tessellation_domain_origin { 1675 if !supported.extended_dynamic_state3_tessellation_domain_origin { 1676 return Err(crate::device::FeatureRestrictionError { 1677 feature: "extended_dynamic_state3_tessellation_domain_origin", 1678 restriction: crate::device::FeatureRestriction::NotSupported, 1679 }); 1680 } 1681 } else { 1682 } 1683 if self.extended_dynamic_state3_viewport_swizzle { 1684 if !supported.extended_dynamic_state3_viewport_swizzle { 1685 return Err(crate::device::FeatureRestrictionError { 1686 feature: "extended_dynamic_state3_viewport_swizzle", 1687 restriction: crate::device::FeatureRestriction::NotSupported, 1688 }); 1689 } 1690 } else { 1691 } 1692 if self.extended_dynamic_state3_viewport_w_scaling_enable { 1693 if !supported.extended_dynamic_state3_viewport_w_scaling_enable { 1694 return Err(crate::device::FeatureRestrictionError { 1695 feature: "extended_dynamic_state3_viewport_w_scaling_enable", 1696 restriction: crate::device::FeatureRestriction::NotSupported, 1697 }); 1698 } 1699 } else { 1700 } 1701 if self.external_memory_rdma { 1702 if !supported.external_memory_rdma { 1703 return Err(crate::device::FeatureRestrictionError { 1704 feature: "external_memory_rdma", 1705 restriction: crate::device::FeatureRestriction::NotSupported, 1706 }); 1707 } 1708 } else { 1709 } 1710 if self.fill_mode_non_solid { 1711 if !supported.fill_mode_non_solid { 1712 return Err(crate::device::FeatureRestrictionError { 1713 feature: "fill_mode_non_solid", 1714 restriction: crate::device::FeatureRestriction::NotSupported, 1715 }); 1716 } 1717 } else { 1718 } 1719 if self.format_a4b4g4r4 { 1720 if !supported.format_a4b4g4r4 { 1721 return Err(crate::device::FeatureRestrictionError { 1722 feature: "format_a4b4g4r4", 1723 restriction: crate::device::FeatureRestriction::NotSupported, 1724 }); 1725 } 1726 } else { 1727 } 1728 if self.format_a4r4g4b4 { 1729 if !supported.format_a4r4g4b4 { 1730 return Err(crate::device::FeatureRestrictionError { 1731 feature: "format_a4r4g4b4", 1732 restriction: crate::device::FeatureRestriction::NotSupported, 1733 }); 1734 } 1735 } else { 1736 } 1737 if self.format_rgba10x6_without_y_cb_cr_sampler { 1738 if !supported.format_rgba10x6_without_y_cb_cr_sampler { 1739 return Err(crate::device::FeatureRestrictionError { 1740 feature: "format_rgba10x6_without_y_cb_cr_sampler", 1741 restriction: crate::device::FeatureRestriction::NotSupported, 1742 }); 1743 } 1744 } else { 1745 } 1746 if self.fragment_density_map { 1747 if !supported.fragment_density_map { 1748 return Err(crate::device::FeatureRestrictionError { 1749 feature: "fragment_density_map", 1750 restriction: crate::device::FeatureRestriction::NotSupported, 1751 }); 1752 } 1753 if self.pipeline_fragment_shading_rate { 1754 return Err(crate::device::FeatureRestrictionError { 1755 feature: "fragment_density_map", 1756 restriction: crate::device::FeatureRestriction::ConflictsFeature( 1757 "pipeline_fragment_shading_rate", 1758 ), 1759 }); 1760 } 1761 if self.primitive_fragment_shading_rate { 1762 return Err(crate::device::FeatureRestrictionError { 1763 feature: "fragment_density_map", 1764 restriction: crate::device::FeatureRestriction::ConflictsFeature( 1765 "primitive_fragment_shading_rate", 1766 ), 1767 }); 1768 } 1769 if self.attachment_fragment_shading_rate { 1770 return Err(crate::device::FeatureRestrictionError { 1771 feature: "fragment_density_map", 1772 restriction: crate::device::FeatureRestriction::ConflictsFeature( 1773 "attachment_fragment_shading_rate", 1774 ), 1775 }); 1776 } 1777 } else { 1778 } 1779 if self.fragment_density_map_deferred { 1780 if !supported.fragment_density_map_deferred { 1781 return Err(crate::device::FeatureRestrictionError { 1782 feature: "fragment_density_map_deferred", 1783 restriction: crate::device::FeatureRestriction::NotSupported, 1784 }); 1785 } 1786 } else { 1787 } 1788 if self.fragment_density_map_dynamic { 1789 if !supported.fragment_density_map_dynamic { 1790 return Err(crate::device::FeatureRestrictionError { 1791 feature: "fragment_density_map_dynamic", 1792 restriction: crate::device::FeatureRestriction::NotSupported, 1793 }); 1794 } 1795 } else { 1796 } 1797 if self.fragment_density_map_non_subsampled_images { 1798 if !supported.fragment_density_map_non_subsampled_images { 1799 return Err(crate::device::FeatureRestrictionError { 1800 feature: "fragment_density_map_non_subsampled_images", 1801 restriction: crate::device::FeatureRestriction::NotSupported, 1802 }); 1803 } 1804 } else { 1805 } 1806 if self.fragment_density_map_offset { 1807 if !supported.fragment_density_map_offset { 1808 return Err(crate::device::FeatureRestrictionError { 1809 feature: "fragment_density_map_offset", 1810 restriction: crate::device::FeatureRestriction::NotSupported, 1811 }); 1812 } 1813 } else { 1814 } 1815 if self.fragment_shader_barycentric { 1816 if !supported.fragment_shader_barycentric { 1817 return Err(crate::device::FeatureRestrictionError { 1818 feature: "fragment_shader_barycentric", 1819 restriction: crate::device::FeatureRestriction::NotSupported, 1820 }); 1821 } 1822 } else { 1823 } 1824 if self.fragment_shader_pixel_interlock { 1825 if !supported.fragment_shader_pixel_interlock { 1826 return Err(crate::device::FeatureRestrictionError { 1827 feature: "fragment_shader_pixel_interlock", 1828 restriction: crate::device::FeatureRestriction::NotSupported, 1829 }); 1830 } 1831 } else { 1832 } 1833 if self.fragment_shader_sample_interlock { 1834 if !supported.fragment_shader_sample_interlock { 1835 return Err(crate::device::FeatureRestrictionError { 1836 feature: "fragment_shader_sample_interlock", 1837 restriction: crate::device::FeatureRestriction::NotSupported, 1838 }); 1839 } 1840 } else { 1841 } 1842 if self.fragment_shader_shading_rate_interlock { 1843 if !supported.fragment_shader_shading_rate_interlock { 1844 return Err(crate::device::FeatureRestrictionError { 1845 feature: "fragment_shader_shading_rate_interlock", 1846 restriction: crate::device::FeatureRestriction::NotSupported, 1847 }); 1848 } 1849 } else { 1850 } 1851 if self.fragment_shading_rate_enums { 1852 if !supported.fragment_shading_rate_enums { 1853 return Err(crate::device::FeatureRestrictionError { 1854 feature: "fragment_shading_rate_enums", 1855 restriction: crate::device::FeatureRestriction::NotSupported, 1856 }); 1857 } 1858 } else { 1859 } 1860 if self.fragment_stores_and_atomics { 1861 if !supported.fragment_stores_and_atomics { 1862 return Err(crate::device::FeatureRestrictionError { 1863 feature: "fragment_stores_and_atomics", 1864 restriction: crate::device::FeatureRestriction::NotSupported, 1865 }); 1866 } 1867 } else { 1868 } 1869 if self.full_draw_index_uint32 { 1870 if !supported.full_draw_index_uint32 { 1871 return Err(crate::device::FeatureRestrictionError { 1872 feature: "full_draw_index_uint32", 1873 restriction: crate::device::FeatureRestriction::NotSupported, 1874 }); 1875 } 1876 } else { 1877 } 1878 if self.geometry_shader { 1879 if !supported.geometry_shader { 1880 return Err(crate::device::FeatureRestrictionError { 1881 feature: "geometry_shader", 1882 restriction: crate::device::FeatureRestriction::NotSupported, 1883 }); 1884 } 1885 } else { 1886 } 1887 if self.geometry_streams { 1888 if !supported.geometry_streams { 1889 return Err(crate::device::FeatureRestrictionError { 1890 feature: "geometry_streams", 1891 restriction: crate::device::FeatureRestriction::NotSupported, 1892 }); 1893 } 1894 } else { 1895 } 1896 if self.global_priority_query { 1897 if !supported.global_priority_query { 1898 return Err(crate::device::FeatureRestrictionError { 1899 feature: "global_priority_query", 1900 restriction: crate::device::FeatureRestriction::NotSupported, 1901 }); 1902 } 1903 } else { 1904 } 1905 if self.graphics_pipeline_library { 1906 if !supported.graphics_pipeline_library { 1907 return Err(crate::device::FeatureRestrictionError { 1908 feature: "graphics_pipeline_library", 1909 restriction: crate::device::FeatureRestriction::NotSupported, 1910 }); 1911 } 1912 } else { 1913 } 1914 if self.host_query_reset { 1915 if !supported.host_query_reset { 1916 return Err(crate::device::FeatureRestrictionError { 1917 feature: "host_query_reset", 1918 restriction: crate::device::FeatureRestriction::NotSupported, 1919 }); 1920 } 1921 } else { 1922 } 1923 if self.image2_d_view_of3_d { 1924 if !supported.image2_d_view_of3_d { 1925 return Err(crate::device::FeatureRestrictionError { 1926 feature: "image2_d_view_of3_d", 1927 restriction: crate::device::FeatureRestriction::NotSupported, 1928 }); 1929 } 1930 } else { 1931 } 1932 if self.image_compression_control { 1933 if !supported.image_compression_control { 1934 return Err(crate::device::FeatureRestrictionError { 1935 feature: "image_compression_control", 1936 restriction: crate::device::FeatureRestriction::NotSupported, 1937 }); 1938 } 1939 } else { 1940 } 1941 if self.image_compression_control_swapchain { 1942 if !supported.image_compression_control_swapchain { 1943 return Err(crate::device::FeatureRestrictionError { 1944 feature: "image_compression_control_swapchain", 1945 restriction: crate::device::FeatureRestriction::NotSupported, 1946 }); 1947 } 1948 } else { 1949 } 1950 if self.image_cube_array { 1951 if !supported.image_cube_array { 1952 return Err(crate::device::FeatureRestrictionError { 1953 feature: "image_cube_array", 1954 restriction: crate::device::FeatureRestriction::NotSupported, 1955 }); 1956 } 1957 } else { 1958 } 1959 if self.image_footprint { 1960 if !supported.image_footprint { 1961 return Err(crate::device::FeatureRestrictionError { 1962 feature: "image_footprint", 1963 restriction: crate::device::FeatureRestriction::NotSupported, 1964 }); 1965 } 1966 } else { 1967 } 1968 if self.image_view2_d_on3_d_image { 1969 if !supported.image_view2_d_on3_d_image { 1970 return Err(crate::device::FeatureRestrictionError { 1971 feature: "image_view2_d_on3_d_image", 1972 restriction: crate::device::FeatureRestriction::NotSupported, 1973 }); 1974 } 1975 } else { 1976 } 1977 if self.image_view_format_reinterpretation { 1978 if !supported.image_view_format_reinterpretation { 1979 return Err(crate::device::FeatureRestrictionError { 1980 feature: "image_view_format_reinterpretation", 1981 restriction: crate::device::FeatureRestriction::NotSupported, 1982 }); 1983 } 1984 } else { 1985 } 1986 if self.image_view_format_swizzle { 1987 if !supported.image_view_format_swizzle { 1988 return Err(crate::device::FeatureRestrictionError { 1989 feature: "image_view_format_swizzle", 1990 restriction: crate::device::FeatureRestriction::NotSupported, 1991 }); 1992 } 1993 } else { 1994 } 1995 if self.imageless_framebuffer { 1996 if !supported.imageless_framebuffer { 1997 return Err(crate::device::FeatureRestrictionError { 1998 feature: "imageless_framebuffer", 1999 restriction: crate::device::FeatureRestriction::NotSupported, 2000 }); 2001 } 2002 } else { 2003 } 2004 if self.independent_blend { 2005 if !supported.independent_blend { 2006 return Err(crate::device::FeatureRestrictionError { 2007 feature: "independent_blend", 2008 restriction: crate::device::FeatureRestriction::NotSupported, 2009 }); 2010 } 2011 } else { 2012 } 2013 if self.index_type_uint8 { 2014 if !supported.index_type_uint8 { 2015 return Err(crate::device::FeatureRestrictionError { 2016 feature: "index_type_uint8", 2017 restriction: crate::device::FeatureRestriction::NotSupported, 2018 }); 2019 } 2020 } else { 2021 } 2022 if self.indirect_copy { 2023 if !supported.indirect_copy { 2024 return Err(crate::device::FeatureRestrictionError { 2025 feature: "indirect_copy", 2026 restriction: crate::device::FeatureRestriction::NotSupported, 2027 }); 2028 } 2029 } else { 2030 } 2031 if self.inherited_conditional_rendering { 2032 if !supported.inherited_conditional_rendering { 2033 return Err(crate::device::FeatureRestrictionError { 2034 feature: "inherited_conditional_rendering", 2035 restriction: crate::device::FeatureRestriction::NotSupported, 2036 }); 2037 } 2038 } else { 2039 } 2040 if self.inherited_queries { 2041 if !supported.inherited_queries { 2042 return Err(crate::device::FeatureRestrictionError { 2043 feature: "inherited_queries", 2044 restriction: crate::device::FeatureRestriction::NotSupported, 2045 }); 2046 } 2047 } else { 2048 } 2049 if self.inherited_viewport_scissor2_d { 2050 if !supported.inherited_viewport_scissor2_d { 2051 return Err(crate::device::FeatureRestrictionError { 2052 feature: "inherited_viewport_scissor2_d", 2053 restriction: crate::device::FeatureRestriction::NotSupported, 2054 }); 2055 } 2056 } else { 2057 } 2058 if self.inline_uniform_block { 2059 if !supported.inline_uniform_block { 2060 return Err(crate::device::FeatureRestrictionError { 2061 feature: "inline_uniform_block", 2062 restriction: crate::device::FeatureRestriction::NotSupported, 2063 }); 2064 } 2065 } else { 2066 } 2067 if self.invocation_mask { 2068 if !supported.invocation_mask { 2069 return Err(crate::device::FeatureRestrictionError { 2070 feature: "invocation_mask", 2071 restriction: crate::device::FeatureRestriction::NotSupported, 2072 }); 2073 } 2074 } else { 2075 } 2076 if self.large_points { 2077 if !supported.large_points { 2078 return Err(crate::device::FeatureRestrictionError { 2079 feature: "large_points", 2080 restriction: crate::device::FeatureRestriction::NotSupported, 2081 }); 2082 } 2083 } else { 2084 } 2085 if self.legacy_dithering { 2086 if !supported.legacy_dithering { 2087 return Err(crate::device::FeatureRestrictionError { 2088 feature: "legacy_dithering", 2089 restriction: crate::device::FeatureRestriction::NotSupported, 2090 }); 2091 } 2092 } else { 2093 } 2094 if self.linear_color_attachment { 2095 if !supported.linear_color_attachment { 2096 return Err(crate::device::FeatureRestrictionError { 2097 feature: "linear_color_attachment", 2098 restriction: crate::device::FeatureRestriction::NotSupported, 2099 }); 2100 } 2101 } else { 2102 } 2103 if self.logic_op { 2104 if !supported.logic_op { 2105 return Err(crate::device::FeatureRestrictionError { 2106 feature: "logic_op", 2107 restriction: crate::device::FeatureRestriction::NotSupported, 2108 }); 2109 } 2110 } else { 2111 } 2112 if self.maintenance4 { 2113 if !supported.maintenance4 { 2114 return Err(crate::device::FeatureRestrictionError { 2115 feature: "maintenance4", 2116 restriction: crate::device::FeatureRestriction::NotSupported, 2117 }); 2118 } 2119 } else { 2120 } 2121 if self.memory_decompression { 2122 if !supported.memory_decompression { 2123 return Err(crate::device::FeatureRestrictionError { 2124 feature: "memory_decompression", 2125 restriction: crate::device::FeatureRestriction::NotSupported, 2126 }); 2127 } 2128 } else { 2129 } 2130 if self.memory_priority { 2131 if !supported.memory_priority { 2132 return Err(crate::device::FeatureRestrictionError { 2133 feature: "memory_priority", 2134 restriction: crate::device::FeatureRestriction::NotSupported, 2135 }); 2136 } 2137 } else { 2138 } 2139 if self.mesh_shader { 2140 if !supported.mesh_shader { 2141 return Err(crate::device::FeatureRestrictionError { 2142 feature: "mesh_shader", 2143 restriction: crate::device::FeatureRestriction::NotSupported, 2144 }); 2145 } 2146 } else { 2147 } 2148 if self.mesh_shader_queries { 2149 if !supported.mesh_shader_queries { 2150 return Err(crate::device::FeatureRestrictionError { 2151 feature: "mesh_shader_queries", 2152 restriction: crate::device::FeatureRestriction::NotSupported, 2153 }); 2154 } 2155 } else { 2156 } 2157 if self.micromap { 2158 if !supported.micromap { 2159 return Err(crate::device::FeatureRestrictionError { 2160 feature: "micromap", 2161 restriction: crate::device::FeatureRestriction::NotSupported, 2162 }); 2163 } 2164 } else { 2165 } 2166 if self.micromap_capture_replay { 2167 if !supported.micromap_capture_replay { 2168 return Err(crate::device::FeatureRestrictionError { 2169 feature: "micromap_capture_replay", 2170 restriction: crate::device::FeatureRestriction::NotSupported, 2171 }); 2172 } 2173 } else { 2174 } 2175 if self.micromap_host_commands { 2176 if !supported.micromap_host_commands { 2177 return Err(crate::device::FeatureRestrictionError { 2178 feature: "micromap_host_commands", 2179 restriction: crate::device::FeatureRestriction::NotSupported, 2180 }); 2181 } 2182 } else { 2183 } 2184 if self.min_lod { 2185 if !supported.min_lod { 2186 return Err(crate::device::FeatureRestrictionError { 2187 feature: "min_lod", 2188 restriction: crate::device::FeatureRestriction::NotSupported, 2189 }); 2190 } 2191 } else { 2192 } 2193 if self.multi_draw { 2194 if !supported.multi_draw { 2195 return Err(crate::device::FeatureRestrictionError { 2196 feature: "multi_draw", 2197 restriction: crate::device::FeatureRestriction::NotSupported, 2198 }); 2199 } 2200 } else { 2201 } 2202 if self.multi_draw_indirect { 2203 if !supported.multi_draw_indirect { 2204 return Err(crate::device::FeatureRestrictionError { 2205 feature: "multi_draw_indirect", 2206 restriction: crate::device::FeatureRestriction::NotSupported, 2207 }); 2208 } 2209 } else { 2210 } 2211 if self.multi_viewport { 2212 if !supported.multi_viewport { 2213 return Err(crate::device::FeatureRestrictionError { 2214 feature: "multi_viewport", 2215 restriction: crate::device::FeatureRestriction::NotSupported, 2216 }); 2217 } 2218 } else { 2219 } 2220 if self.multisample_array_image { 2221 if !supported.multisample_array_image { 2222 return Err(crate::device::FeatureRestrictionError { 2223 feature: "multisample_array_image", 2224 restriction: crate::device::FeatureRestriction::NotSupported, 2225 }); 2226 } 2227 } else { 2228 } 2229 if self.multisampled_render_to_single_sampled { 2230 if !supported.multisampled_render_to_single_sampled { 2231 return Err(crate::device::FeatureRestrictionError { 2232 feature: "multisampled_render_to_single_sampled", 2233 restriction: crate::device::FeatureRestriction::NotSupported, 2234 }); 2235 } 2236 } else { 2237 } 2238 if self.multiview { 2239 if !supported.multiview { 2240 return Err(crate::device::FeatureRestrictionError { 2241 feature: "multiview", 2242 restriction: crate::device::FeatureRestriction::NotSupported, 2243 }); 2244 } 2245 } else { 2246 } 2247 if self.multiview_geometry_shader { 2248 if !supported.multiview_geometry_shader { 2249 return Err(crate::device::FeatureRestrictionError { 2250 feature: "multiview_geometry_shader", 2251 restriction: crate::device::FeatureRestriction::NotSupported, 2252 }); 2253 } 2254 } else { 2255 } 2256 if self.multiview_mesh_shader { 2257 if !supported.multiview_mesh_shader { 2258 return Err(crate::device::FeatureRestrictionError { 2259 feature: "multiview_mesh_shader", 2260 restriction: crate::device::FeatureRestriction::NotSupported, 2261 }); 2262 } 2263 } else { 2264 } 2265 if self.multiview_per_view_viewports { 2266 if !supported.multiview_per_view_viewports { 2267 return Err(crate::device::FeatureRestrictionError { 2268 feature: "multiview_per_view_viewports", 2269 restriction: crate::device::FeatureRestriction::NotSupported, 2270 }); 2271 } 2272 } else { 2273 } 2274 if self.multiview_tessellation_shader { 2275 if !supported.multiview_tessellation_shader { 2276 return Err(crate::device::FeatureRestrictionError { 2277 feature: "multiview_tessellation_shader", 2278 restriction: crate::device::FeatureRestriction::NotSupported, 2279 }); 2280 } 2281 } else { 2282 } 2283 if self.mutable_comparison_samplers { 2284 if !supported.mutable_comparison_samplers { 2285 return Err(crate::device::FeatureRestrictionError { 2286 feature: "mutable_comparison_samplers", 2287 restriction: crate::device::FeatureRestriction::NotSupported, 2288 }); 2289 } 2290 } else { 2291 } 2292 if self.mutable_descriptor_type { 2293 if !supported.mutable_descriptor_type { 2294 return Err(crate::device::FeatureRestrictionError { 2295 feature: "mutable_descriptor_type", 2296 restriction: crate::device::FeatureRestriction::NotSupported, 2297 }); 2298 } 2299 } else { 2300 } 2301 if self.no_invocation_fragment_shading_rates { 2302 if !supported.no_invocation_fragment_shading_rates { 2303 return Err(crate::device::FeatureRestrictionError { 2304 feature: "no_invocation_fragment_shading_rates", 2305 restriction: crate::device::FeatureRestriction::NotSupported, 2306 }); 2307 } 2308 } else { 2309 } 2310 if self.non_seamless_cube_map { 2311 if !supported.non_seamless_cube_map { 2312 return Err(crate::device::FeatureRestrictionError { 2313 feature: "non_seamless_cube_map", 2314 restriction: crate::device::FeatureRestriction::NotSupported, 2315 }); 2316 } 2317 } else { 2318 } 2319 if self.null_descriptor { 2320 if !supported.null_descriptor { 2321 return Err(crate::device::FeatureRestrictionError { 2322 feature: "null_descriptor", 2323 restriction: crate::device::FeatureRestriction::NotSupported, 2324 }); 2325 } 2326 } else { 2327 } 2328 if self.occlusion_query_precise { 2329 if !supported.occlusion_query_precise { 2330 return Err(crate::device::FeatureRestrictionError { 2331 feature: "occlusion_query_precise", 2332 restriction: crate::device::FeatureRestriction::NotSupported, 2333 }); 2334 } 2335 } else { 2336 } 2337 if self.optical_flow { 2338 if !supported.optical_flow { 2339 return Err(crate::device::FeatureRestrictionError { 2340 feature: "optical_flow", 2341 restriction: crate::device::FeatureRestriction::NotSupported, 2342 }); 2343 } 2344 } else { 2345 } 2346 if self.pageable_device_local_memory { 2347 if !supported.pageable_device_local_memory { 2348 return Err(crate::device::FeatureRestrictionError { 2349 feature: "pageable_device_local_memory", 2350 restriction: crate::device::FeatureRestriction::NotSupported, 2351 }); 2352 } 2353 } else { 2354 } 2355 if self.performance_counter_multiple_query_pools { 2356 if !supported.performance_counter_multiple_query_pools { 2357 return Err(crate::device::FeatureRestrictionError { 2358 feature: "performance_counter_multiple_query_pools", 2359 restriction: crate::device::FeatureRestriction::NotSupported, 2360 }); 2361 } 2362 } else { 2363 } 2364 if self.performance_counter_query_pools { 2365 if !supported.performance_counter_query_pools { 2366 return Err(crate::device::FeatureRestrictionError { 2367 feature: "performance_counter_query_pools", 2368 restriction: crate::device::FeatureRestriction::NotSupported, 2369 }); 2370 } 2371 } else { 2372 } 2373 if self.pipeline_creation_cache_control { 2374 if !supported.pipeline_creation_cache_control { 2375 return Err(crate::device::FeatureRestrictionError { 2376 feature: "pipeline_creation_cache_control", 2377 restriction: crate::device::FeatureRestriction::NotSupported, 2378 }); 2379 } 2380 } else { 2381 } 2382 if self.pipeline_executable_info { 2383 if !supported.pipeline_executable_info { 2384 return Err(crate::device::FeatureRestrictionError { 2385 feature: "pipeline_executable_info", 2386 restriction: crate::device::FeatureRestriction::NotSupported, 2387 }); 2388 } 2389 } else { 2390 } 2391 if self.pipeline_fragment_shading_rate { 2392 if !supported.pipeline_fragment_shading_rate { 2393 return Err(crate::device::FeatureRestrictionError { 2394 feature: "pipeline_fragment_shading_rate", 2395 restriction: crate::device::FeatureRestriction::NotSupported, 2396 }); 2397 } 2398 if self.shading_rate_image { 2399 return Err(crate::device::FeatureRestrictionError { 2400 feature: "pipeline_fragment_shading_rate", 2401 restriction: crate::device::FeatureRestriction::ConflictsFeature( 2402 "shading_rate_image", 2403 ), 2404 }); 2405 } 2406 if self.fragment_density_map { 2407 return Err(crate::device::FeatureRestrictionError { 2408 feature: "pipeline_fragment_shading_rate", 2409 restriction: crate::device::FeatureRestriction::ConflictsFeature( 2410 "fragment_density_map", 2411 ), 2412 }); 2413 } 2414 } else { 2415 } 2416 if self.pipeline_properties_identifier { 2417 if !supported.pipeline_properties_identifier { 2418 return Err(crate::device::FeatureRestrictionError { 2419 feature: "pipeline_properties_identifier", 2420 restriction: crate::device::FeatureRestriction::NotSupported, 2421 }); 2422 } 2423 } else { 2424 } 2425 if self.pipeline_protected_access { 2426 if !supported.pipeline_protected_access { 2427 return Err(crate::device::FeatureRestrictionError { 2428 feature: "pipeline_protected_access", 2429 restriction: crate::device::FeatureRestriction::NotSupported, 2430 }); 2431 } 2432 } else { 2433 } 2434 if self.pipeline_robustness { 2435 if !supported.pipeline_robustness { 2436 return Err(crate::device::FeatureRestrictionError { 2437 feature: "pipeline_robustness", 2438 restriction: crate::device::FeatureRestriction::NotSupported, 2439 }); 2440 } 2441 } else { 2442 } 2443 if self.pipeline_statistics_query { 2444 if !supported.pipeline_statistics_query { 2445 return Err(crate::device::FeatureRestrictionError { 2446 feature: "pipeline_statistics_query", 2447 restriction: crate::device::FeatureRestriction::NotSupported, 2448 }); 2449 } 2450 } else { 2451 } 2452 if self.point_polygons { 2453 if !supported.point_polygons { 2454 return Err(crate::device::FeatureRestrictionError { 2455 feature: "point_polygons", 2456 restriction: crate::device::FeatureRestriction::NotSupported, 2457 }); 2458 } 2459 } else { 2460 } 2461 if self.present_barrier { 2462 if !supported.present_barrier { 2463 return Err(crate::device::FeatureRestrictionError { 2464 feature: "present_barrier", 2465 restriction: crate::device::FeatureRestriction::NotSupported, 2466 }); 2467 } 2468 } else { 2469 } 2470 if self.present_id { 2471 if !supported.present_id { 2472 return Err(crate::device::FeatureRestrictionError { 2473 feature: "present_id", 2474 restriction: crate::device::FeatureRestriction::NotSupported, 2475 }); 2476 } 2477 } else { 2478 } 2479 if self.present_wait { 2480 if !supported.present_wait { 2481 return Err(crate::device::FeatureRestrictionError { 2482 feature: "present_wait", 2483 restriction: crate::device::FeatureRestriction::NotSupported, 2484 }); 2485 } 2486 } else { 2487 } 2488 if self.primitive_fragment_shading_rate { 2489 if !supported.primitive_fragment_shading_rate { 2490 return Err(crate::device::FeatureRestrictionError { 2491 feature: "primitive_fragment_shading_rate", 2492 restriction: crate::device::FeatureRestriction::NotSupported, 2493 }); 2494 } 2495 if self.shading_rate_image { 2496 return Err(crate::device::FeatureRestrictionError { 2497 feature: "primitive_fragment_shading_rate", 2498 restriction: crate::device::FeatureRestriction::ConflictsFeature( 2499 "shading_rate_image", 2500 ), 2501 }); 2502 } 2503 if self.fragment_density_map { 2504 return Err(crate::device::FeatureRestrictionError { 2505 feature: "primitive_fragment_shading_rate", 2506 restriction: crate::device::FeatureRestriction::ConflictsFeature( 2507 "fragment_density_map", 2508 ), 2509 }); 2510 } 2511 } else { 2512 } 2513 if self.primitive_fragment_shading_rate_mesh_shader { 2514 if !supported.primitive_fragment_shading_rate_mesh_shader { 2515 return Err(crate::device::FeatureRestrictionError { 2516 feature: "primitive_fragment_shading_rate_mesh_shader", 2517 restriction: crate::device::FeatureRestriction::NotSupported, 2518 }); 2519 } 2520 } else { 2521 } 2522 if self.primitive_topology_list_restart { 2523 if !supported.primitive_topology_list_restart { 2524 return Err(crate::device::FeatureRestrictionError { 2525 feature: "primitive_topology_list_restart", 2526 restriction: crate::device::FeatureRestriction::NotSupported, 2527 }); 2528 } 2529 } else { 2530 } 2531 if self.primitive_topology_patch_list_restart { 2532 if !supported.primitive_topology_patch_list_restart { 2533 return Err(crate::device::FeatureRestrictionError { 2534 feature: "primitive_topology_patch_list_restart", 2535 restriction: crate::device::FeatureRestriction::NotSupported, 2536 }); 2537 } 2538 } else { 2539 } 2540 if self.primitives_generated_query { 2541 if !supported.primitives_generated_query { 2542 return Err(crate::device::FeatureRestrictionError { 2543 feature: "primitives_generated_query", 2544 restriction: crate::device::FeatureRestriction::NotSupported, 2545 }); 2546 } 2547 } else { 2548 } 2549 if self.primitives_generated_query_with_non_zero_streams { 2550 if !supported.primitives_generated_query_with_non_zero_streams { 2551 return Err(crate::device::FeatureRestrictionError { 2552 feature: "primitives_generated_query_with_non_zero_streams", 2553 restriction: crate::device::FeatureRestriction::NotSupported, 2554 }); 2555 } 2556 } else { 2557 } 2558 if self.primitives_generated_query_with_rasterizer_discard { 2559 if !supported.primitives_generated_query_with_rasterizer_discard { 2560 return Err(crate::device::FeatureRestrictionError { 2561 feature: "primitives_generated_query_with_rasterizer_discard", 2562 restriction: crate::device::FeatureRestriction::NotSupported, 2563 }); 2564 } 2565 } else { 2566 } 2567 if self.private_data { 2568 if !supported.private_data { 2569 return Err(crate::device::FeatureRestrictionError { 2570 feature: "private_data", 2571 restriction: crate::device::FeatureRestriction::NotSupported, 2572 }); 2573 } 2574 } else { 2575 } 2576 if self.protected_memory { 2577 if !supported.protected_memory { 2578 return Err(crate::device::FeatureRestrictionError { 2579 feature: "protected_memory", 2580 restriction: crate::device::FeatureRestriction::NotSupported, 2581 }); 2582 } 2583 } else { 2584 } 2585 if self.provoking_vertex_last { 2586 if !supported.provoking_vertex_last { 2587 return Err(crate::device::FeatureRestrictionError { 2588 feature: "provoking_vertex_last", 2589 restriction: crate::device::FeatureRestriction::NotSupported, 2590 }); 2591 } 2592 } else { 2593 } 2594 if self.rasterization_order_color_attachment_access { 2595 if !supported.rasterization_order_color_attachment_access { 2596 return Err(crate::device::FeatureRestrictionError { 2597 feature: "rasterization_order_color_attachment_access", 2598 restriction: crate::device::FeatureRestriction::NotSupported, 2599 }); 2600 } 2601 } else { 2602 } 2603 if self.rasterization_order_depth_attachment_access { 2604 if !supported.rasterization_order_depth_attachment_access { 2605 return Err(crate::device::FeatureRestrictionError { 2606 feature: "rasterization_order_depth_attachment_access", 2607 restriction: crate::device::FeatureRestriction::NotSupported, 2608 }); 2609 } 2610 } else { 2611 } 2612 if self.rasterization_order_stencil_attachment_access { 2613 if !supported.rasterization_order_stencil_attachment_access { 2614 return Err(crate::device::FeatureRestrictionError { 2615 feature: "rasterization_order_stencil_attachment_access", 2616 restriction: crate::device::FeatureRestriction::NotSupported, 2617 }); 2618 } 2619 } else { 2620 } 2621 if self.ray_query { 2622 if !supported.ray_query { 2623 return Err(crate::device::FeatureRestrictionError { 2624 feature: "ray_query", 2625 restriction: crate::device::FeatureRestriction::NotSupported, 2626 }); 2627 } 2628 } else { 2629 } 2630 if self.ray_tracing_invocation_reorder { 2631 if !supported.ray_tracing_invocation_reorder { 2632 return Err(crate::device::FeatureRestrictionError { 2633 feature: "ray_tracing_invocation_reorder", 2634 restriction: crate::device::FeatureRestriction::NotSupported, 2635 }); 2636 } 2637 } else { 2638 } 2639 if self.ray_tracing_maintenance1 { 2640 if !supported.ray_tracing_maintenance1 { 2641 return Err(crate::device::FeatureRestrictionError { 2642 feature: "ray_tracing_maintenance1", 2643 restriction: crate::device::FeatureRestriction::NotSupported, 2644 }); 2645 } 2646 } else { 2647 } 2648 if self.ray_tracing_motion_blur { 2649 if !supported.ray_tracing_motion_blur { 2650 return Err(crate::device::FeatureRestrictionError { 2651 feature: "ray_tracing_motion_blur", 2652 restriction: crate::device::FeatureRestriction::NotSupported, 2653 }); 2654 } 2655 } else { 2656 } 2657 if self.ray_tracing_motion_blur_pipeline_trace_rays_indirect { 2658 if !supported.ray_tracing_motion_blur_pipeline_trace_rays_indirect { 2659 return Err(crate::device::FeatureRestrictionError { 2660 feature: "ray_tracing_motion_blur_pipeline_trace_rays_indirect", 2661 restriction: crate::device::FeatureRestriction::NotSupported, 2662 }); 2663 } 2664 } else { 2665 } 2666 if self.ray_tracing_pipeline { 2667 if !supported.ray_tracing_pipeline { 2668 return Err(crate::device::FeatureRestrictionError { 2669 feature: "ray_tracing_pipeline", 2670 restriction: crate::device::FeatureRestriction::NotSupported, 2671 }); 2672 } 2673 } else { 2674 } 2675 if self.ray_tracing_pipeline_shader_group_handle_capture_replay { 2676 if !supported.ray_tracing_pipeline_shader_group_handle_capture_replay { 2677 return Err(crate::device::FeatureRestrictionError { 2678 feature: "ray_tracing_pipeline_shader_group_handle_capture_replay", 2679 restriction: crate::device::FeatureRestriction::NotSupported, 2680 }); 2681 } 2682 } else { 2683 } 2684 if self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed { 2685 if !supported.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed { 2686 return Err(crate::device::FeatureRestrictionError { 2687 feature: "ray_tracing_pipeline_shader_group_handle_capture_replay_mixed", 2688 restriction: crate::device::FeatureRestriction::NotSupported, 2689 }); 2690 } 2691 } else { 2692 } 2693 if self.ray_tracing_pipeline_trace_rays_indirect { 2694 if !supported.ray_tracing_pipeline_trace_rays_indirect { 2695 return Err(crate::device::FeatureRestrictionError { 2696 feature: "ray_tracing_pipeline_trace_rays_indirect", 2697 restriction: crate::device::FeatureRestriction::NotSupported, 2698 }); 2699 } 2700 } else { 2701 } 2702 if self.ray_tracing_pipeline_trace_rays_indirect2 { 2703 if !supported.ray_tracing_pipeline_trace_rays_indirect2 { 2704 return Err(crate::device::FeatureRestrictionError { 2705 feature: "ray_tracing_pipeline_trace_rays_indirect2", 2706 restriction: crate::device::FeatureRestriction::NotSupported, 2707 }); 2708 } 2709 } else { 2710 } 2711 if self.ray_traversal_primitive_culling { 2712 if !supported.ray_traversal_primitive_culling { 2713 return Err(crate::device::FeatureRestrictionError { 2714 feature: "ray_traversal_primitive_culling", 2715 restriction: crate::device::FeatureRestriction::NotSupported, 2716 }); 2717 } 2718 } else { 2719 } 2720 if self.rectangular_lines { 2721 if !supported.rectangular_lines { 2722 return Err(crate::device::FeatureRestrictionError { 2723 feature: "rectangular_lines", 2724 restriction: crate::device::FeatureRestriction::NotSupported, 2725 }); 2726 } 2727 } else { 2728 } 2729 if self.report_address_binding { 2730 if !supported.report_address_binding { 2731 return Err(crate::device::FeatureRestrictionError { 2732 feature: "report_address_binding", 2733 restriction: crate::device::FeatureRestriction::NotSupported, 2734 }); 2735 } 2736 } else { 2737 } 2738 if self.representative_fragment_test { 2739 if !supported.representative_fragment_test { 2740 return Err(crate::device::FeatureRestrictionError { 2741 feature: "representative_fragment_test", 2742 restriction: crate::device::FeatureRestriction::NotSupported, 2743 }); 2744 } 2745 } else { 2746 } 2747 if self.robust_buffer_access { 2748 if !supported.robust_buffer_access { 2749 return Err(crate::device::FeatureRestrictionError { 2750 feature: "robust_buffer_access", 2751 restriction: crate::device::FeatureRestriction::NotSupported, 2752 }); 2753 } 2754 } else { 2755 } 2756 if self.robust_buffer_access2 { 2757 if !supported.robust_buffer_access2 { 2758 return Err(crate::device::FeatureRestrictionError { 2759 feature: "robust_buffer_access2", 2760 restriction: crate::device::FeatureRestriction::NotSupported, 2761 }); 2762 } 2763 } else { 2764 } 2765 if self.robust_image_access { 2766 if !supported.robust_image_access { 2767 return Err(crate::device::FeatureRestrictionError { 2768 feature: "robust_image_access", 2769 restriction: crate::device::FeatureRestriction::NotSupported, 2770 }); 2771 } 2772 } else { 2773 } 2774 if self.robust_image_access2 { 2775 if !supported.robust_image_access2 { 2776 return Err(crate::device::FeatureRestrictionError { 2777 feature: "robust_image_access2", 2778 restriction: crate::device::FeatureRestriction::NotSupported, 2779 }); 2780 } 2781 } else { 2782 } 2783 if self.runtime_descriptor_array { 2784 if !supported.runtime_descriptor_array { 2785 return Err(crate::device::FeatureRestrictionError { 2786 feature: "runtime_descriptor_array", 2787 restriction: crate::device::FeatureRestriction::NotSupported, 2788 }); 2789 } 2790 } else { 2791 } 2792 if self.sample_rate_shading { 2793 if !supported.sample_rate_shading { 2794 return Err(crate::device::FeatureRestrictionError { 2795 feature: "sample_rate_shading", 2796 restriction: crate::device::FeatureRestriction::NotSupported, 2797 }); 2798 } 2799 } else { 2800 } 2801 if self.sampler2_d_view_of3_d { 2802 if !supported.sampler2_d_view_of3_d { 2803 return Err(crate::device::FeatureRestrictionError { 2804 feature: "sampler2_d_view_of3_d", 2805 restriction: crate::device::FeatureRestriction::NotSupported, 2806 }); 2807 } 2808 } else { 2809 } 2810 if self.sampler_anisotropy { 2811 if !supported.sampler_anisotropy { 2812 return Err(crate::device::FeatureRestrictionError { 2813 feature: "sampler_anisotropy", 2814 restriction: crate::device::FeatureRestriction::NotSupported, 2815 }); 2816 } 2817 } else { 2818 } 2819 if self.sampler_filter_minmax { 2820 if !supported.sampler_filter_minmax { 2821 return Err(crate::device::FeatureRestrictionError { 2822 feature: "sampler_filter_minmax", 2823 restriction: crate::device::FeatureRestriction::NotSupported, 2824 }); 2825 } 2826 } else { 2827 if extensions.ext_sampler_filter_minmax && api_version >= crate::Version::V1_2 { 2828 return Err(crate::device::FeatureRestrictionError { 2829 feature: "sampler_filter_minmax", 2830 restriction: crate::device::FeatureRestriction::RequiredByExtension( 2831 "ext_sampler_filter_minmax", 2832 ), 2833 }); 2834 } 2835 } 2836 if self.sampler_mip_lod_bias { 2837 if !supported.sampler_mip_lod_bias { 2838 return Err(crate::device::FeatureRestrictionError { 2839 feature: "sampler_mip_lod_bias", 2840 restriction: crate::device::FeatureRestriction::NotSupported, 2841 }); 2842 } 2843 } else { 2844 } 2845 if self.sampler_mirror_clamp_to_edge { 2846 if !supported.sampler_mirror_clamp_to_edge { 2847 return Err(crate::device::FeatureRestrictionError { 2848 feature: "sampler_mirror_clamp_to_edge", 2849 restriction: crate::device::FeatureRestriction::NotSupported, 2850 }); 2851 } 2852 } else { 2853 if extensions.khr_sampler_mirror_clamp_to_edge && api_version >= crate::Version::V1_2 { 2854 return Err(crate::device::FeatureRestrictionError { 2855 feature: "sampler_mirror_clamp_to_edge", 2856 restriction: crate::device::FeatureRestriction::RequiredByExtension( 2857 "khr_sampler_mirror_clamp_to_edge", 2858 ), 2859 }); 2860 } 2861 } 2862 if self.sampler_ycbcr_conversion { 2863 if !supported.sampler_ycbcr_conversion { 2864 return Err(crate::device::FeatureRestrictionError { 2865 feature: "sampler_ycbcr_conversion", 2866 restriction: crate::device::FeatureRestriction::NotSupported, 2867 }); 2868 } 2869 } else { 2870 } 2871 if self.scalar_block_layout { 2872 if !supported.scalar_block_layout { 2873 return Err(crate::device::FeatureRestrictionError { 2874 feature: "scalar_block_layout", 2875 restriction: crate::device::FeatureRestriction::NotSupported, 2876 }); 2877 } 2878 } else { 2879 } 2880 if self.separate_depth_stencil_layouts { 2881 if !supported.separate_depth_stencil_layouts { 2882 return Err(crate::device::FeatureRestrictionError { 2883 feature: "separate_depth_stencil_layouts", 2884 restriction: crate::device::FeatureRestriction::NotSupported, 2885 }); 2886 } 2887 } else { 2888 } 2889 if self.separate_stencil_mask_ref { 2890 if !supported.separate_stencil_mask_ref { 2891 return Err(crate::device::FeatureRestrictionError { 2892 feature: "separate_stencil_mask_ref", 2893 restriction: crate::device::FeatureRestriction::NotSupported, 2894 }); 2895 } 2896 } else { 2897 } 2898 if self.shader_buffer_float16_atomic_add { 2899 if !supported.shader_buffer_float16_atomic_add { 2900 return Err(crate::device::FeatureRestrictionError { 2901 feature: "shader_buffer_float16_atomic_add", 2902 restriction: crate::device::FeatureRestriction::NotSupported, 2903 }); 2904 } 2905 } else { 2906 } 2907 if self.shader_buffer_float16_atomic_min_max { 2908 if !supported.shader_buffer_float16_atomic_min_max { 2909 return Err(crate::device::FeatureRestrictionError { 2910 feature: "shader_buffer_float16_atomic_min_max", 2911 restriction: crate::device::FeatureRestriction::NotSupported, 2912 }); 2913 } 2914 } else { 2915 } 2916 if self.shader_buffer_float16_atomics { 2917 if !supported.shader_buffer_float16_atomics { 2918 return Err(crate::device::FeatureRestrictionError { 2919 feature: "shader_buffer_float16_atomics", 2920 restriction: crate::device::FeatureRestriction::NotSupported, 2921 }); 2922 } 2923 } else { 2924 } 2925 if self.shader_buffer_float32_atomic_add { 2926 if !supported.shader_buffer_float32_atomic_add { 2927 return Err(crate::device::FeatureRestrictionError { 2928 feature: "shader_buffer_float32_atomic_add", 2929 restriction: crate::device::FeatureRestriction::NotSupported, 2930 }); 2931 } 2932 } else { 2933 } 2934 if self.shader_buffer_float32_atomic_min_max { 2935 if !supported.shader_buffer_float32_atomic_min_max { 2936 return Err(crate::device::FeatureRestrictionError { 2937 feature: "shader_buffer_float32_atomic_min_max", 2938 restriction: crate::device::FeatureRestriction::NotSupported, 2939 }); 2940 } 2941 } else { 2942 } 2943 if self.shader_buffer_float32_atomics { 2944 if !supported.shader_buffer_float32_atomics { 2945 return Err(crate::device::FeatureRestrictionError { 2946 feature: "shader_buffer_float32_atomics", 2947 restriction: crate::device::FeatureRestriction::NotSupported, 2948 }); 2949 } 2950 } else { 2951 } 2952 if self.shader_buffer_float64_atomic_add { 2953 if !supported.shader_buffer_float64_atomic_add { 2954 return Err(crate::device::FeatureRestrictionError { 2955 feature: "shader_buffer_float64_atomic_add", 2956 restriction: crate::device::FeatureRestriction::NotSupported, 2957 }); 2958 } 2959 } else { 2960 } 2961 if self.shader_buffer_float64_atomic_min_max { 2962 if !supported.shader_buffer_float64_atomic_min_max { 2963 return Err(crate::device::FeatureRestrictionError { 2964 feature: "shader_buffer_float64_atomic_min_max", 2965 restriction: crate::device::FeatureRestriction::NotSupported, 2966 }); 2967 } 2968 } else { 2969 } 2970 if self.shader_buffer_float64_atomics { 2971 if !supported.shader_buffer_float64_atomics { 2972 return Err(crate::device::FeatureRestrictionError { 2973 feature: "shader_buffer_float64_atomics", 2974 restriction: crate::device::FeatureRestriction::NotSupported, 2975 }); 2976 } 2977 } else { 2978 } 2979 if self.shader_buffer_int64_atomics { 2980 if !supported.shader_buffer_int64_atomics { 2981 return Err(crate::device::FeatureRestrictionError { 2982 feature: "shader_buffer_int64_atomics", 2983 restriction: crate::device::FeatureRestriction::NotSupported, 2984 }); 2985 } 2986 } else { 2987 } 2988 if self.shader_clip_distance { 2989 if !supported.shader_clip_distance { 2990 return Err(crate::device::FeatureRestrictionError { 2991 feature: "shader_clip_distance", 2992 restriction: crate::device::FeatureRestriction::NotSupported, 2993 }); 2994 } 2995 } else { 2996 } 2997 if self.shader_core_builtins { 2998 if !supported.shader_core_builtins { 2999 return Err(crate::device::FeatureRestrictionError { 3000 feature: "shader_core_builtins", 3001 restriction: crate::device::FeatureRestriction::NotSupported, 3002 }); 3003 } 3004 } else { 3005 } 3006 if self.shader_cull_distance { 3007 if !supported.shader_cull_distance { 3008 return Err(crate::device::FeatureRestrictionError { 3009 feature: "shader_cull_distance", 3010 restriction: crate::device::FeatureRestriction::NotSupported, 3011 }); 3012 } 3013 } else { 3014 } 3015 if self.shader_demote_to_helper_invocation { 3016 if !supported.shader_demote_to_helper_invocation { 3017 return Err(crate::device::FeatureRestrictionError { 3018 feature: "shader_demote_to_helper_invocation", 3019 restriction: crate::device::FeatureRestriction::NotSupported, 3020 }); 3021 } 3022 } else { 3023 } 3024 if self.shader_device_clock { 3025 if !supported.shader_device_clock { 3026 return Err(crate::device::FeatureRestrictionError { 3027 feature: "shader_device_clock", 3028 restriction: crate::device::FeatureRestriction::NotSupported, 3029 }); 3030 } 3031 } else { 3032 } 3033 if self.shader_draw_parameters { 3034 if !supported.shader_draw_parameters { 3035 return Err(crate::device::FeatureRestrictionError { 3036 feature: "shader_draw_parameters", 3037 restriction: crate::device::FeatureRestriction::NotSupported, 3038 }); 3039 } 3040 } else { 3041 if extensions.khr_shader_draw_parameters && api_version >= crate::Version::V1_2 { 3042 return Err(crate::device::FeatureRestrictionError { 3043 feature: "shader_draw_parameters", 3044 restriction: crate::device::FeatureRestriction::RequiredByExtension( 3045 "khr_shader_draw_parameters", 3046 ), 3047 }); 3048 } 3049 } 3050 if self.shader_early_and_late_fragment_tests { 3051 if !supported.shader_early_and_late_fragment_tests { 3052 return Err(crate::device::FeatureRestrictionError { 3053 feature: "shader_early_and_late_fragment_tests", 3054 restriction: crate::device::FeatureRestriction::NotSupported, 3055 }); 3056 } 3057 } else { 3058 } 3059 if self.shader_float16 { 3060 if !supported.shader_float16 { 3061 return Err(crate::device::FeatureRestrictionError { 3062 feature: "shader_float16", 3063 restriction: crate::device::FeatureRestriction::NotSupported, 3064 }); 3065 } 3066 } else { 3067 } 3068 if self.shader_float64 { 3069 if !supported.shader_float64 { 3070 return Err(crate::device::FeatureRestrictionError { 3071 feature: "shader_float64", 3072 restriction: crate::device::FeatureRestriction::NotSupported, 3073 }); 3074 } 3075 } else { 3076 } 3077 if self.shader_image_float32_atomic_add { 3078 if !supported.shader_image_float32_atomic_add { 3079 return Err(crate::device::FeatureRestrictionError { 3080 feature: "shader_image_float32_atomic_add", 3081 restriction: crate::device::FeatureRestriction::NotSupported, 3082 }); 3083 } 3084 } else { 3085 } 3086 if self.shader_image_float32_atomic_min_max { 3087 if !supported.shader_image_float32_atomic_min_max { 3088 return Err(crate::device::FeatureRestrictionError { 3089 feature: "shader_image_float32_atomic_min_max", 3090 restriction: crate::device::FeatureRestriction::NotSupported, 3091 }); 3092 } 3093 } else { 3094 } 3095 if self.shader_image_float32_atomics { 3096 if !supported.shader_image_float32_atomics { 3097 return Err(crate::device::FeatureRestrictionError { 3098 feature: "shader_image_float32_atomics", 3099 restriction: crate::device::FeatureRestriction::NotSupported, 3100 }); 3101 } 3102 } else { 3103 } 3104 if self.shader_image_gather_extended { 3105 if !supported.shader_image_gather_extended { 3106 return Err(crate::device::FeatureRestrictionError { 3107 feature: "shader_image_gather_extended", 3108 restriction: crate::device::FeatureRestriction::NotSupported, 3109 }); 3110 } 3111 } else { 3112 } 3113 if self.shader_image_int64_atomics { 3114 if !supported.shader_image_int64_atomics { 3115 return Err(crate::device::FeatureRestrictionError { 3116 feature: "shader_image_int64_atomics", 3117 restriction: crate::device::FeatureRestriction::NotSupported, 3118 }); 3119 } 3120 } else { 3121 } 3122 if self.shader_input_attachment_array_dynamic_indexing { 3123 if !supported.shader_input_attachment_array_dynamic_indexing { 3124 return Err(crate::device::FeatureRestrictionError { 3125 feature: "shader_input_attachment_array_dynamic_indexing", 3126 restriction: crate::device::FeatureRestriction::NotSupported, 3127 }); 3128 } 3129 } else { 3130 } 3131 if self.shader_input_attachment_array_non_uniform_indexing { 3132 if !supported.shader_input_attachment_array_non_uniform_indexing { 3133 return Err(crate::device::FeatureRestrictionError { 3134 feature: "shader_input_attachment_array_non_uniform_indexing", 3135 restriction: crate::device::FeatureRestriction::NotSupported, 3136 }); 3137 } 3138 } else { 3139 } 3140 if self.shader_int16 { 3141 if !supported.shader_int16 { 3142 return Err(crate::device::FeatureRestrictionError { 3143 feature: "shader_int16", 3144 restriction: crate::device::FeatureRestriction::NotSupported, 3145 }); 3146 } 3147 } else { 3148 } 3149 if self.shader_int64 { 3150 if !supported.shader_int64 { 3151 return Err(crate::device::FeatureRestrictionError { 3152 feature: "shader_int64", 3153 restriction: crate::device::FeatureRestriction::NotSupported, 3154 }); 3155 } 3156 } else { 3157 } 3158 if self.shader_int8 { 3159 if !supported.shader_int8 { 3160 return Err(crate::device::FeatureRestrictionError { 3161 feature: "shader_int8", 3162 restriction: crate::device::FeatureRestriction::NotSupported, 3163 }); 3164 } 3165 } else { 3166 } 3167 if self.shader_integer_dot_product { 3168 if !supported.shader_integer_dot_product { 3169 return Err(crate::device::FeatureRestrictionError { 3170 feature: "shader_integer_dot_product", 3171 restriction: crate::device::FeatureRestriction::NotSupported, 3172 }); 3173 } 3174 } else { 3175 } 3176 if self.shader_integer_functions2 { 3177 if !supported.shader_integer_functions2 { 3178 return Err(crate::device::FeatureRestrictionError { 3179 feature: "shader_integer_functions2", 3180 restriction: crate::device::FeatureRestriction::NotSupported, 3181 }); 3182 } 3183 } else { 3184 } 3185 if self.shader_module_identifier { 3186 if !supported.shader_module_identifier { 3187 return Err(crate::device::FeatureRestrictionError { 3188 feature: "shader_module_identifier", 3189 restriction: crate::device::FeatureRestriction::NotSupported, 3190 }); 3191 } 3192 } else { 3193 } 3194 if self.shader_output_layer { 3195 if !supported.shader_output_layer { 3196 return Err(crate::device::FeatureRestrictionError { 3197 feature: "shader_output_layer", 3198 restriction: crate::device::FeatureRestriction::NotSupported, 3199 }); 3200 } 3201 } else { 3202 if extensions.ext_shader_viewport_index_layer && api_version >= crate::Version::V1_2 { 3203 return Err(crate::device::FeatureRestrictionError { 3204 feature: "shader_output_layer", 3205 restriction: crate::device::FeatureRestriction::RequiredByExtension( 3206 "ext_shader_viewport_index_layer", 3207 ), 3208 }); 3209 } 3210 } 3211 if self.shader_output_viewport_index { 3212 if !supported.shader_output_viewport_index { 3213 return Err(crate::device::FeatureRestrictionError { 3214 feature: "shader_output_viewport_index", 3215 restriction: crate::device::FeatureRestriction::NotSupported, 3216 }); 3217 } 3218 } else { 3219 if extensions.ext_shader_viewport_index_layer && api_version >= crate::Version::V1_2 { 3220 return Err(crate::device::FeatureRestrictionError { 3221 feature: "shader_output_viewport_index", 3222 restriction: crate::device::FeatureRestriction::RequiredByExtension( 3223 "ext_shader_viewport_index_layer", 3224 ), 3225 }); 3226 } 3227 } 3228 if self.shader_resource_min_lod { 3229 if !supported.shader_resource_min_lod { 3230 return Err(crate::device::FeatureRestrictionError { 3231 feature: "shader_resource_min_lod", 3232 restriction: crate::device::FeatureRestriction::NotSupported, 3233 }); 3234 } 3235 } else { 3236 } 3237 if self.shader_resource_residency { 3238 if !supported.shader_resource_residency { 3239 return Err(crate::device::FeatureRestrictionError { 3240 feature: "shader_resource_residency", 3241 restriction: crate::device::FeatureRestriction::NotSupported, 3242 }); 3243 } 3244 } else { 3245 } 3246 if self.shader_sample_rate_interpolation_functions { 3247 if !supported.shader_sample_rate_interpolation_functions { 3248 return Err(crate::device::FeatureRestrictionError { 3249 feature: "shader_sample_rate_interpolation_functions", 3250 restriction: crate::device::FeatureRestriction::NotSupported, 3251 }); 3252 } 3253 } else { 3254 } 3255 if self.shader_sampled_image_array_dynamic_indexing { 3256 if !supported.shader_sampled_image_array_dynamic_indexing { 3257 return Err(crate::device::FeatureRestrictionError { 3258 feature: "shader_sampled_image_array_dynamic_indexing", 3259 restriction: crate::device::FeatureRestriction::NotSupported, 3260 }); 3261 } 3262 } else { 3263 } 3264 if self.shader_sampled_image_array_non_uniform_indexing { 3265 if !supported.shader_sampled_image_array_non_uniform_indexing { 3266 return Err(crate::device::FeatureRestrictionError { 3267 feature: "shader_sampled_image_array_non_uniform_indexing", 3268 restriction: crate::device::FeatureRestriction::NotSupported, 3269 }); 3270 } 3271 } else { 3272 } 3273 if self.shader_shared_float16_atomic_add { 3274 if !supported.shader_shared_float16_atomic_add { 3275 return Err(crate::device::FeatureRestrictionError { 3276 feature: "shader_shared_float16_atomic_add", 3277 restriction: crate::device::FeatureRestriction::NotSupported, 3278 }); 3279 } 3280 } else { 3281 } 3282 if self.shader_shared_float16_atomic_min_max { 3283 if !supported.shader_shared_float16_atomic_min_max { 3284 return Err(crate::device::FeatureRestrictionError { 3285 feature: "shader_shared_float16_atomic_min_max", 3286 restriction: crate::device::FeatureRestriction::NotSupported, 3287 }); 3288 } 3289 } else { 3290 } 3291 if self.shader_shared_float16_atomics { 3292 if !supported.shader_shared_float16_atomics { 3293 return Err(crate::device::FeatureRestrictionError { 3294 feature: "shader_shared_float16_atomics", 3295 restriction: crate::device::FeatureRestriction::NotSupported, 3296 }); 3297 } 3298 } else { 3299 } 3300 if self.shader_shared_float32_atomic_add { 3301 if !supported.shader_shared_float32_atomic_add { 3302 return Err(crate::device::FeatureRestrictionError { 3303 feature: "shader_shared_float32_atomic_add", 3304 restriction: crate::device::FeatureRestriction::NotSupported, 3305 }); 3306 } 3307 } else { 3308 } 3309 if self.shader_shared_float32_atomic_min_max { 3310 if !supported.shader_shared_float32_atomic_min_max { 3311 return Err(crate::device::FeatureRestrictionError { 3312 feature: "shader_shared_float32_atomic_min_max", 3313 restriction: crate::device::FeatureRestriction::NotSupported, 3314 }); 3315 } 3316 } else { 3317 } 3318 if self.shader_shared_float32_atomics { 3319 if !supported.shader_shared_float32_atomics { 3320 return Err(crate::device::FeatureRestrictionError { 3321 feature: "shader_shared_float32_atomics", 3322 restriction: crate::device::FeatureRestriction::NotSupported, 3323 }); 3324 } 3325 } else { 3326 } 3327 if self.shader_shared_float64_atomic_add { 3328 if !supported.shader_shared_float64_atomic_add { 3329 return Err(crate::device::FeatureRestrictionError { 3330 feature: "shader_shared_float64_atomic_add", 3331 restriction: crate::device::FeatureRestriction::NotSupported, 3332 }); 3333 } 3334 } else { 3335 } 3336 if self.shader_shared_float64_atomic_min_max { 3337 if !supported.shader_shared_float64_atomic_min_max { 3338 return Err(crate::device::FeatureRestrictionError { 3339 feature: "shader_shared_float64_atomic_min_max", 3340 restriction: crate::device::FeatureRestriction::NotSupported, 3341 }); 3342 } 3343 } else { 3344 } 3345 if self.shader_shared_float64_atomics { 3346 if !supported.shader_shared_float64_atomics { 3347 return Err(crate::device::FeatureRestrictionError { 3348 feature: "shader_shared_float64_atomics", 3349 restriction: crate::device::FeatureRestriction::NotSupported, 3350 }); 3351 } 3352 } else { 3353 } 3354 if self.shader_shared_int64_atomics { 3355 if !supported.shader_shared_int64_atomics { 3356 return Err(crate::device::FeatureRestrictionError { 3357 feature: "shader_shared_int64_atomics", 3358 restriction: crate::device::FeatureRestriction::NotSupported, 3359 }); 3360 } 3361 } else { 3362 } 3363 if self.shader_sm_builtins { 3364 if !supported.shader_sm_builtins { 3365 return Err(crate::device::FeatureRestrictionError { 3366 feature: "shader_sm_builtins", 3367 restriction: crate::device::FeatureRestriction::NotSupported, 3368 }); 3369 } 3370 } else { 3371 } 3372 if self.shader_storage_buffer_array_dynamic_indexing { 3373 if !supported.shader_storage_buffer_array_dynamic_indexing { 3374 return Err(crate::device::FeatureRestrictionError { 3375 feature: "shader_storage_buffer_array_dynamic_indexing", 3376 restriction: crate::device::FeatureRestriction::NotSupported, 3377 }); 3378 } 3379 } else { 3380 } 3381 if self.shader_storage_buffer_array_non_uniform_indexing { 3382 if !supported.shader_storage_buffer_array_non_uniform_indexing { 3383 return Err(crate::device::FeatureRestrictionError { 3384 feature: "shader_storage_buffer_array_non_uniform_indexing", 3385 restriction: crate::device::FeatureRestriction::NotSupported, 3386 }); 3387 } 3388 } else { 3389 } 3390 if self.shader_storage_image_array_dynamic_indexing { 3391 if !supported.shader_storage_image_array_dynamic_indexing { 3392 return Err(crate::device::FeatureRestrictionError { 3393 feature: "shader_storage_image_array_dynamic_indexing", 3394 restriction: crate::device::FeatureRestriction::NotSupported, 3395 }); 3396 } 3397 } else { 3398 } 3399 if self.shader_storage_image_array_non_uniform_indexing { 3400 if !supported.shader_storage_image_array_non_uniform_indexing { 3401 return Err(crate::device::FeatureRestrictionError { 3402 feature: "shader_storage_image_array_non_uniform_indexing", 3403 restriction: crate::device::FeatureRestriction::NotSupported, 3404 }); 3405 } 3406 } else { 3407 } 3408 if self.shader_storage_image_extended_formats { 3409 if !supported.shader_storage_image_extended_formats { 3410 return Err(crate::device::FeatureRestrictionError { 3411 feature: "shader_storage_image_extended_formats", 3412 restriction: crate::device::FeatureRestriction::NotSupported, 3413 }); 3414 } 3415 } else { 3416 } 3417 if self.shader_storage_image_multisample { 3418 if !supported.shader_storage_image_multisample { 3419 return Err(crate::device::FeatureRestrictionError { 3420 feature: "shader_storage_image_multisample", 3421 restriction: crate::device::FeatureRestriction::NotSupported, 3422 }); 3423 } 3424 } else { 3425 } 3426 if self.shader_storage_image_read_without_format { 3427 if !supported.shader_storage_image_read_without_format { 3428 return Err(crate::device::FeatureRestrictionError { 3429 feature: "shader_storage_image_read_without_format", 3430 restriction: crate::device::FeatureRestriction::NotSupported, 3431 }); 3432 } 3433 } else { 3434 } 3435 if self.shader_storage_image_write_without_format { 3436 if !supported.shader_storage_image_write_without_format { 3437 return Err(crate::device::FeatureRestrictionError { 3438 feature: "shader_storage_image_write_without_format", 3439 restriction: crate::device::FeatureRestriction::NotSupported, 3440 }); 3441 } 3442 } else { 3443 } 3444 if self.shader_storage_texel_buffer_array_dynamic_indexing { 3445 if !supported.shader_storage_texel_buffer_array_dynamic_indexing { 3446 return Err(crate::device::FeatureRestrictionError { 3447 feature: "shader_storage_texel_buffer_array_dynamic_indexing", 3448 restriction: crate::device::FeatureRestriction::NotSupported, 3449 }); 3450 } 3451 } else { 3452 } 3453 if self.shader_storage_texel_buffer_array_non_uniform_indexing { 3454 if !supported.shader_storage_texel_buffer_array_non_uniform_indexing { 3455 return Err(crate::device::FeatureRestrictionError { 3456 feature: "shader_storage_texel_buffer_array_non_uniform_indexing", 3457 restriction: crate::device::FeatureRestriction::NotSupported, 3458 }); 3459 } 3460 } else { 3461 } 3462 if self.shader_subgroup_clock { 3463 if !supported.shader_subgroup_clock { 3464 return Err(crate::device::FeatureRestrictionError { 3465 feature: "shader_subgroup_clock", 3466 restriction: crate::device::FeatureRestriction::NotSupported, 3467 }); 3468 } 3469 } else { 3470 } 3471 if self.shader_subgroup_extended_types { 3472 if !supported.shader_subgroup_extended_types { 3473 return Err(crate::device::FeatureRestrictionError { 3474 feature: "shader_subgroup_extended_types", 3475 restriction: crate::device::FeatureRestriction::NotSupported, 3476 }); 3477 } 3478 } else { 3479 } 3480 if self.shader_subgroup_uniform_control_flow { 3481 if !supported.shader_subgroup_uniform_control_flow { 3482 return Err(crate::device::FeatureRestrictionError { 3483 feature: "shader_subgroup_uniform_control_flow", 3484 restriction: crate::device::FeatureRestriction::NotSupported, 3485 }); 3486 } 3487 } else { 3488 } 3489 if self.shader_terminate_invocation { 3490 if !supported.shader_terminate_invocation { 3491 return Err(crate::device::FeatureRestrictionError { 3492 feature: "shader_terminate_invocation", 3493 restriction: crate::device::FeatureRestriction::NotSupported, 3494 }); 3495 } 3496 } else { 3497 } 3498 if self.shader_tessellation_and_geometry_point_size { 3499 if !supported.shader_tessellation_and_geometry_point_size { 3500 return Err(crate::device::FeatureRestrictionError { 3501 feature: "shader_tessellation_and_geometry_point_size", 3502 restriction: crate::device::FeatureRestriction::NotSupported, 3503 }); 3504 } 3505 } else { 3506 } 3507 if self.shader_uniform_buffer_array_dynamic_indexing { 3508 if !supported.shader_uniform_buffer_array_dynamic_indexing { 3509 return Err(crate::device::FeatureRestrictionError { 3510 feature: "shader_uniform_buffer_array_dynamic_indexing", 3511 restriction: crate::device::FeatureRestriction::NotSupported, 3512 }); 3513 } 3514 } else { 3515 } 3516 if self.shader_uniform_buffer_array_non_uniform_indexing { 3517 if !supported.shader_uniform_buffer_array_non_uniform_indexing { 3518 return Err(crate::device::FeatureRestrictionError { 3519 feature: "shader_uniform_buffer_array_non_uniform_indexing", 3520 restriction: crate::device::FeatureRestriction::NotSupported, 3521 }); 3522 } 3523 } else { 3524 } 3525 if self.shader_uniform_texel_buffer_array_dynamic_indexing { 3526 if !supported.shader_uniform_texel_buffer_array_dynamic_indexing { 3527 return Err(crate::device::FeatureRestrictionError { 3528 feature: "shader_uniform_texel_buffer_array_dynamic_indexing", 3529 restriction: crate::device::FeatureRestriction::NotSupported, 3530 }); 3531 } 3532 } else { 3533 } 3534 if self.shader_uniform_texel_buffer_array_non_uniform_indexing { 3535 if !supported.shader_uniform_texel_buffer_array_non_uniform_indexing { 3536 return Err(crate::device::FeatureRestrictionError { 3537 feature: "shader_uniform_texel_buffer_array_non_uniform_indexing", 3538 restriction: crate::device::FeatureRestriction::NotSupported, 3539 }); 3540 } 3541 } else { 3542 } 3543 if self.shader_zero_initialize_workgroup_memory { 3544 if !supported.shader_zero_initialize_workgroup_memory { 3545 return Err(crate::device::FeatureRestrictionError { 3546 feature: "shader_zero_initialize_workgroup_memory", 3547 restriction: crate::device::FeatureRestriction::NotSupported, 3548 }); 3549 } 3550 } else { 3551 } 3552 if self.shading_rate_coarse_sample_order { 3553 if !supported.shading_rate_coarse_sample_order { 3554 return Err(crate::device::FeatureRestrictionError { 3555 feature: "shading_rate_coarse_sample_order", 3556 restriction: crate::device::FeatureRestriction::NotSupported, 3557 }); 3558 } 3559 } else { 3560 } 3561 if self.shading_rate_image { 3562 if !supported.shading_rate_image { 3563 return Err(crate::device::FeatureRestrictionError { 3564 feature: "shading_rate_image", 3565 restriction: crate::device::FeatureRestriction::NotSupported, 3566 }); 3567 } 3568 if self.pipeline_fragment_shading_rate { 3569 return Err(crate::device::FeatureRestrictionError { 3570 feature: "shading_rate_image", 3571 restriction: crate::device::FeatureRestriction::ConflictsFeature( 3572 "pipeline_fragment_shading_rate", 3573 ), 3574 }); 3575 } 3576 if self.primitive_fragment_shading_rate { 3577 return Err(crate::device::FeatureRestrictionError { 3578 feature: "shading_rate_image", 3579 restriction: crate::device::FeatureRestriction::ConflictsFeature( 3580 "primitive_fragment_shading_rate", 3581 ), 3582 }); 3583 } 3584 if self.attachment_fragment_shading_rate { 3585 return Err(crate::device::FeatureRestrictionError { 3586 feature: "shading_rate_image", 3587 restriction: crate::device::FeatureRestriction::ConflictsFeature( 3588 "attachment_fragment_shading_rate", 3589 ), 3590 }); 3591 } 3592 } else { 3593 } 3594 if self.smooth_lines { 3595 if !supported.smooth_lines { 3596 return Err(crate::device::FeatureRestrictionError { 3597 feature: "smooth_lines", 3598 restriction: crate::device::FeatureRestriction::NotSupported, 3599 }); 3600 } 3601 } else { 3602 } 3603 if self.sparse_binding { 3604 if !supported.sparse_binding { 3605 return Err(crate::device::FeatureRestrictionError { 3606 feature: "sparse_binding", 3607 restriction: crate::device::FeatureRestriction::NotSupported, 3608 }); 3609 } 3610 } else { 3611 } 3612 if self.sparse_image_float32_atomic_add { 3613 if !supported.sparse_image_float32_atomic_add { 3614 return Err(crate::device::FeatureRestrictionError { 3615 feature: "sparse_image_float32_atomic_add", 3616 restriction: crate::device::FeatureRestriction::NotSupported, 3617 }); 3618 } 3619 if !self.shader_image_float32_atomic_add { 3620 return Err(crate::device::FeatureRestrictionError { 3621 feature: "sparse_image_float32_atomic_add", 3622 restriction: crate::device::FeatureRestriction::RequiresFeature( 3623 "shader_image_float32_atomic_add", 3624 ), 3625 }); 3626 } 3627 } else { 3628 } 3629 if self.sparse_image_float32_atomic_min_max { 3630 if !supported.sparse_image_float32_atomic_min_max { 3631 return Err(crate::device::FeatureRestrictionError { 3632 feature: "sparse_image_float32_atomic_min_max", 3633 restriction: crate::device::FeatureRestriction::NotSupported, 3634 }); 3635 } 3636 if !self.shader_image_float32_atomic_min_max { 3637 return Err(crate::device::FeatureRestrictionError { 3638 feature: "sparse_image_float32_atomic_min_max", 3639 restriction: crate::device::FeatureRestriction::RequiresFeature( 3640 "shader_image_float32_atomic_min_max", 3641 ), 3642 }); 3643 } 3644 } else { 3645 } 3646 if self.sparse_image_float32_atomics { 3647 if !supported.sparse_image_float32_atomics { 3648 return Err(crate::device::FeatureRestrictionError { 3649 feature: "sparse_image_float32_atomics", 3650 restriction: crate::device::FeatureRestriction::NotSupported, 3651 }); 3652 } 3653 if !self.shader_image_float32_atomics { 3654 return Err(crate::device::FeatureRestrictionError { 3655 feature: "sparse_image_float32_atomics", 3656 restriction: crate::device::FeatureRestriction::RequiresFeature( 3657 "shader_image_float32_atomics", 3658 ), 3659 }); 3660 } 3661 } else { 3662 } 3663 if self.sparse_image_int64_atomics { 3664 if !supported.sparse_image_int64_atomics { 3665 return Err(crate::device::FeatureRestrictionError { 3666 feature: "sparse_image_int64_atomics", 3667 restriction: crate::device::FeatureRestriction::NotSupported, 3668 }); 3669 } 3670 if !self.shader_image_int64_atomics { 3671 return Err(crate::device::FeatureRestrictionError { 3672 feature: "sparse_image_int64_atomics", 3673 restriction: crate::device::FeatureRestriction::RequiresFeature( 3674 "shader_image_int64_atomics", 3675 ), 3676 }); 3677 } 3678 } else { 3679 } 3680 if self.sparse_residency16_samples { 3681 if !supported.sparse_residency16_samples { 3682 return Err(crate::device::FeatureRestrictionError { 3683 feature: "sparse_residency16_samples", 3684 restriction: crate::device::FeatureRestriction::NotSupported, 3685 }); 3686 } 3687 } else { 3688 } 3689 if self.sparse_residency2_samples { 3690 if !supported.sparse_residency2_samples { 3691 return Err(crate::device::FeatureRestrictionError { 3692 feature: "sparse_residency2_samples", 3693 restriction: crate::device::FeatureRestriction::NotSupported, 3694 }); 3695 } 3696 } else { 3697 } 3698 if self.sparse_residency4_samples { 3699 if !supported.sparse_residency4_samples { 3700 return Err(crate::device::FeatureRestrictionError { 3701 feature: "sparse_residency4_samples", 3702 restriction: crate::device::FeatureRestriction::NotSupported, 3703 }); 3704 } 3705 } else { 3706 } 3707 if self.sparse_residency8_samples { 3708 if !supported.sparse_residency8_samples { 3709 return Err(crate::device::FeatureRestrictionError { 3710 feature: "sparse_residency8_samples", 3711 restriction: crate::device::FeatureRestriction::NotSupported, 3712 }); 3713 } 3714 } else { 3715 } 3716 if self.sparse_residency_aliased { 3717 if !supported.sparse_residency_aliased { 3718 return Err(crate::device::FeatureRestrictionError { 3719 feature: "sparse_residency_aliased", 3720 restriction: crate::device::FeatureRestriction::NotSupported, 3721 }); 3722 } 3723 } else { 3724 } 3725 if self.sparse_residency_buffer { 3726 if !supported.sparse_residency_buffer { 3727 return Err(crate::device::FeatureRestrictionError { 3728 feature: "sparse_residency_buffer", 3729 restriction: crate::device::FeatureRestriction::NotSupported, 3730 }); 3731 } 3732 } else { 3733 } 3734 if self.sparse_residency_image2_d { 3735 if !supported.sparse_residency_image2_d { 3736 return Err(crate::device::FeatureRestrictionError { 3737 feature: "sparse_residency_image2_d", 3738 restriction: crate::device::FeatureRestriction::NotSupported, 3739 }); 3740 } 3741 } else { 3742 } 3743 if self.sparse_residency_image3_d { 3744 if !supported.sparse_residency_image3_d { 3745 return Err(crate::device::FeatureRestrictionError { 3746 feature: "sparse_residency_image3_d", 3747 restriction: crate::device::FeatureRestriction::NotSupported, 3748 }); 3749 } 3750 } else { 3751 } 3752 if self.stippled_bresenham_lines { 3753 if !supported.stippled_bresenham_lines { 3754 return Err(crate::device::FeatureRestrictionError { 3755 feature: "stippled_bresenham_lines", 3756 restriction: crate::device::FeatureRestriction::NotSupported, 3757 }); 3758 } 3759 } else { 3760 } 3761 if self.stippled_rectangular_lines { 3762 if !supported.stippled_rectangular_lines { 3763 return Err(crate::device::FeatureRestrictionError { 3764 feature: "stippled_rectangular_lines", 3765 restriction: crate::device::FeatureRestriction::NotSupported, 3766 }); 3767 } 3768 } else { 3769 } 3770 if self.stippled_smooth_lines { 3771 if !supported.stippled_smooth_lines { 3772 return Err(crate::device::FeatureRestrictionError { 3773 feature: "stippled_smooth_lines", 3774 restriction: crate::device::FeatureRestriction::NotSupported, 3775 }); 3776 } 3777 } else { 3778 } 3779 if self.storage_buffer16_bit_access { 3780 if !supported.storage_buffer16_bit_access { 3781 return Err(crate::device::FeatureRestrictionError { 3782 feature: "storage_buffer16_bit_access", 3783 restriction: crate::device::FeatureRestriction::NotSupported, 3784 }); 3785 } 3786 } else { 3787 } 3788 if self.storage_buffer8_bit_access { 3789 if !supported.storage_buffer8_bit_access { 3790 return Err(crate::device::FeatureRestrictionError { 3791 feature: "storage_buffer8_bit_access", 3792 restriction: crate::device::FeatureRestriction::NotSupported, 3793 }); 3794 } 3795 } else { 3796 } 3797 if self.storage_input_output16 { 3798 if !supported.storage_input_output16 { 3799 return Err(crate::device::FeatureRestrictionError { 3800 feature: "storage_input_output16", 3801 restriction: crate::device::FeatureRestriction::NotSupported, 3802 }); 3803 } 3804 } else { 3805 } 3806 if self.storage_push_constant16 { 3807 if !supported.storage_push_constant16 { 3808 return Err(crate::device::FeatureRestrictionError { 3809 feature: "storage_push_constant16", 3810 restriction: crate::device::FeatureRestriction::NotSupported, 3811 }); 3812 } 3813 } else { 3814 } 3815 if self.storage_push_constant8 { 3816 if !supported.storage_push_constant8 { 3817 return Err(crate::device::FeatureRestrictionError { 3818 feature: "storage_push_constant8", 3819 restriction: crate::device::FeatureRestriction::NotSupported, 3820 }); 3821 } 3822 } else { 3823 } 3824 if self.subgroup_broadcast_dynamic_id { 3825 if !supported.subgroup_broadcast_dynamic_id { 3826 return Err(crate::device::FeatureRestrictionError { 3827 feature: "subgroup_broadcast_dynamic_id", 3828 restriction: crate::device::FeatureRestriction::NotSupported, 3829 }); 3830 } 3831 } else { 3832 } 3833 if self.subgroup_size_control { 3834 if !supported.subgroup_size_control { 3835 return Err(crate::device::FeatureRestrictionError { 3836 feature: "subgroup_size_control", 3837 restriction: crate::device::FeatureRestriction::NotSupported, 3838 }); 3839 } 3840 } else { 3841 } 3842 if self.subpass_merge_feedback { 3843 if !supported.subpass_merge_feedback { 3844 return Err(crate::device::FeatureRestrictionError { 3845 feature: "subpass_merge_feedback", 3846 restriction: crate::device::FeatureRestriction::NotSupported, 3847 }); 3848 } 3849 } else { 3850 } 3851 if self.subpass_shading { 3852 if !supported.subpass_shading { 3853 return Err(crate::device::FeatureRestrictionError { 3854 feature: "subpass_shading", 3855 restriction: crate::device::FeatureRestriction::NotSupported, 3856 }); 3857 } 3858 } else { 3859 } 3860 if self.supersample_fragment_shading_rates { 3861 if !supported.supersample_fragment_shading_rates { 3862 return Err(crate::device::FeatureRestrictionError { 3863 feature: "supersample_fragment_shading_rates", 3864 restriction: crate::device::FeatureRestriction::NotSupported, 3865 }); 3866 } 3867 } else { 3868 } 3869 if self.swapchain_maintenance1 { 3870 if !supported.swapchain_maintenance1 { 3871 return Err(crate::device::FeatureRestrictionError { 3872 feature: "swapchain_maintenance1", 3873 restriction: crate::device::FeatureRestriction::NotSupported, 3874 }); 3875 } 3876 } else { 3877 } 3878 if self.synchronization2 { 3879 if !supported.synchronization2 { 3880 return Err(crate::device::FeatureRestrictionError { 3881 feature: "synchronization2", 3882 restriction: crate::device::FeatureRestriction::NotSupported, 3883 }); 3884 } 3885 } else { 3886 } 3887 if self.task_shader { 3888 if !supported.task_shader { 3889 return Err(crate::device::FeatureRestrictionError { 3890 feature: "task_shader", 3891 restriction: crate::device::FeatureRestriction::NotSupported, 3892 }); 3893 } 3894 } else { 3895 } 3896 if self.tessellation_isolines { 3897 if !supported.tessellation_isolines { 3898 return Err(crate::device::FeatureRestrictionError { 3899 feature: "tessellation_isolines", 3900 restriction: crate::device::FeatureRestriction::NotSupported, 3901 }); 3902 } 3903 } else { 3904 } 3905 if self.tessellation_point_mode { 3906 if !supported.tessellation_point_mode { 3907 return Err(crate::device::FeatureRestrictionError { 3908 feature: "tessellation_point_mode", 3909 restriction: crate::device::FeatureRestriction::NotSupported, 3910 }); 3911 } 3912 } else { 3913 } 3914 if self.tessellation_shader { 3915 if !supported.tessellation_shader { 3916 return Err(crate::device::FeatureRestrictionError { 3917 feature: "tessellation_shader", 3918 restriction: crate::device::FeatureRestriction::NotSupported, 3919 }); 3920 } 3921 } else { 3922 } 3923 if self.texel_buffer_alignment { 3924 if !supported.texel_buffer_alignment { 3925 return Err(crate::device::FeatureRestrictionError { 3926 feature: "texel_buffer_alignment", 3927 restriction: crate::device::FeatureRestriction::NotSupported, 3928 }); 3929 } 3930 } else { 3931 } 3932 if self.texture_block_match { 3933 if !supported.texture_block_match { 3934 return Err(crate::device::FeatureRestrictionError { 3935 feature: "texture_block_match", 3936 restriction: crate::device::FeatureRestriction::NotSupported, 3937 }); 3938 } 3939 } else { 3940 } 3941 if self.texture_box_filter { 3942 if !supported.texture_box_filter { 3943 return Err(crate::device::FeatureRestrictionError { 3944 feature: "texture_box_filter", 3945 restriction: crate::device::FeatureRestriction::NotSupported, 3946 }); 3947 } 3948 } else { 3949 } 3950 if self.texture_compression_astc_hdr { 3951 if !supported.texture_compression_astc_hdr { 3952 return Err(crate::device::FeatureRestrictionError { 3953 feature: "texture_compression_astc_hdr", 3954 restriction: crate::device::FeatureRestriction::NotSupported, 3955 }); 3956 } 3957 } else { 3958 } 3959 if self.texture_compression_astc_ldr { 3960 if !supported.texture_compression_astc_ldr { 3961 return Err(crate::device::FeatureRestrictionError { 3962 feature: "texture_compression_astc_ldr", 3963 restriction: crate::device::FeatureRestriction::NotSupported, 3964 }); 3965 } 3966 } else { 3967 } 3968 if self.texture_compression_bc { 3969 if !supported.texture_compression_bc { 3970 return Err(crate::device::FeatureRestrictionError { 3971 feature: "texture_compression_bc", 3972 restriction: crate::device::FeatureRestriction::NotSupported, 3973 }); 3974 } 3975 } else { 3976 } 3977 if self.texture_compression_etc2 { 3978 if !supported.texture_compression_etc2 { 3979 return Err(crate::device::FeatureRestrictionError { 3980 feature: "texture_compression_etc2", 3981 restriction: crate::device::FeatureRestriction::NotSupported, 3982 }); 3983 } 3984 } else { 3985 } 3986 if self.texture_sample_weighted { 3987 if !supported.texture_sample_weighted { 3988 return Err(crate::device::FeatureRestrictionError { 3989 feature: "texture_sample_weighted", 3990 restriction: crate::device::FeatureRestriction::NotSupported, 3991 }); 3992 } 3993 } else { 3994 } 3995 if self.tile_properties { 3996 if !supported.tile_properties { 3997 return Err(crate::device::FeatureRestrictionError { 3998 feature: "tile_properties", 3999 restriction: crate::device::FeatureRestriction::NotSupported, 4000 }); 4001 } 4002 } else { 4003 } 4004 if self.timeline_semaphore { 4005 if !supported.timeline_semaphore { 4006 return Err(crate::device::FeatureRestrictionError { 4007 feature: "timeline_semaphore", 4008 restriction: crate::device::FeatureRestriction::NotSupported, 4009 }); 4010 } 4011 } else { 4012 } 4013 if self.transform_feedback { 4014 if !supported.transform_feedback { 4015 return Err(crate::device::FeatureRestrictionError { 4016 feature: "transform_feedback", 4017 restriction: crate::device::FeatureRestriction::NotSupported, 4018 }); 4019 } 4020 } else { 4021 } 4022 if self.transform_feedback_preserves_provoking_vertex { 4023 if !supported.transform_feedback_preserves_provoking_vertex { 4024 return Err(crate::device::FeatureRestrictionError { 4025 feature: "transform_feedback_preserves_provoking_vertex", 4026 restriction: crate::device::FeatureRestriction::NotSupported, 4027 }); 4028 } 4029 } else { 4030 } 4031 if self.triangle_fans { 4032 if !supported.triangle_fans { 4033 return Err(crate::device::FeatureRestrictionError { 4034 feature: "triangle_fans", 4035 restriction: crate::device::FeatureRestriction::NotSupported, 4036 }); 4037 } 4038 } else { 4039 } 4040 if self.uniform_and_storage_buffer16_bit_access { 4041 if !supported.uniform_and_storage_buffer16_bit_access { 4042 return Err(crate::device::FeatureRestrictionError { 4043 feature: "uniform_and_storage_buffer16_bit_access", 4044 restriction: crate::device::FeatureRestriction::NotSupported, 4045 }); 4046 } 4047 } else { 4048 } 4049 if self.uniform_and_storage_buffer8_bit_access { 4050 if !supported.uniform_and_storage_buffer8_bit_access { 4051 return Err(crate::device::FeatureRestrictionError { 4052 feature: "uniform_and_storage_buffer8_bit_access", 4053 restriction: crate::device::FeatureRestriction::NotSupported, 4054 }); 4055 } 4056 } else { 4057 } 4058 if self.uniform_buffer_standard_layout { 4059 if !supported.uniform_buffer_standard_layout { 4060 return Err(crate::device::FeatureRestrictionError { 4061 feature: "uniform_buffer_standard_layout", 4062 restriction: crate::device::FeatureRestriction::NotSupported, 4063 }); 4064 } 4065 } else { 4066 } 4067 if self.variable_multisample_rate { 4068 if !supported.variable_multisample_rate { 4069 return Err(crate::device::FeatureRestrictionError { 4070 feature: "variable_multisample_rate", 4071 restriction: crate::device::FeatureRestriction::NotSupported, 4072 }); 4073 } 4074 } else { 4075 } 4076 if self.variable_pointers { 4077 if !supported.variable_pointers { 4078 return Err(crate::device::FeatureRestrictionError { 4079 feature: "variable_pointers", 4080 restriction: crate::device::FeatureRestriction::NotSupported, 4081 }); 4082 } 4083 } else { 4084 } 4085 if self.variable_pointers_storage_buffer { 4086 if !supported.variable_pointers_storage_buffer { 4087 return Err(crate::device::FeatureRestrictionError { 4088 feature: "variable_pointers_storage_buffer", 4089 restriction: crate::device::FeatureRestriction::NotSupported, 4090 }); 4091 } 4092 } else { 4093 } 4094 if self.vertex_attribute_access_beyond_stride { 4095 if !supported.vertex_attribute_access_beyond_stride { 4096 return Err(crate::device::FeatureRestrictionError { 4097 feature: "vertex_attribute_access_beyond_stride", 4098 restriction: crate::device::FeatureRestriction::NotSupported, 4099 }); 4100 } 4101 } else { 4102 } 4103 if self.vertex_attribute_instance_rate_divisor { 4104 if !supported.vertex_attribute_instance_rate_divisor { 4105 return Err(crate::device::FeatureRestrictionError { 4106 feature: "vertex_attribute_instance_rate_divisor", 4107 restriction: crate::device::FeatureRestriction::NotSupported, 4108 }); 4109 } 4110 } else { 4111 } 4112 if self.vertex_attribute_instance_rate_zero_divisor { 4113 if !supported.vertex_attribute_instance_rate_zero_divisor { 4114 return Err(crate::device::FeatureRestrictionError { 4115 feature: "vertex_attribute_instance_rate_zero_divisor", 4116 restriction: crate::device::FeatureRestriction::NotSupported, 4117 }); 4118 } 4119 } else { 4120 } 4121 if self.vertex_input_dynamic_state { 4122 if !supported.vertex_input_dynamic_state { 4123 return Err(crate::device::FeatureRestrictionError { 4124 feature: "vertex_input_dynamic_state", 4125 restriction: crate::device::FeatureRestriction::NotSupported, 4126 }); 4127 } 4128 } else { 4129 } 4130 if self.vertex_pipeline_stores_and_atomics { 4131 if !supported.vertex_pipeline_stores_and_atomics { 4132 return Err(crate::device::FeatureRestrictionError { 4133 feature: "vertex_pipeline_stores_and_atomics", 4134 restriction: crate::device::FeatureRestriction::NotSupported, 4135 }); 4136 } 4137 } else { 4138 } 4139 if self.vulkan_memory_model { 4140 if !supported.vulkan_memory_model { 4141 return Err(crate::device::FeatureRestrictionError { 4142 feature: "vulkan_memory_model", 4143 restriction: crate::device::FeatureRestriction::NotSupported, 4144 }); 4145 } 4146 } else { 4147 } 4148 if self.vulkan_memory_model_availability_visibility_chains { 4149 if !supported.vulkan_memory_model_availability_visibility_chains { 4150 return Err(crate::device::FeatureRestrictionError { 4151 feature: "vulkan_memory_model_availability_visibility_chains", 4152 restriction: crate::device::FeatureRestriction::NotSupported, 4153 }); 4154 } 4155 } else { 4156 } 4157 if self.vulkan_memory_model_device_scope { 4158 if !supported.vulkan_memory_model_device_scope { 4159 return Err(crate::device::FeatureRestrictionError { 4160 feature: "vulkan_memory_model_device_scope", 4161 restriction: crate::device::FeatureRestriction::NotSupported, 4162 }); 4163 } 4164 } else { 4165 } 4166 if self.wide_lines { 4167 if !supported.wide_lines { 4168 return Err(crate::device::FeatureRestrictionError { 4169 feature: "wide_lines", 4170 restriction: crate::device::FeatureRestriction::NotSupported, 4171 }); 4172 } 4173 } else { 4174 } 4175 if self.workgroup_memory_explicit_layout { 4176 if !supported.workgroup_memory_explicit_layout { 4177 return Err(crate::device::FeatureRestrictionError { 4178 feature: "workgroup_memory_explicit_layout", 4179 restriction: crate::device::FeatureRestriction::NotSupported, 4180 }); 4181 } 4182 } else { 4183 } 4184 if self.workgroup_memory_explicit_layout16_bit_access { 4185 if !supported.workgroup_memory_explicit_layout16_bit_access { 4186 return Err(crate::device::FeatureRestrictionError { 4187 feature: "workgroup_memory_explicit_layout16_bit_access", 4188 restriction: crate::device::FeatureRestriction::NotSupported, 4189 }); 4190 } 4191 } else { 4192 } 4193 if self.workgroup_memory_explicit_layout8_bit_access { 4194 if !supported.workgroup_memory_explicit_layout8_bit_access { 4195 return Err(crate::device::FeatureRestrictionError { 4196 feature: "workgroup_memory_explicit_layout8_bit_access", 4197 restriction: crate::device::FeatureRestriction::NotSupported, 4198 }); 4199 } 4200 } else { 4201 } 4202 if self.workgroup_memory_explicit_layout_scalar_block_layout { 4203 if !supported.workgroup_memory_explicit_layout_scalar_block_layout { 4204 return Err(crate::device::FeatureRestrictionError { 4205 feature: "workgroup_memory_explicit_layout_scalar_block_layout", 4206 restriction: crate::device::FeatureRestriction::NotSupported, 4207 }); 4208 } 4209 } else { 4210 } 4211 if self.ycbcr2plane444_formats { 4212 if !supported.ycbcr2plane444_formats { 4213 return Err(crate::device::FeatureRestrictionError { 4214 feature: "ycbcr2plane444_formats", 4215 restriction: crate::device::FeatureRestriction::NotSupported, 4216 }); 4217 } 4218 } else { 4219 } 4220 if self.ycbcr_image_arrays { 4221 if !supported.ycbcr_image_arrays { 4222 return Err(crate::device::FeatureRestrictionError { 4223 feature: "ycbcr_image_arrays", 4224 restriction: crate::device::FeatureRestriction::NotSupported, 4225 }); 4226 } 4227 } else { 4228 } 4229 Ok(()) 4230 } 4231 #[doc = r" Returns an `Features` object with none of the members set."] 4232 #[inline] empty() -> Self4233 pub const fn empty() -> Self { 4234 Self { 4235 acceleration_structure: false, 4236 acceleration_structure_capture_replay: false, 4237 acceleration_structure_host_commands: false, 4238 acceleration_structure_indirect_build: false, 4239 advanced_blend_coherent_operations: false, 4240 alpha_to_one: false, 4241 amigo_profiling: false, 4242 attachment_feedback_loop_layout: false, 4243 attachment_fragment_shading_rate: false, 4244 border_color_swizzle: false, 4245 border_color_swizzle_from_image: false, 4246 bresenham_lines: false, 4247 buffer_device_address: false, 4248 buffer_device_address_capture_replay: false, 4249 buffer_device_address_multi_device: false, 4250 color_write_enable: false, 4251 compute_derivative_group_linear: false, 4252 compute_derivative_group_quads: false, 4253 compute_full_subgroups: false, 4254 conditional_rendering: false, 4255 constant_alpha_color_blend_factors: false, 4256 cooperative_matrix: false, 4257 cooperative_matrix_robust_buffer_access: false, 4258 corner_sampled_image: false, 4259 coverage_reduction_mode: false, 4260 custom_border_color_without_format: false, 4261 custom_border_colors: false, 4262 decode_mode_shared_exponent: false, 4263 dedicated_allocation_image_aliasing: false, 4264 depth_bias_clamp: false, 4265 depth_bounds: false, 4266 depth_clamp: false, 4267 depth_clamp_zero_one: false, 4268 depth_clip_control: false, 4269 depth_clip_enable: false, 4270 descriptor_binding_acceleration_structure_update_after_bind: false, 4271 descriptor_binding_inline_uniform_block_update_after_bind: false, 4272 descriptor_binding_partially_bound: false, 4273 descriptor_binding_sampled_image_update_after_bind: false, 4274 descriptor_binding_storage_buffer_update_after_bind: false, 4275 descriptor_binding_storage_image_update_after_bind: false, 4276 descriptor_binding_storage_texel_buffer_update_after_bind: false, 4277 descriptor_binding_uniform_buffer_update_after_bind: false, 4278 descriptor_binding_uniform_texel_buffer_update_after_bind: false, 4279 descriptor_binding_update_unused_while_pending: false, 4280 descriptor_binding_variable_descriptor_count: false, 4281 descriptor_buffer: false, 4282 descriptor_buffer_capture_replay: false, 4283 descriptor_buffer_image_layout_ignored: false, 4284 descriptor_buffer_push_descriptors: false, 4285 descriptor_indexing: false, 4286 descriptor_set_host_mapping: false, 4287 device_coherent_memory: false, 4288 device_fault: false, 4289 device_fault_vendor_binary: false, 4290 device_generated_commands: false, 4291 device_memory_report: false, 4292 diagnostics_config: false, 4293 draw_indirect_count: false, 4294 draw_indirect_first_instance: false, 4295 dual_src_blend: false, 4296 dynamic_rendering: false, 4297 events: false, 4298 exclusive_scissor: false, 4299 extended_dynamic_state: false, 4300 extended_dynamic_state2: false, 4301 extended_dynamic_state2_logic_op: false, 4302 extended_dynamic_state2_patch_control_points: false, 4303 extended_dynamic_state3_alpha_to_coverage_enable: false, 4304 extended_dynamic_state3_alpha_to_one_enable: false, 4305 extended_dynamic_state3_color_blend_advanced: false, 4306 extended_dynamic_state3_color_blend_enable: false, 4307 extended_dynamic_state3_color_blend_equation: false, 4308 extended_dynamic_state3_color_write_mask: false, 4309 extended_dynamic_state3_conservative_rasterization_mode: false, 4310 extended_dynamic_state3_coverage_modulation_mode: false, 4311 extended_dynamic_state3_coverage_modulation_table: false, 4312 extended_dynamic_state3_coverage_modulation_table_enable: false, 4313 extended_dynamic_state3_coverage_reduction_mode: false, 4314 extended_dynamic_state3_coverage_to_color_enable: false, 4315 extended_dynamic_state3_coverage_to_color_location: false, 4316 extended_dynamic_state3_depth_clamp_enable: false, 4317 extended_dynamic_state3_depth_clip_enable: false, 4318 extended_dynamic_state3_depth_clip_negative_one_to_one: false, 4319 extended_dynamic_state3_extra_primitive_overestimation_size: false, 4320 extended_dynamic_state3_line_rasterization_mode: false, 4321 extended_dynamic_state3_line_stipple_enable: false, 4322 extended_dynamic_state3_logic_op_enable: false, 4323 extended_dynamic_state3_polygon_mode: false, 4324 extended_dynamic_state3_provoking_vertex_mode: false, 4325 extended_dynamic_state3_rasterization_samples: false, 4326 extended_dynamic_state3_rasterization_stream: false, 4327 extended_dynamic_state3_representative_fragment_test_enable: false, 4328 extended_dynamic_state3_sample_locations_enable: false, 4329 extended_dynamic_state3_sample_mask: false, 4330 extended_dynamic_state3_shading_rate_image_enable: false, 4331 extended_dynamic_state3_tessellation_domain_origin: false, 4332 extended_dynamic_state3_viewport_swizzle: false, 4333 extended_dynamic_state3_viewport_w_scaling_enable: false, 4334 external_memory_rdma: false, 4335 fill_mode_non_solid: false, 4336 format_a4b4g4r4: false, 4337 format_a4r4g4b4: false, 4338 format_rgba10x6_without_y_cb_cr_sampler: false, 4339 fragment_density_map: false, 4340 fragment_density_map_deferred: false, 4341 fragment_density_map_dynamic: false, 4342 fragment_density_map_non_subsampled_images: false, 4343 fragment_density_map_offset: false, 4344 fragment_shader_barycentric: false, 4345 fragment_shader_pixel_interlock: false, 4346 fragment_shader_sample_interlock: false, 4347 fragment_shader_shading_rate_interlock: false, 4348 fragment_shading_rate_enums: false, 4349 fragment_stores_and_atomics: false, 4350 full_draw_index_uint32: false, 4351 geometry_shader: false, 4352 geometry_streams: false, 4353 global_priority_query: false, 4354 graphics_pipeline_library: false, 4355 host_query_reset: false, 4356 image2_d_view_of3_d: false, 4357 image_compression_control: false, 4358 image_compression_control_swapchain: false, 4359 image_cube_array: false, 4360 image_footprint: false, 4361 image_view2_d_on3_d_image: false, 4362 image_view_format_reinterpretation: false, 4363 image_view_format_swizzle: false, 4364 imageless_framebuffer: false, 4365 independent_blend: false, 4366 index_type_uint8: false, 4367 indirect_copy: false, 4368 inherited_conditional_rendering: false, 4369 inherited_queries: false, 4370 inherited_viewport_scissor2_d: false, 4371 inline_uniform_block: false, 4372 invocation_mask: false, 4373 large_points: false, 4374 legacy_dithering: false, 4375 linear_color_attachment: false, 4376 logic_op: false, 4377 maintenance4: false, 4378 memory_decompression: false, 4379 memory_priority: false, 4380 mesh_shader: false, 4381 mesh_shader_queries: false, 4382 micromap: false, 4383 micromap_capture_replay: false, 4384 micromap_host_commands: false, 4385 min_lod: false, 4386 multi_draw: false, 4387 multi_draw_indirect: false, 4388 multi_viewport: false, 4389 multisample_array_image: false, 4390 multisampled_render_to_single_sampled: false, 4391 multiview: false, 4392 multiview_geometry_shader: false, 4393 multiview_mesh_shader: false, 4394 multiview_per_view_viewports: false, 4395 multiview_tessellation_shader: false, 4396 mutable_comparison_samplers: false, 4397 mutable_descriptor_type: false, 4398 no_invocation_fragment_shading_rates: false, 4399 non_seamless_cube_map: false, 4400 null_descriptor: false, 4401 occlusion_query_precise: false, 4402 optical_flow: false, 4403 pageable_device_local_memory: false, 4404 performance_counter_multiple_query_pools: false, 4405 performance_counter_query_pools: false, 4406 pipeline_creation_cache_control: false, 4407 pipeline_executable_info: false, 4408 pipeline_fragment_shading_rate: false, 4409 pipeline_properties_identifier: false, 4410 pipeline_protected_access: false, 4411 pipeline_robustness: false, 4412 pipeline_statistics_query: false, 4413 point_polygons: false, 4414 present_barrier: false, 4415 present_id: false, 4416 present_wait: false, 4417 primitive_fragment_shading_rate: false, 4418 primitive_fragment_shading_rate_mesh_shader: false, 4419 primitive_topology_list_restart: false, 4420 primitive_topology_patch_list_restart: false, 4421 primitives_generated_query: false, 4422 primitives_generated_query_with_non_zero_streams: false, 4423 primitives_generated_query_with_rasterizer_discard: false, 4424 private_data: false, 4425 protected_memory: false, 4426 provoking_vertex_last: false, 4427 rasterization_order_color_attachment_access: false, 4428 rasterization_order_depth_attachment_access: false, 4429 rasterization_order_stencil_attachment_access: false, 4430 ray_query: false, 4431 ray_tracing_invocation_reorder: false, 4432 ray_tracing_maintenance1: false, 4433 ray_tracing_motion_blur: false, 4434 ray_tracing_motion_blur_pipeline_trace_rays_indirect: false, 4435 ray_tracing_pipeline: false, 4436 ray_tracing_pipeline_shader_group_handle_capture_replay: false, 4437 ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: false, 4438 ray_tracing_pipeline_trace_rays_indirect: false, 4439 ray_tracing_pipeline_trace_rays_indirect2: false, 4440 ray_traversal_primitive_culling: false, 4441 rectangular_lines: false, 4442 report_address_binding: false, 4443 representative_fragment_test: false, 4444 robust_buffer_access: false, 4445 robust_buffer_access2: false, 4446 robust_image_access: false, 4447 robust_image_access2: false, 4448 runtime_descriptor_array: false, 4449 sample_rate_shading: false, 4450 sampler2_d_view_of3_d: false, 4451 sampler_anisotropy: false, 4452 sampler_filter_minmax: false, 4453 sampler_mip_lod_bias: false, 4454 sampler_mirror_clamp_to_edge: false, 4455 sampler_ycbcr_conversion: false, 4456 scalar_block_layout: false, 4457 separate_depth_stencil_layouts: false, 4458 separate_stencil_mask_ref: false, 4459 shader_buffer_float16_atomic_add: false, 4460 shader_buffer_float16_atomic_min_max: false, 4461 shader_buffer_float16_atomics: false, 4462 shader_buffer_float32_atomic_add: false, 4463 shader_buffer_float32_atomic_min_max: false, 4464 shader_buffer_float32_atomics: false, 4465 shader_buffer_float64_atomic_add: false, 4466 shader_buffer_float64_atomic_min_max: false, 4467 shader_buffer_float64_atomics: false, 4468 shader_buffer_int64_atomics: false, 4469 shader_clip_distance: false, 4470 shader_core_builtins: false, 4471 shader_cull_distance: false, 4472 shader_demote_to_helper_invocation: false, 4473 shader_device_clock: false, 4474 shader_draw_parameters: false, 4475 shader_early_and_late_fragment_tests: false, 4476 shader_float16: false, 4477 shader_float64: false, 4478 shader_image_float32_atomic_add: false, 4479 shader_image_float32_atomic_min_max: false, 4480 shader_image_float32_atomics: false, 4481 shader_image_gather_extended: false, 4482 shader_image_int64_atomics: false, 4483 shader_input_attachment_array_dynamic_indexing: false, 4484 shader_input_attachment_array_non_uniform_indexing: false, 4485 shader_int16: false, 4486 shader_int64: false, 4487 shader_int8: false, 4488 shader_integer_dot_product: false, 4489 shader_integer_functions2: false, 4490 shader_module_identifier: false, 4491 shader_output_layer: false, 4492 shader_output_viewport_index: false, 4493 shader_resource_min_lod: false, 4494 shader_resource_residency: false, 4495 shader_sample_rate_interpolation_functions: false, 4496 shader_sampled_image_array_dynamic_indexing: false, 4497 shader_sampled_image_array_non_uniform_indexing: false, 4498 shader_shared_float16_atomic_add: false, 4499 shader_shared_float16_atomic_min_max: false, 4500 shader_shared_float16_atomics: false, 4501 shader_shared_float32_atomic_add: false, 4502 shader_shared_float32_atomic_min_max: false, 4503 shader_shared_float32_atomics: false, 4504 shader_shared_float64_atomic_add: false, 4505 shader_shared_float64_atomic_min_max: false, 4506 shader_shared_float64_atomics: false, 4507 shader_shared_int64_atomics: false, 4508 shader_sm_builtins: false, 4509 shader_storage_buffer_array_dynamic_indexing: false, 4510 shader_storage_buffer_array_non_uniform_indexing: false, 4511 shader_storage_image_array_dynamic_indexing: false, 4512 shader_storage_image_array_non_uniform_indexing: false, 4513 shader_storage_image_extended_formats: false, 4514 shader_storage_image_multisample: false, 4515 shader_storage_image_read_without_format: false, 4516 shader_storage_image_write_without_format: false, 4517 shader_storage_texel_buffer_array_dynamic_indexing: false, 4518 shader_storage_texel_buffer_array_non_uniform_indexing: false, 4519 shader_subgroup_clock: false, 4520 shader_subgroup_extended_types: false, 4521 shader_subgroup_uniform_control_flow: false, 4522 shader_terminate_invocation: false, 4523 shader_tessellation_and_geometry_point_size: false, 4524 shader_uniform_buffer_array_dynamic_indexing: false, 4525 shader_uniform_buffer_array_non_uniform_indexing: false, 4526 shader_uniform_texel_buffer_array_dynamic_indexing: false, 4527 shader_uniform_texel_buffer_array_non_uniform_indexing: false, 4528 shader_zero_initialize_workgroup_memory: false, 4529 shading_rate_coarse_sample_order: false, 4530 shading_rate_image: false, 4531 smooth_lines: false, 4532 sparse_binding: false, 4533 sparse_image_float32_atomic_add: false, 4534 sparse_image_float32_atomic_min_max: false, 4535 sparse_image_float32_atomics: false, 4536 sparse_image_int64_atomics: false, 4537 sparse_residency16_samples: false, 4538 sparse_residency2_samples: false, 4539 sparse_residency4_samples: false, 4540 sparse_residency8_samples: false, 4541 sparse_residency_aliased: false, 4542 sparse_residency_buffer: false, 4543 sparse_residency_image2_d: false, 4544 sparse_residency_image3_d: false, 4545 stippled_bresenham_lines: false, 4546 stippled_rectangular_lines: false, 4547 stippled_smooth_lines: false, 4548 storage_buffer16_bit_access: false, 4549 storage_buffer8_bit_access: false, 4550 storage_input_output16: false, 4551 storage_push_constant16: false, 4552 storage_push_constant8: false, 4553 subgroup_broadcast_dynamic_id: false, 4554 subgroup_size_control: false, 4555 subpass_merge_feedback: false, 4556 subpass_shading: false, 4557 supersample_fragment_shading_rates: false, 4558 swapchain_maintenance1: false, 4559 synchronization2: false, 4560 task_shader: false, 4561 tessellation_isolines: false, 4562 tessellation_point_mode: false, 4563 tessellation_shader: false, 4564 texel_buffer_alignment: false, 4565 texture_block_match: false, 4566 texture_box_filter: false, 4567 texture_compression_astc_hdr: false, 4568 texture_compression_astc_ldr: false, 4569 texture_compression_bc: false, 4570 texture_compression_etc2: false, 4571 texture_sample_weighted: false, 4572 tile_properties: false, 4573 timeline_semaphore: false, 4574 transform_feedback: false, 4575 transform_feedback_preserves_provoking_vertex: false, 4576 triangle_fans: false, 4577 uniform_and_storage_buffer16_bit_access: false, 4578 uniform_and_storage_buffer8_bit_access: false, 4579 uniform_buffer_standard_layout: false, 4580 variable_multisample_rate: false, 4581 variable_pointers: false, 4582 variable_pointers_storage_buffer: false, 4583 vertex_attribute_access_beyond_stride: false, 4584 vertex_attribute_instance_rate_divisor: false, 4585 vertex_attribute_instance_rate_zero_divisor: false, 4586 vertex_input_dynamic_state: false, 4587 vertex_pipeline_stores_and_atomics: false, 4588 vulkan_memory_model: false, 4589 vulkan_memory_model_availability_visibility_chains: false, 4590 vulkan_memory_model_device_scope: false, 4591 wide_lines: false, 4592 workgroup_memory_explicit_layout: false, 4593 workgroup_memory_explicit_layout16_bit_access: false, 4594 workgroup_memory_explicit_layout8_bit_access: false, 4595 workgroup_memory_explicit_layout_scalar_block_layout: false, 4596 ycbcr2plane444_formats: false, 4597 ycbcr_image_arrays: false, 4598 _ne: crate::NonExhaustive(()), 4599 } 4600 } 4601 #[doc = r" Returns an `Features` object with none of the members set."] 4602 #[deprecated(since = "0.31.0", note = "Use `empty` instead.")] 4603 #[inline] none() -> Self4604 pub const fn none() -> Self { 4605 Self::empty() 4606 } 4607 #[doc = r" Returns a `Features` object with all of the members set."] 4608 #[cfg(test)] all() -> Features4609 pub(crate) const fn all() -> Features { 4610 Features { 4611 acceleration_structure: true, 4612 acceleration_structure_capture_replay: true, 4613 acceleration_structure_host_commands: true, 4614 acceleration_structure_indirect_build: true, 4615 advanced_blend_coherent_operations: true, 4616 alpha_to_one: true, 4617 amigo_profiling: true, 4618 attachment_feedback_loop_layout: true, 4619 attachment_fragment_shading_rate: true, 4620 border_color_swizzle: true, 4621 border_color_swizzle_from_image: true, 4622 bresenham_lines: true, 4623 buffer_device_address: true, 4624 buffer_device_address_capture_replay: true, 4625 buffer_device_address_multi_device: true, 4626 color_write_enable: true, 4627 compute_derivative_group_linear: true, 4628 compute_derivative_group_quads: true, 4629 compute_full_subgroups: true, 4630 conditional_rendering: true, 4631 constant_alpha_color_blend_factors: true, 4632 cooperative_matrix: true, 4633 cooperative_matrix_robust_buffer_access: true, 4634 corner_sampled_image: true, 4635 coverage_reduction_mode: true, 4636 custom_border_color_without_format: true, 4637 custom_border_colors: true, 4638 decode_mode_shared_exponent: true, 4639 dedicated_allocation_image_aliasing: true, 4640 depth_bias_clamp: true, 4641 depth_bounds: true, 4642 depth_clamp: true, 4643 depth_clamp_zero_one: true, 4644 depth_clip_control: true, 4645 depth_clip_enable: true, 4646 descriptor_binding_acceleration_structure_update_after_bind: true, 4647 descriptor_binding_inline_uniform_block_update_after_bind: true, 4648 descriptor_binding_partially_bound: true, 4649 descriptor_binding_sampled_image_update_after_bind: true, 4650 descriptor_binding_storage_buffer_update_after_bind: true, 4651 descriptor_binding_storage_image_update_after_bind: true, 4652 descriptor_binding_storage_texel_buffer_update_after_bind: true, 4653 descriptor_binding_uniform_buffer_update_after_bind: true, 4654 descriptor_binding_uniform_texel_buffer_update_after_bind: true, 4655 descriptor_binding_update_unused_while_pending: true, 4656 descriptor_binding_variable_descriptor_count: true, 4657 descriptor_buffer: true, 4658 descriptor_buffer_capture_replay: true, 4659 descriptor_buffer_image_layout_ignored: true, 4660 descriptor_buffer_push_descriptors: true, 4661 descriptor_indexing: true, 4662 descriptor_set_host_mapping: true, 4663 device_coherent_memory: true, 4664 device_fault: true, 4665 device_fault_vendor_binary: true, 4666 device_generated_commands: true, 4667 device_memory_report: true, 4668 diagnostics_config: true, 4669 draw_indirect_count: true, 4670 draw_indirect_first_instance: true, 4671 dual_src_blend: true, 4672 dynamic_rendering: true, 4673 events: true, 4674 exclusive_scissor: true, 4675 extended_dynamic_state: true, 4676 extended_dynamic_state2: true, 4677 extended_dynamic_state2_logic_op: true, 4678 extended_dynamic_state2_patch_control_points: true, 4679 extended_dynamic_state3_alpha_to_coverage_enable: true, 4680 extended_dynamic_state3_alpha_to_one_enable: true, 4681 extended_dynamic_state3_color_blend_advanced: true, 4682 extended_dynamic_state3_color_blend_enable: true, 4683 extended_dynamic_state3_color_blend_equation: true, 4684 extended_dynamic_state3_color_write_mask: true, 4685 extended_dynamic_state3_conservative_rasterization_mode: true, 4686 extended_dynamic_state3_coverage_modulation_mode: true, 4687 extended_dynamic_state3_coverage_modulation_table: true, 4688 extended_dynamic_state3_coverage_modulation_table_enable: true, 4689 extended_dynamic_state3_coverage_reduction_mode: true, 4690 extended_dynamic_state3_coverage_to_color_enable: true, 4691 extended_dynamic_state3_coverage_to_color_location: true, 4692 extended_dynamic_state3_depth_clamp_enable: true, 4693 extended_dynamic_state3_depth_clip_enable: true, 4694 extended_dynamic_state3_depth_clip_negative_one_to_one: true, 4695 extended_dynamic_state3_extra_primitive_overestimation_size: true, 4696 extended_dynamic_state3_line_rasterization_mode: true, 4697 extended_dynamic_state3_line_stipple_enable: true, 4698 extended_dynamic_state3_logic_op_enable: true, 4699 extended_dynamic_state3_polygon_mode: true, 4700 extended_dynamic_state3_provoking_vertex_mode: true, 4701 extended_dynamic_state3_rasterization_samples: true, 4702 extended_dynamic_state3_rasterization_stream: true, 4703 extended_dynamic_state3_representative_fragment_test_enable: true, 4704 extended_dynamic_state3_sample_locations_enable: true, 4705 extended_dynamic_state3_sample_mask: true, 4706 extended_dynamic_state3_shading_rate_image_enable: true, 4707 extended_dynamic_state3_tessellation_domain_origin: true, 4708 extended_dynamic_state3_viewport_swizzle: true, 4709 extended_dynamic_state3_viewport_w_scaling_enable: true, 4710 external_memory_rdma: true, 4711 fill_mode_non_solid: true, 4712 format_a4b4g4r4: true, 4713 format_a4r4g4b4: true, 4714 format_rgba10x6_without_y_cb_cr_sampler: true, 4715 fragment_density_map: true, 4716 fragment_density_map_deferred: true, 4717 fragment_density_map_dynamic: true, 4718 fragment_density_map_non_subsampled_images: true, 4719 fragment_density_map_offset: true, 4720 fragment_shader_barycentric: true, 4721 fragment_shader_pixel_interlock: true, 4722 fragment_shader_sample_interlock: true, 4723 fragment_shader_shading_rate_interlock: true, 4724 fragment_shading_rate_enums: true, 4725 fragment_stores_and_atomics: true, 4726 full_draw_index_uint32: true, 4727 geometry_shader: true, 4728 geometry_streams: true, 4729 global_priority_query: true, 4730 graphics_pipeline_library: true, 4731 host_query_reset: true, 4732 image2_d_view_of3_d: true, 4733 image_compression_control: true, 4734 image_compression_control_swapchain: true, 4735 image_cube_array: true, 4736 image_footprint: true, 4737 image_view2_d_on3_d_image: true, 4738 image_view_format_reinterpretation: true, 4739 image_view_format_swizzle: true, 4740 imageless_framebuffer: true, 4741 independent_blend: true, 4742 index_type_uint8: true, 4743 indirect_copy: true, 4744 inherited_conditional_rendering: true, 4745 inherited_queries: true, 4746 inherited_viewport_scissor2_d: true, 4747 inline_uniform_block: true, 4748 invocation_mask: true, 4749 large_points: true, 4750 legacy_dithering: true, 4751 linear_color_attachment: true, 4752 logic_op: true, 4753 maintenance4: true, 4754 memory_decompression: true, 4755 memory_priority: true, 4756 mesh_shader: true, 4757 mesh_shader_queries: true, 4758 micromap: true, 4759 micromap_capture_replay: true, 4760 micromap_host_commands: true, 4761 min_lod: true, 4762 multi_draw: true, 4763 multi_draw_indirect: true, 4764 multi_viewport: true, 4765 multisample_array_image: true, 4766 multisampled_render_to_single_sampled: true, 4767 multiview: true, 4768 multiview_geometry_shader: true, 4769 multiview_mesh_shader: true, 4770 multiview_per_view_viewports: true, 4771 multiview_tessellation_shader: true, 4772 mutable_comparison_samplers: true, 4773 mutable_descriptor_type: true, 4774 no_invocation_fragment_shading_rates: true, 4775 non_seamless_cube_map: true, 4776 null_descriptor: true, 4777 occlusion_query_precise: true, 4778 optical_flow: true, 4779 pageable_device_local_memory: true, 4780 performance_counter_multiple_query_pools: true, 4781 performance_counter_query_pools: true, 4782 pipeline_creation_cache_control: true, 4783 pipeline_executable_info: true, 4784 pipeline_fragment_shading_rate: true, 4785 pipeline_properties_identifier: true, 4786 pipeline_protected_access: true, 4787 pipeline_robustness: true, 4788 pipeline_statistics_query: true, 4789 point_polygons: true, 4790 present_barrier: true, 4791 present_id: true, 4792 present_wait: true, 4793 primitive_fragment_shading_rate: true, 4794 primitive_fragment_shading_rate_mesh_shader: true, 4795 primitive_topology_list_restart: true, 4796 primitive_topology_patch_list_restart: true, 4797 primitives_generated_query: true, 4798 primitives_generated_query_with_non_zero_streams: true, 4799 primitives_generated_query_with_rasterizer_discard: true, 4800 private_data: true, 4801 protected_memory: true, 4802 provoking_vertex_last: true, 4803 rasterization_order_color_attachment_access: true, 4804 rasterization_order_depth_attachment_access: true, 4805 rasterization_order_stencil_attachment_access: true, 4806 ray_query: true, 4807 ray_tracing_invocation_reorder: true, 4808 ray_tracing_maintenance1: true, 4809 ray_tracing_motion_blur: true, 4810 ray_tracing_motion_blur_pipeline_trace_rays_indirect: true, 4811 ray_tracing_pipeline: true, 4812 ray_tracing_pipeline_shader_group_handle_capture_replay: true, 4813 ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: true, 4814 ray_tracing_pipeline_trace_rays_indirect: true, 4815 ray_tracing_pipeline_trace_rays_indirect2: true, 4816 ray_traversal_primitive_culling: true, 4817 rectangular_lines: true, 4818 report_address_binding: true, 4819 representative_fragment_test: true, 4820 robust_buffer_access: true, 4821 robust_buffer_access2: true, 4822 robust_image_access: true, 4823 robust_image_access2: true, 4824 runtime_descriptor_array: true, 4825 sample_rate_shading: true, 4826 sampler2_d_view_of3_d: true, 4827 sampler_anisotropy: true, 4828 sampler_filter_minmax: true, 4829 sampler_mip_lod_bias: true, 4830 sampler_mirror_clamp_to_edge: true, 4831 sampler_ycbcr_conversion: true, 4832 scalar_block_layout: true, 4833 separate_depth_stencil_layouts: true, 4834 separate_stencil_mask_ref: true, 4835 shader_buffer_float16_atomic_add: true, 4836 shader_buffer_float16_atomic_min_max: true, 4837 shader_buffer_float16_atomics: true, 4838 shader_buffer_float32_atomic_add: true, 4839 shader_buffer_float32_atomic_min_max: true, 4840 shader_buffer_float32_atomics: true, 4841 shader_buffer_float64_atomic_add: true, 4842 shader_buffer_float64_atomic_min_max: true, 4843 shader_buffer_float64_atomics: true, 4844 shader_buffer_int64_atomics: true, 4845 shader_clip_distance: true, 4846 shader_core_builtins: true, 4847 shader_cull_distance: true, 4848 shader_demote_to_helper_invocation: true, 4849 shader_device_clock: true, 4850 shader_draw_parameters: true, 4851 shader_early_and_late_fragment_tests: true, 4852 shader_float16: true, 4853 shader_float64: true, 4854 shader_image_float32_atomic_add: true, 4855 shader_image_float32_atomic_min_max: true, 4856 shader_image_float32_atomics: true, 4857 shader_image_gather_extended: true, 4858 shader_image_int64_atomics: true, 4859 shader_input_attachment_array_dynamic_indexing: true, 4860 shader_input_attachment_array_non_uniform_indexing: true, 4861 shader_int16: true, 4862 shader_int64: true, 4863 shader_int8: true, 4864 shader_integer_dot_product: true, 4865 shader_integer_functions2: true, 4866 shader_module_identifier: true, 4867 shader_output_layer: true, 4868 shader_output_viewport_index: true, 4869 shader_resource_min_lod: true, 4870 shader_resource_residency: true, 4871 shader_sample_rate_interpolation_functions: true, 4872 shader_sampled_image_array_dynamic_indexing: true, 4873 shader_sampled_image_array_non_uniform_indexing: true, 4874 shader_shared_float16_atomic_add: true, 4875 shader_shared_float16_atomic_min_max: true, 4876 shader_shared_float16_atomics: true, 4877 shader_shared_float32_atomic_add: true, 4878 shader_shared_float32_atomic_min_max: true, 4879 shader_shared_float32_atomics: true, 4880 shader_shared_float64_atomic_add: true, 4881 shader_shared_float64_atomic_min_max: true, 4882 shader_shared_float64_atomics: true, 4883 shader_shared_int64_atomics: true, 4884 shader_sm_builtins: true, 4885 shader_storage_buffer_array_dynamic_indexing: true, 4886 shader_storage_buffer_array_non_uniform_indexing: true, 4887 shader_storage_image_array_dynamic_indexing: true, 4888 shader_storage_image_array_non_uniform_indexing: true, 4889 shader_storage_image_extended_formats: true, 4890 shader_storage_image_multisample: true, 4891 shader_storage_image_read_without_format: true, 4892 shader_storage_image_write_without_format: true, 4893 shader_storage_texel_buffer_array_dynamic_indexing: true, 4894 shader_storage_texel_buffer_array_non_uniform_indexing: true, 4895 shader_subgroup_clock: true, 4896 shader_subgroup_extended_types: true, 4897 shader_subgroup_uniform_control_flow: true, 4898 shader_terminate_invocation: true, 4899 shader_tessellation_and_geometry_point_size: true, 4900 shader_uniform_buffer_array_dynamic_indexing: true, 4901 shader_uniform_buffer_array_non_uniform_indexing: true, 4902 shader_uniform_texel_buffer_array_dynamic_indexing: true, 4903 shader_uniform_texel_buffer_array_non_uniform_indexing: true, 4904 shader_zero_initialize_workgroup_memory: true, 4905 shading_rate_coarse_sample_order: true, 4906 shading_rate_image: true, 4907 smooth_lines: true, 4908 sparse_binding: true, 4909 sparse_image_float32_atomic_add: true, 4910 sparse_image_float32_atomic_min_max: true, 4911 sparse_image_float32_atomics: true, 4912 sparse_image_int64_atomics: true, 4913 sparse_residency16_samples: true, 4914 sparse_residency2_samples: true, 4915 sparse_residency4_samples: true, 4916 sparse_residency8_samples: true, 4917 sparse_residency_aliased: true, 4918 sparse_residency_buffer: true, 4919 sparse_residency_image2_d: true, 4920 sparse_residency_image3_d: true, 4921 stippled_bresenham_lines: true, 4922 stippled_rectangular_lines: true, 4923 stippled_smooth_lines: true, 4924 storage_buffer16_bit_access: true, 4925 storage_buffer8_bit_access: true, 4926 storage_input_output16: true, 4927 storage_push_constant16: true, 4928 storage_push_constant8: true, 4929 subgroup_broadcast_dynamic_id: true, 4930 subgroup_size_control: true, 4931 subpass_merge_feedback: true, 4932 subpass_shading: true, 4933 supersample_fragment_shading_rates: true, 4934 swapchain_maintenance1: true, 4935 synchronization2: true, 4936 task_shader: true, 4937 tessellation_isolines: true, 4938 tessellation_point_mode: true, 4939 tessellation_shader: true, 4940 texel_buffer_alignment: true, 4941 texture_block_match: true, 4942 texture_box_filter: true, 4943 texture_compression_astc_hdr: true, 4944 texture_compression_astc_ldr: true, 4945 texture_compression_bc: true, 4946 texture_compression_etc2: true, 4947 texture_sample_weighted: true, 4948 tile_properties: true, 4949 timeline_semaphore: true, 4950 transform_feedback: true, 4951 transform_feedback_preserves_provoking_vertex: true, 4952 triangle_fans: true, 4953 uniform_and_storage_buffer16_bit_access: true, 4954 uniform_and_storage_buffer8_bit_access: true, 4955 uniform_buffer_standard_layout: true, 4956 variable_multisample_rate: true, 4957 variable_pointers: true, 4958 variable_pointers_storage_buffer: true, 4959 vertex_attribute_access_beyond_stride: true, 4960 vertex_attribute_instance_rate_divisor: true, 4961 vertex_attribute_instance_rate_zero_divisor: true, 4962 vertex_input_dynamic_state: true, 4963 vertex_pipeline_stores_and_atomics: true, 4964 vulkan_memory_model: true, 4965 vulkan_memory_model_availability_visibility_chains: true, 4966 vulkan_memory_model_device_scope: true, 4967 wide_lines: true, 4968 workgroup_memory_explicit_layout: true, 4969 workgroup_memory_explicit_layout16_bit_access: true, 4970 workgroup_memory_explicit_layout8_bit_access: true, 4971 workgroup_memory_explicit_layout_scalar_block_layout: true, 4972 ycbcr2plane444_formats: true, 4973 ycbcr_image_arrays: true, 4974 _ne: crate::NonExhaustive(()), 4975 } 4976 } 4977 #[doc = r" Returns whether any members are set in both `self` and `other`."] 4978 #[inline] intersects(&self, other: &Self) -> bool4979 pub const fn intersects(&self, other: &Self) -> bool { 4980 (self.acceleration_structure && other.acceleration_structure) 4981 || (self.acceleration_structure_capture_replay 4982 && other.acceleration_structure_capture_replay) 4983 || (self.acceleration_structure_host_commands 4984 && other.acceleration_structure_host_commands) 4985 || (self.acceleration_structure_indirect_build 4986 && other.acceleration_structure_indirect_build) 4987 || (self.advanced_blend_coherent_operations && other.advanced_blend_coherent_operations) 4988 || (self.alpha_to_one && other.alpha_to_one) 4989 || (self.amigo_profiling && other.amigo_profiling) 4990 || (self.attachment_feedback_loop_layout && other.attachment_feedback_loop_layout) 4991 || (self.attachment_fragment_shading_rate && other.attachment_fragment_shading_rate) 4992 || (self.border_color_swizzle && other.border_color_swizzle) 4993 || (self.border_color_swizzle_from_image && other.border_color_swizzle_from_image) 4994 || (self.bresenham_lines && other.bresenham_lines) 4995 || (self.buffer_device_address && other.buffer_device_address) 4996 || (self.buffer_device_address_capture_replay 4997 && other.buffer_device_address_capture_replay) 4998 || (self.buffer_device_address_multi_device && other.buffer_device_address_multi_device) 4999 || (self.color_write_enable && other.color_write_enable) 5000 || (self.compute_derivative_group_linear && other.compute_derivative_group_linear) 5001 || (self.compute_derivative_group_quads && other.compute_derivative_group_quads) 5002 || (self.compute_full_subgroups && other.compute_full_subgroups) 5003 || (self.conditional_rendering && other.conditional_rendering) 5004 || (self.constant_alpha_color_blend_factors && other.constant_alpha_color_blend_factors) 5005 || (self.cooperative_matrix && other.cooperative_matrix) 5006 || (self.cooperative_matrix_robust_buffer_access 5007 && other.cooperative_matrix_robust_buffer_access) 5008 || (self.corner_sampled_image && other.corner_sampled_image) 5009 || (self.coverage_reduction_mode && other.coverage_reduction_mode) 5010 || (self.custom_border_color_without_format && other.custom_border_color_without_format) 5011 || (self.custom_border_colors && other.custom_border_colors) 5012 || (self.decode_mode_shared_exponent && other.decode_mode_shared_exponent) 5013 || (self.dedicated_allocation_image_aliasing 5014 && other.dedicated_allocation_image_aliasing) 5015 || (self.depth_bias_clamp && other.depth_bias_clamp) 5016 || (self.depth_bounds && other.depth_bounds) 5017 || (self.depth_clamp && other.depth_clamp) 5018 || (self.depth_clamp_zero_one && other.depth_clamp_zero_one) 5019 || (self.depth_clip_control && other.depth_clip_control) 5020 || (self.depth_clip_enable && other.depth_clip_enable) 5021 || (self.descriptor_binding_acceleration_structure_update_after_bind 5022 && other.descriptor_binding_acceleration_structure_update_after_bind) 5023 || (self.descriptor_binding_inline_uniform_block_update_after_bind 5024 && other.descriptor_binding_inline_uniform_block_update_after_bind) 5025 || (self.descriptor_binding_partially_bound && other.descriptor_binding_partially_bound) 5026 || (self.descriptor_binding_sampled_image_update_after_bind 5027 && other.descriptor_binding_sampled_image_update_after_bind) 5028 || (self.descriptor_binding_storage_buffer_update_after_bind 5029 && other.descriptor_binding_storage_buffer_update_after_bind) 5030 || (self.descriptor_binding_storage_image_update_after_bind 5031 && other.descriptor_binding_storage_image_update_after_bind) 5032 || (self.descriptor_binding_storage_texel_buffer_update_after_bind 5033 && other.descriptor_binding_storage_texel_buffer_update_after_bind) 5034 || (self.descriptor_binding_uniform_buffer_update_after_bind 5035 && other.descriptor_binding_uniform_buffer_update_after_bind) 5036 || (self.descriptor_binding_uniform_texel_buffer_update_after_bind 5037 && other.descriptor_binding_uniform_texel_buffer_update_after_bind) 5038 || (self.descriptor_binding_update_unused_while_pending 5039 && other.descriptor_binding_update_unused_while_pending) 5040 || (self.descriptor_binding_variable_descriptor_count 5041 && other.descriptor_binding_variable_descriptor_count) 5042 || (self.descriptor_buffer && other.descriptor_buffer) 5043 || (self.descriptor_buffer_capture_replay && other.descriptor_buffer_capture_replay) 5044 || (self.descriptor_buffer_image_layout_ignored 5045 && other.descriptor_buffer_image_layout_ignored) 5046 || (self.descriptor_buffer_push_descriptors && other.descriptor_buffer_push_descriptors) 5047 || (self.descriptor_indexing && other.descriptor_indexing) 5048 || (self.descriptor_set_host_mapping && other.descriptor_set_host_mapping) 5049 || (self.device_coherent_memory && other.device_coherent_memory) 5050 || (self.device_fault && other.device_fault) 5051 || (self.device_fault_vendor_binary && other.device_fault_vendor_binary) 5052 || (self.device_generated_commands && other.device_generated_commands) 5053 || (self.device_memory_report && other.device_memory_report) 5054 || (self.diagnostics_config && other.diagnostics_config) 5055 || (self.draw_indirect_count && other.draw_indirect_count) 5056 || (self.draw_indirect_first_instance && other.draw_indirect_first_instance) 5057 || (self.dual_src_blend && other.dual_src_blend) 5058 || (self.dynamic_rendering && other.dynamic_rendering) 5059 || (self.events && other.events) 5060 || (self.exclusive_scissor && other.exclusive_scissor) 5061 || (self.extended_dynamic_state && other.extended_dynamic_state) 5062 || (self.extended_dynamic_state2 && other.extended_dynamic_state2) 5063 || (self.extended_dynamic_state2_logic_op && other.extended_dynamic_state2_logic_op) 5064 || (self.extended_dynamic_state2_patch_control_points 5065 && other.extended_dynamic_state2_patch_control_points) 5066 || (self.extended_dynamic_state3_alpha_to_coverage_enable 5067 && other.extended_dynamic_state3_alpha_to_coverage_enable) 5068 || (self.extended_dynamic_state3_alpha_to_one_enable 5069 && other.extended_dynamic_state3_alpha_to_one_enable) 5070 || (self.extended_dynamic_state3_color_blend_advanced 5071 && other.extended_dynamic_state3_color_blend_advanced) 5072 || (self.extended_dynamic_state3_color_blend_enable 5073 && other.extended_dynamic_state3_color_blend_enable) 5074 || (self.extended_dynamic_state3_color_blend_equation 5075 && other.extended_dynamic_state3_color_blend_equation) 5076 || (self.extended_dynamic_state3_color_write_mask 5077 && other.extended_dynamic_state3_color_write_mask) 5078 || (self.extended_dynamic_state3_conservative_rasterization_mode 5079 && other.extended_dynamic_state3_conservative_rasterization_mode) 5080 || (self.extended_dynamic_state3_coverage_modulation_mode 5081 && other.extended_dynamic_state3_coverage_modulation_mode) 5082 || (self.extended_dynamic_state3_coverage_modulation_table 5083 && other.extended_dynamic_state3_coverage_modulation_table) 5084 || (self.extended_dynamic_state3_coverage_modulation_table_enable 5085 && other.extended_dynamic_state3_coverage_modulation_table_enable) 5086 || (self.extended_dynamic_state3_coverage_reduction_mode 5087 && other.extended_dynamic_state3_coverage_reduction_mode) 5088 || (self.extended_dynamic_state3_coverage_to_color_enable 5089 && other.extended_dynamic_state3_coverage_to_color_enable) 5090 || (self.extended_dynamic_state3_coverage_to_color_location 5091 && other.extended_dynamic_state3_coverage_to_color_location) 5092 || (self.extended_dynamic_state3_depth_clamp_enable 5093 && other.extended_dynamic_state3_depth_clamp_enable) 5094 || (self.extended_dynamic_state3_depth_clip_enable 5095 && other.extended_dynamic_state3_depth_clip_enable) 5096 || (self.extended_dynamic_state3_depth_clip_negative_one_to_one 5097 && other.extended_dynamic_state3_depth_clip_negative_one_to_one) 5098 || (self.extended_dynamic_state3_extra_primitive_overestimation_size 5099 && other.extended_dynamic_state3_extra_primitive_overestimation_size) 5100 || (self.extended_dynamic_state3_line_rasterization_mode 5101 && other.extended_dynamic_state3_line_rasterization_mode) 5102 || (self.extended_dynamic_state3_line_stipple_enable 5103 && other.extended_dynamic_state3_line_stipple_enable) 5104 || (self.extended_dynamic_state3_logic_op_enable 5105 && other.extended_dynamic_state3_logic_op_enable) 5106 || (self.extended_dynamic_state3_polygon_mode 5107 && other.extended_dynamic_state3_polygon_mode) 5108 || (self.extended_dynamic_state3_provoking_vertex_mode 5109 && other.extended_dynamic_state3_provoking_vertex_mode) 5110 || (self.extended_dynamic_state3_rasterization_samples 5111 && other.extended_dynamic_state3_rasterization_samples) 5112 || (self.extended_dynamic_state3_rasterization_stream 5113 && other.extended_dynamic_state3_rasterization_stream) 5114 || (self.extended_dynamic_state3_representative_fragment_test_enable 5115 && other.extended_dynamic_state3_representative_fragment_test_enable) 5116 || (self.extended_dynamic_state3_sample_locations_enable 5117 && other.extended_dynamic_state3_sample_locations_enable) 5118 || (self.extended_dynamic_state3_sample_mask 5119 && other.extended_dynamic_state3_sample_mask) 5120 || (self.extended_dynamic_state3_shading_rate_image_enable 5121 && other.extended_dynamic_state3_shading_rate_image_enable) 5122 || (self.extended_dynamic_state3_tessellation_domain_origin 5123 && other.extended_dynamic_state3_tessellation_domain_origin) 5124 || (self.extended_dynamic_state3_viewport_swizzle 5125 && other.extended_dynamic_state3_viewport_swizzle) 5126 || (self.extended_dynamic_state3_viewport_w_scaling_enable 5127 && other.extended_dynamic_state3_viewport_w_scaling_enable) 5128 || (self.external_memory_rdma && other.external_memory_rdma) 5129 || (self.fill_mode_non_solid && other.fill_mode_non_solid) 5130 || (self.format_a4b4g4r4 && other.format_a4b4g4r4) 5131 || (self.format_a4r4g4b4 && other.format_a4r4g4b4) 5132 || (self.format_rgba10x6_without_y_cb_cr_sampler 5133 && other.format_rgba10x6_without_y_cb_cr_sampler) 5134 || (self.fragment_density_map && other.fragment_density_map) 5135 || (self.fragment_density_map_deferred && other.fragment_density_map_deferred) 5136 || (self.fragment_density_map_dynamic && other.fragment_density_map_dynamic) 5137 || (self.fragment_density_map_non_subsampled_images 5138 && other.fragment_density_map_non_subsampled_images) 5139 || (self.fragment_density_map_offset && other.fragment_density_map_offset) 5140 || (self.fragment_shader_barycentric && other.fragment_shader_barycentric) 5141 || (self.fragment_shader_pixel_interlock && other.fragment_shader_pixel_interlock) 5142 || (self.fragment_shader_sample_interlock && other.fragment_shader_sample_interlock) 5143 || (self.fragment_shader_shading_rate_interlock 5144 && other.fragment_shader_shading_rate_interlock) 5145 || (self.fragment_shading_rate_enums && other.fragment_shading_rate_enums) 5146 || (self.fragment_stores_and_atomics && other.fragment_stores_and_atomics) 5147 || (self.full_draw_index_uint32 && other.full_draw_index_uint32) 5148 || (self.geometry_shader && other.geometry_shader) 5149 || (self.geometry_streams && other.geometry_streams) 5150 || (self.global_priority_query && other.global_priority_query) 5151 || (self.graphics_pipeline_library && other.graphics_pipeline_library) 5152 || (self.host_query_reset && other.host_query_reset) 5153 || (self.image2_d_view_of3_d && other.image2_d_view_of3_d) 5154 || (self.image_compression_control && other.image_compression_control) 5155 || (self.image_compression_control_swapchain 5156 && other.image_compression_control_swapchain) 5157 || (self.image_cube_array && other.image_cube_array) 5158 || (self.image_footprint && other.image_footprint) 5159 || (self.image_view2_d_on3_d_image && other.image_view2_d_on3_d_image) 5160 || (self.image_view_format_reinterpretation && other.image_view_format_reinterpretation) 5161 || (self.image_view_format_swizzle && other.image_view_format_swizzle) 5162 || (self.imageless_framebuffer && other.imageless_framebuffer) 5163 || (self.independent_blend && other.independent_blend) 5164 || (self.index_type_uint8 && other.index_type_uint8) 5165 || (self.indirect_copy && other.indirect_copy) 5166 || (self.inherited_conditional_rendering && other.inherited_conditional_rendering) 5167 || (self.inherited_queries && other.inherited_queries) 5168 || (self.inherited_viewport_scissor2_d && other.inherited_viewport_scissor2_d) 5169 || (self.inline_uniform_block && other.inline_uniform_block) 5170 || (self.invocation_mask && other.invocation_mask) 5171 || (self.large_points && other.large_points) 5172 || (self.legacy_dithering && other.legacy_dithering) 5173 || (self.linear_color_attachment && other.linear_color_attachment) 5174 || (self.logic_op && other.logic_op) 5175 || (self.maintenance4 && other.maintenance4) 5176 || (self.memory_decompression && other.memory_decompression) 5177 || (self.memory_priority && other.memory_priority) 5178 || (self.mesh_shader && other.mesh_shader) 5179 || (self.mesh_shader_queries && other.mesh_shader_queries) 5180 || (self.micromap && other.micromap) 5181 || (self.micromap_capture_replay && other.micromap_capture_replay) 5182 || (self.micromap_host_commands && other.micromap_host_commands) 5183 || (self.min_lod && other.min_lod) 5184 || (self.multi_draw && other.multi_draw) 5185 || (self.multi_draw_indirect && other.multi_draw_indirect) 5186 || (self.multi_viewport && other.multi_viewport) 5187 || (self.multisample_array_image && other.multisample_array_image) 5188 || (self.multisampled_render_to_single_sampled 5189 && other.multisampled_render_to_single_sampled) 5190 || (self.multiview && other.multiview) 5191 || (self.multiview_geometry_shader && other.multiview_geometry_shader) 5192 || (self.multiview_mesh_shader && other.multiview_mesh_shader) 5193 || (self.multiview_per_view_viewports && other.multiview_per_view_viewports) 5194 || (self.multiview_tessellation_shader && other.multiview_tessellation_shader) 5195 || (self.mutable_comparison_samplers && other.mutable_comparison_samplers) 5196 || (self.mutable_descriptor_type && other.mutable_descriptor_type) 5197 || (self.no_invocation_fragment_shading_rates 5198 && other.no_invocation_fragment_shading_rates) 5199 || (self.non_seamless_cube_map && other.non_seamless_cube_map) 5200 || (self.null_descriptor && other.null_descriptor) 5201 || (self.occlusion_query_precise && other.occlusion_query_precise) 5202 || (self.optical_flow && other.optical_flow) 5203 || (self.pageable_device_local_memory && other.pageable_device_local_memory) 5204 || (self.performance_counter_multiple_query_pools 5205 && other.performance_counter_multiple_query_pools) 5206 || (self.performance_counter_query_pools && other.performance_counter_query_pools) 5207 || (self.pipeline_creation_cache_control && other.pipeline_creation_cache_control) 5208 || (self.pipeline_executable_info && other.pipeline_executable_info) 5209 || (self.pipeline_fragment_shading_rate && other.pipeline_fragment_shading_rate) 5210 || (self.pipeline_properties_identifier && other.pipeline_properties_identifier) 5211 || (self.pipeline_protected_access && other.pipeline_protected_access) 5212 || (self.pipeline_robustness && other.pipeline_robustness) 5213 || (self.pipeline_statistics_query && other.pipeline_statistics_query) 5214 || (self.point_polygons && other.point_polygons) 5215 || (self.present_barrier && other.present_barrier) 5216 || (self.present_id && other.present_id) 5217 || (self.present_wait && other.present_wait) 5218 || (self.primitive_fragment_shading_rate && other.primitive_fragment_shading_rate) 5219 || (self.primitive_fragment_shading_rate_mesh_shader 5220 && other.primitive_fragment_shading_rate_mesh_shader) 5221 || (self.primitive_topology_list_restart && other.primitive_topology_list_restart) 5222 || (self.primitive_topology_patch_list_restart 5223 && other.primitive_topology_patch_list_restart) 5224 || (self.primitives_generated_query && other.primitives_generated_query) 5225 || (self.primitives_generated_query_with_non_zero_streams 5226 && other.primitives_generated_query_with_non_zero_streams) 5227 || (self.primitives_generated_query_with_rasterizer_discard 5228 && other.primitives_generated_query_with_rasterizer_discard) 5229 || (self.private_data && other.private_data) 5230 || (self.protected_memory && other.protected_memory) 5231 || (self.provoking_vertex_last && other.provoking_vertex_last) 5232 || (self.rasterization_order_color_attachment_access 5233 && other.rasterization_order_color_attachment_access) 5234 || (self.rasterization_order_depth_attachment_access 5235 && other.rasterization_order_depth_attachment_access) 5236 || (self.rasterization_order_stencil_attachment_access 5237 && other.rasterization_order_stencil_attachment_access) 5238 || (self.ray_query && other.ray_query) 5239 || (self.ray_tracing_invocation_reorder && other.ray_tracing_invocation_reorder) 5240 || (self.ray_tracing_maintenance1 && other.ray_tracing_maintenance1) 5241 || (self.ray_tracing_motion_blur && other.ray_tracing_motion_blur) 5242 || (self.ray_tracing_motion_blur_pipeline_trace_rays_indirect 5243 && other.ray_tracing_motion_blur_pipeline_trace_rays_indirect) 5244 || (self.ray_tracing_pipeline && other.ray_tracing_pipeline) 5245 || (self.ray_tracing_pipeline_shader_group_handle_capture_replay 5246 && other.ray_tracing_pipeline_shader_group_handle_capture_replay) 5247 || (self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed 5248 && other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed) 5249 || (self.ray_tracing_pipeline_trace_rays_indirect 5250 && other.ray_tracing_pipeline_trace_rays_indirect) 5251 || (self.ray_tracing_pipeline_trace_rays_indirect2 5252 && other.ray_tracing_pipeline_trace_rays_indirect2) 5253 || (self.ray_traversal_primitive_culling && other.ray_traversal_primitive_culling) 5254 || (self.rectangular_lines && other.rectangular_lines) 5255 || (self.report_address_binding && other.report_address_binding) 5256 || (self.representative_fragment_test && other.representative_fragment_test) 5257 || (self.robust_buffer_access && other.robust_buffer_access) 5258 || (self.robust_buffer_access2 && other.robust_buffer_access2) 5259 || (self.robust_image_access && other.robust_image_access) 5260 || (self.robust_image_access2 && other.robust_image_access2) 5261 || (self.runtime_descriptor_array && other.runtime_descriptor_array) 5262 || (self.sample_rate_shading && other.sample_rate_shading) 5263 || (self.sampler2_d_view_of3_d && other.sampler2_d_view_of3_d) 5264 || (self.sampler_anisotropy && other.sampler_anisotropy) 5265 || (self.sampler_filter_minmax && other.sampler_filter_minmax) 5266 || (self.sampler_mip_lod_bias && other.sampler_mip_lod_bias) 5267 || (self.sampler_mirror_clamp_to_edge && other.sampler_mirror_clamp_to_edge) 5268 || (self.sampler_ycbcr_conversion && other.sampler_ycbcr_conversion) 5269 || (self.scalar_block_layout && other.scalar_block_layout) 5270 || (self.separate_depth_stencil_layouts && other.separate_depth_stencil_layouts) 5271 || (self.separate_stencil_mask_ref && other.separate_stencil_mask_ref) 5272 || (self.shader_buffer_float16_atomic_add && other.shader_buffer_float16_atomic_add) 5273 || (self.shader_buffer_float16_atomic_min_max 5274 && other.shader_buffer_float16_atomic_min_max) 5275 || (self.shader_buffer_float16_atomics && other.shader_buffer_float16_atomics) 5276 || (self.shader_buffer_float32_atomic_add && other.shader_buffer_float32_atomic_add) 5277 || (self.shader_buffer_float32_atomic_min_max 5278 && other.shader_buffer_float32_atomic_min_max) 5279 || (self.shader_buffer_float32_atomics && other.shader_buffer_float32_atomics) 5280 || (self.shader_buffer_float64_atomic_add && other.shader_buffer_float64_atomic_add) 5281 || (self.shader_buffer_float64_atomic_min_max 5282 && other.shader_buffer_float64_atomic_min_max) 5283 || (self.shader_buffer_float64_atomics && other.shader_buffer_float64_atomics) 5284 || (self.shader_buffer_int64_atomics && other.shader_buffer_int64_atomics) 5285 || (self.shader_clip_distance && other.shader_clip_distance) 5286 || (self.shader_core_builtins && other.shader_core_builtins) 5287 || (self.shader_cull_distance && other.shader_cull_distance) 5288 || (self.shader_demote_to_helper_invocation && other.shader_demote_to_helper_invocation) 5289 || (self.shader_device_clock && other.shader_device_clock) 5290 || (self.shader_draw_parameters && other.shader_draw_parameters) 5291 || (self.shader_early_and_late_fragment_tests 5292 && other.shader_early_and_late_fragment_tests) 5293 || (self.shader_float16 && other.shader_float16) 5294 || (self.shader_float64 && other.shader_float64) 5295 || (self.shader_image_float32_atomic_add && other.shader_image_float32_atomic_add) 5296 || (self.shader_image_float32_atomic_min_max 5297 && other.shader_image_float32_atomic_min_max) 5298 || (self.shader_image_float32_atomics && other.shader_image_float32_atomics) 5299 || (self.shader_image_gather_extended && other.shader_image_gather_extended) 5300 || (self.shader_image_int64_atomics && other.shader_image_int64_atomics) 5301 || (self.shader_input_attachment_array_dynamic_indexing 5302 && other.shader_input_attachment_array_dynamic_indexing) 5303 || (self.shader_input_attachment_array_non_uniform_indexing 5304 && other.shader_input_attachment_array_non_uniform_indexing) 5305 || (self.shader_int16 && other.shader_int16) 5306 || (self.shader_int64 && other.shader_int64) 5307 || (self.shader_int8 && other.shader_int8) 5308 || (self.shader_integer_dot_product && other.shader_integer_dot_product) 5309 || (self.shader_integer_functions2 && other.shader_integer_functions2) 5310 || (self.shader_module_identifier && other.shader_module_identifier) 5311 || (self.shader_output_layer && other.shader_output_layer) 5312 || (self.shader_output_viewport_index && other.shader_output_viewport_index) 5313 || (self.shader_resource_min_lod && other.shader_resource_min_lod) 5314 || (self.shader_resource_residency && other.shader_resource_residency) 5315 || (self.shader_sample_rate_interpolation_functions 5316 && other.shader_sample_rate_interpolation_functions) 5317 || (self.shader_sampled_image_array_dynamic_indexing 5318 && other.shader_sampled_image_array_dynamic_indexing) 5319 || (self.shader_sampled_image_array_non_uniform_indexing 5320 && other.shader_sampled_image_array_non_uniform_indexing) 5321 || (self.shader_shared_float16_atomic_add && other.shader_shared_float16_atomic_add) 5322 || (self.shader_shared_float16_atomic_min_max 5323 && other.shader_shared_float16_atomic_min_max) 5324 || (self.shader_shared_float16_atomics && other.shader_shared_float16_atomics) 5325 || (self.shader_shared_float32_atomic_add && other.shader_shared_float32_atomic_add) 5326 || (self.shader_shared_float32_atomic_min_max 5327 && other.shader_shared_float32_atomic_min_max) 5328 || (self.shader_shared_float32_atomics && other.shader_shared_float32_atomics) 5329 || (self.shader_shared_float64_atomic_add && other.shader_shared_float64_atomic_add) 5330 || (self.shader_shared_float64_atomic_min_max 5331 && other.shader_shared_float64_atomic_min_max) 5332 || (self.shader_shared_float64_atomics && other.shader_shared_float64_atomics) 5333 || (self.shader_shared_int64_atomics && other.shader_shared_int64_atomics) 5334 || (self.shader_sm_builtins && other.shader_sm_builtins) 5335 || (self.shader_storage_buffer_array_dynamic_indexing 5336 && other.shader_storage_buffer_array_dynamic_indexing) 5337 || (self.shader_storage_buffer_array_non_uniform_indexing 5338 && other.shader_storage_buffer_array_non_uniform_indexing) 5339 || (self.shader_storage_image_array_dynamic_indexing 5340 && other.shader_storage_image_array_dynamic_indexing) 5341 || (self.shader_storage_image_array_non_uniform_indexing 5342 && other.shader_storage_image_array_non_uniform_indexing) 5343 || (self.shader_storage_image_extended_formats 5344 && other.shader_storage_image_extended_formats) 5345 || (self.shader_storage_image_multisample && other.shader_storage_image_multisample) 5346 || (self.shader_storage_image_read_without_format 5347 && other.shader_storage_image_read_without_format) 5348 || (self.shader_storage_image_write_without_format 5349 && other.shader_storage_image_write_without_format) 5350 || (self.shader_storage_texel_buffer_array_dynamic_indexing 5351 && other.shader_storage_texel_buffer_array_dynamic_indexing) 5352 || (self.shader_storage_texel_buffer_array_non_uniform_indexing 5353 && other.shader_storage_texel_buffer_array_non_uniform_indexing) 5354 || (self.shader_subgroup_clock && other.shader_subgroup_clock) 5355 || (self.shader_subgroup_extended_types && other.shader_subgroup_extended_types) 5356 || (self.shader_subgroup_uniform_control_flow 5357 && other.shader_subgroup_uniform_control_flow) 5358 || (self.shader_terminate_invocation && other.shader_terminate_invocation) 5359 || (self.shader_tessellation_and_geometry_point_size 5360 && other.shader_tessellation_and_geometry_point_size) 5361 || (self.shader_uniform_buffer_array_dynamic_indexing 5362 && other.shader_uniform_buffer_array_dynamic_indexing) 5363 || (self.shader_uniform_buffer_array_non_uniform_indexing 5364 && other.shader_uniform_buffer_array_non_uniform_indexing) 5365 || (self.shader_uniform_texel_buffer_array_dynamic_indexing 5366 && other.shader_uniform_texel_buffer_array_dynamic_indexing) 5367 || (self.shader_uniform_texel_buffer_array_non_uniform_indexing 5368 && other.shader_uniform_texel_buffer_array_non_uniform_indexing) 5369 || (self.shader_zero_initialize_workgroup_memory 5370 && other.shader_zero_initialize_workgroup_memory) 5371 || (self.shading_rate_coarse_sample_order && other.shading_rate_coarse_sample_order) 5372 || (self.shading_rate_image && other.shading_rate_image) 5373 || (self.smooth_lines && other.smooth_lines) 5374 || (self.sparse_binding && other.sparse_binding) 5375 || (self.sparse_image_float32_atomic_add && other.sparse_image_float32_atomic_add) 5376 || (self.sparse_image_float32_atomic_min_max 5377 && other.sparse_image_float32_atomic_min_max) 5378 || (self.sparse_image_float32_atomics && other.sparse_image_float32_atomics) 5379 || (self.sparse_image_int64_atomics && other.sparse_image_int64_atomics) 5380 || (self.sparse_residency16_samples && other.sparse_residency16_samples) 5381 || (self.sparse_residency2_samples && other.sparse_residency2_samples) 5382 || (self.sparse_residency4_samples && other.sparse_residency4_samples) 5383 || (self.sparse_residency8_samples && other.sparse_residency8_samples) 5384 || (self.sparse_residency_aliased && other.sparse_residency_aliased) 5385 || (self.sparse_residency_buffer && other.sparse_residency_buffer) 5386 || (self.sparse_residency_image2_d && other.sparse_residency_image2_d) 5387 || (self.sparse_residency_image3_d && other.sparse_residency_image3_d) 5388 || (self.stippled_bresenham_lines && other.stippled_bresenham_lines) 5389 || (self.stippled_rectangular_lines && other.stippled_rectangular_lines) 5390 || (self.stippled_smooth_lines && other.stippled_smooth_lines) 5391 || (self.storage_buffer16_bit_access && other.storage_buffer16_bit_access) 5392 || (self.storage_buffer8_bit_access && other.storage_buffer8_bit_access) 5393 || (self.storage_input_output16 && other.storage_input_output16) 5394 || (self.storage_push_constant16 && other.storage_push_constant16) 5395 || (self.storage_push_constant8 && other.storage_push_constant8) 5396 || (self.subgroup_broadcast_dynamic_id && other.subgroup_broadcast_dynamic_id) 5397 || (self.subgroup_size_control && other.subgroup_size_control) 5398 || (self.subpass_merge_feedback && other.subpass_merge_feedback) 5399 || (self.subpass_shading && other.subpass_shading) 5400 || (self.supersample_fragment_shading_rates && other.supersample_fragment_shading_rates) 5401 || (self.swapchain_maintenance1 && other.swapchain_maintenance1) 5402 || (self.synchronization2 && other.synchronization2) 5403 || (self.task_shader && other.task_shader) 5404 || (self.tessellation_isolines && other.tessellation_isolines) 5405 || (self.tessellation_point_mode && other.tessellation_point_mode) 5406 || (self.tessellation_shader && other.tessellation_shader) 5407 || (self.texel_buffer_alignment && other.texel_buffer_alignment) 5408 || (self.texture_block_match && other.texture_block_match) 5409 || (self.texture_box_filter && other.texture_box_filter) 5410 || (self.texture_compression_astc_hdr && other.texture_compression_astc_hdr) 5411 || (self.texture_compression_astc_ldr && other.texture_compression_astc_ldr) 5412 || (self.texture_compression_bc && other.texture_compression_bc) 5413 || (self.texture_compression_etc2 && other.texture_compression_etc2) 5414 || (self.texture_sample_weighted && other.texture_sample_weighted) 5415 || (self.tile_properties && other.tile_properties) 5416 || (self.timeline_semaphore && other.timeline_semaphore) 5417 || (self.transform_feedback && other.transform_feedback) 5418 || (self.transform_feedback_preserves_provoking_vertex 5419 && other.transform_feedback_preserves_provoking_vertex) 5420 || (self.triangle_fans && other.triangle_fans) 5421 || (self.uniform_and_storage_buffer16_bit_access 5422 && other.uniform_and_storage_buffer16_bit_access) 5423 || (self.uniform_and_storage_buffer8_bit_access 5424 && other.uniform_and_storage_buffer8_bit_access) 5425 || (self.uniform_buffer_standard_layout && other.uniform_buffer_standard_layout) 5426 || (self.variable_multisample_rate && other.variable_multisample_rate) 5427 || (self.variable_pointers && other.variable_pointers) 5428 || (self.variable_pointers_storage_buffer && other.variable_pointers_storage_buffer) 5429 || (self.vertex_attribute_access_beyond_stride 5430 && other.vertex_attribute_access_beyond_stride) 5431 || (self.vertex_attribute_instance_rate_divisor 5432 && other.vertex_attribute_instance_rate_divisor) 5433 || (self.vertex_attribute_instance_rate_zero_divisor 5434 && other.vertex_attribute_instance_rate_zero_divisor) 5435 || (self.vertex_input_dynamic_state && other.vertex_input_dynamic_state) 5436 || (self.vertex_pipeline_stores_and_atomics && other.vertex_pipeline_stores_and_atomics) 5437 || (self.vulkan_memory_model && other.vulkan_memory_model) 5438 || (self.vulkan_memory_model_availability_visibility_chains 5439 && other.vulkan_memory_model_availability_visibility_chains) 5440 || (self.vulkan_memory_model_device_scope && other.vulkan_memory_model_device_scope) 5441 || (self.wide_lines && other.wide_lines) 5442 || (self.workgroup_memory_explicit_layout && other.workgroup_memory_explicit_layout) 5443 || (self.workgroup_memory_explicit_layout16_bit_access 5444 && other.workgroup_memory_explicit_layout16_bit_access) 5445 || (self.workgroup_memory_explicit_layout8_bit_access 5446 && other.workgroup_memory_explicit_layout8_bit_access) 5447 || (self.workgroup_memory_explicit_layout_scalar_block_layout 5448 && other.workgroup_memory_explicit_layout_scalar_block_layout) 5449 || (self.ycbcr2plane444_formats && other.ycbcr2plane444_formats) 5450 || (self.ycbcr_image_arrays && other.ycbcr_image_arrays) 5451 } 5452 #[doc = r" Returns whether all members in `other` are set in `self`."] 5453 #[inline] contains(&self, other: &Self) -> bool5454 pub const fn contains(&self, other: &Self) -> bool { 5455 (self.acceleration_structure || !other.acceleration_structure) 5456 && (self.acceleration_structure_capture_replay 5457 || !other.acceleration_structure_capture_replay) 5458 && (self.acceleration_structure_host_commands 5459 || !other.acceleration_structure_host_commands) 5460 && (self.acceleration_structure_indirect_build 5461 || !other.acceleration_structure_indirect_build) 5462 && (self.advanced_blend_coherent_operations 5463 || !other.advanced_blend_coherent_operations) 5464 && (self.alpha_to_one || !other.alpha_to_one) 5465 && (self.amigo_profiling || !other.amigo_profiling) 5466 && (self.attachment_feedback_loop_layout || !other.attachment_feedback_loop_layout) 5467 && (self.attachment_fragment_shading_rate || !other.attachment_fragment_shading_rate) 5468 && (self.border_color_swizzle || !other.border_color_swizzle) 5469 && (self.border_color_swizzle_from_image || !other.border_color_swizzle_from_image) 5470 && (self.bresenham_lines || !other.bresenham_lines) 5471 && (self.buffer_device_address || !other.buffer_device_address) 5472 && (self.buffer_device_address_capture_replay 5473 || !other.buffer_device_address_capture_replay) 5474 && (self.buffer_device_address_multi_device 5475 || !other.buffer_device_address_multi_device) 5476 && (self.color_write_enable || !other.color_write_enable) 5477 && (self.compute_derivative_group_linear || !other.compute_derivative_group_linear) 5478 && (self.compute_derivative_group_quads || !other.compute_derivative_group_quads) 5479 && (self.compute_full_subgroups || !other.compute_full_subgroups) 5480 && (self.conditional_rendering || !other.conditional_rendering) 5481 && (self.constant_alpha_color_blend_factors 5482 || !other.constant_alpha_color_blend_factors) 5483 && (self.cooperative_matrix || !other.cooperative_matrix) 5484 && (self.cooperative_matrix_robust_buffer_access 5485 || !other.cooperative_matrix_robust_buffer_access) 5486 && (self.corner_sampled_image || !other.corner_sampled_image) 5487 && (self.coverage_reduction_mode || !other.coverage_reduction_mode) 5488 && (self.custom_border_color_without_format 5489 || !other.custom_border_color_without_format) 5490 && (self.custom_border_colors || !other.custom_border_colors) 5491 && (self.decode_mode_shared_exponent || !other.decode_mode_shared_exponent) 5492 && (self.dedicated_allocation_image_aliasing 5493 || !other.dedicated_allocation_image_aliasing) 5494 && (self.depth_bias_clamp || !other.depth_bias_clamp) 5495 && (self.depth_bounds || !other.depth_bounds) 5496 && (self.depth_clamp || !other.depth_clamp) 5497 && (self.depth_clamp_zero_one || !other.depth_clamp_zero_one) 5498 && (self.depth_clip_control || !other.depth_clip_control) 5499 && (self.depth_clip_enable || !other.depth_clip_enable) 5500 && (self.descriptor_binding_acceleration_structure_update_after_bind 5501 || !other.descriptor_binding_acceleration_structure_update_after_bind) 5502 && (self.descriptor_binding_inline_uniform_block_update_after_bind 5503 || !other.descriptor_binding_inline_uniform_block_update_after_bind) 5504 && (self.descriptor_binding_partially_bound 5505 || !other.descriptor_binding_partially_bound) 5506 && (self.descriptor_binding_sampled_image_update_after_bind 5507 || !other.descriptor_binding_sampled_image_update_after_bind) 5508 && (self.descriptor_binding_storage_buffer_update_after_bind 5509 || !other.descriptor_binding_storage_buffer_update_after_bind) 5510 && (self.descriptor_binding_storage_image_update_after_bind 5511 || !other.descriptor_binding_storage_image_update_after_bind) 5512 && (self.descriptor_binding_storage_texel_buffer_update_after_bind 5513 || !other.descriptor_binding_storage_texel_buffer_update_after_bind) 5514 && (self.descriptor_binding_uniform_buffer_update_after_bind 5515 || !other.descriptor_binding_uniform_buffer_update_after_bind) 5516 && (self.descriptor_binding_uniform_texel_buffer_update_after_bind 5517 || !other.descriptor_binding_uniform_texel_buffer_update_after_bind) 5518 && (self.descriptor_binding_update_unused_while_pending 5519 || !other.descriptor_binding_update_unused_while_pending) 5520 && (self.descriptor_binding_variable_descriptor_count 5521 || !other.descriptor_binding_variable_descriptor_count) 5522 && (self.descriptor_buffer || !other.descriptor_buffer) 5523 && (self.descriptor_buffer_capture_replay || !other.descriptor_buffer_capture_replay) 5524 && (self.descriptor_buffer_image_layout_ignored 5525 || !other.descriptor_buffer_image_layout_ignored) 5526 && (self.descriptor_buffer_push_descriptors 5527 || !other.descriptor_buffer_push_descriptors) 5528 && (self.descriptor_indexing || !other.descriptor_indexing) 5529 && (self.descriptor_set_host_mapping || !other.descriptor_set_host_mapping) 5530 && (self.device_coherent_memory || !other.device_coherent_memory) 5531 && (self.device_fault || !other.device_fault) 5532 && (self.device_fault_vendor_binary || !other.device_fault_vendor_binary) 5533 && (self.device_generated_commands || !other.device_generated_commands) 5534 && (self.device_memory_report || !other.device_memory_report) 5535 && (self.diagnostics_config || !other.diagnostics_config) 5536 && (self.draw_indirect_count || !other.draw_indirect_count) 5537 && (self.draw_indirect_first_instance || !other.draw_indirect_first_instance) 5538 && (self.dual_src_blend || !other.dual_src_blend) 5539 && (self.dynamic_rendering || !other.dynamic_rendering) 5540 && (self.events || !other.events) 5541 && (self.exclusive_scissor || !other.exclusive_scissor) 5542 && (self.extended_dynamic_state || !other.extended_dynamic_state) 5543 && (self.extended_dynamic_state2 || !other.extended_dynamic_state2) 5544 && (self.extended_dynamic_state2_logic_op || !other.extended_dynamic_state2_logic_op) 5545 && (self.extended_dynamic_state2_patch_control_points 5546 || !other.extended_dynamic_state2_patch_control_points) 5547 && (self.extended_dynamic_state3_alpha_to_coverage_enable 5548 || !other.extended_dynamic_state3_alpha_to_coverage_enable) 5549 && (self.extended_dynamic_state3_alpha_to_one_enable 5550 || !other.extended_dynamic_state3_alpha_to_one_enable) 5551 && (self.extended_dynamic_state3_color_blend_advanced 5552 || !other.extended_dynamic_state3_color_blend_advanced) 5553 && (self.extended_dynamic_state3_color_blend_enable 5554 || !other.extended_dynamic_state3_color_blend_enable) 5555 && (self.extended_dynamic_state3_color_blend_equation 5556 || !other.extended_dynamic_state3_color_blend_equation) 5557 && (self.extended_dynamic_state3_color_write_mask 5558 || !other.extended_dynamic_state3_color_write_mask) 5559 && (self.extended_dynamic_state3_conservative_rasterization_mode 5560 || !other.extended_dynamic_state3_conservative_rasterization_mode) 5561 && (self.extended_dynamic_state3_coverage_modulation_mode 5562 || !other.extended_dynamic_state3_coverage_modulation_mode) 5563 && (self.extended_dynamic_state3_coverage_modulation_table 5564 || !other.extended_dynamic_state3_coverage_modulation_table) 5565 && (self.extended_dynamic_state3_coverage_modulation_table_enable 5566 || !other.extended_dynamic_state3_coverage_modulation_table_enable) 5567 && (self.extended_dynamic_state3_coverage_reduction_mode 5568 || !other.extended_dynamic_state3_coverage_reduction_mode) 5569 && (self.extended_dynamic_state3_coverage_to_color_enable 5570 || !other.extended_dynamic_state3_coverage_to_color_enable) 5571 && (self.extended_dynamic_state3_coverage_to_color_location 5572 || !other.extended_dynamic_state3_coverage_to_color_location) 5573 && (self.extended_dynamic_state3_depth_clamp_enable 5574 || !other.extended_dynamic_state3_depth_clamp_enable) 5575 && (self.extended_dynamic_state3_depth_clip_enable 5576 || !other.extended_dynamic_state3_depth_clip_enable) 5577 && (self.extended_dynamic_state3_depth_clip_negative_one_to_one 5578 || !other.extended_dynamic_state3_depth_clip_negative_one_to_one) 5579 && (self.extended_dynamic_state3_extra_primitive_overestimation_size 5580 || !other.extended_dynamic_state3_extra_primitive_overestimation_size) 5581 && (self.extended_dynamic_state3_line_rasterization_mode 5582 || !other.extended_dynamic_state3_line_rasterization_mode) 5583 && (self.extended_dynamic_state3_line_stipple_enable 5584 || !other.extended_dynamic_state3_line_stipple_enable) 5585 && (self.extended_dynamic_state3_logic_op_enable 5586 || !other.extended_dynamic_state3_logic_op_enable) 5587 && (self.extended_dynamic_state3_polygon_mode 5588 || !other.extended_dynamic_state3_polygon_mode) 5589 && (self.extended_dynamic_state3_provoking_vertex_mode 5590 || !other.extended_dynamic_state3_provoking_vertex_mode) 5591 && (self.extended_dynamic_state3_rasterization_samples 5592 || !other.extended_dynamic_state3_rasterization_samples) 5593 && (self.extended_dynamic_state3_rasterization_stream 5594 || !other.extended_dynamic_state3_rasterization_stream) 5595 && (self.extended_dynamic_state3_representative_fragment_test_enable 5596 || !other.extended_dynamic_state3_representative_fragment_test_enable) 5597 && (self.extended_dynamic_state3_sample_locations_enable 5598 || !other.extended_dynamic_state3_sample_locations_enable) 5599 && (self.extended_dynamic_state3_sample_mask 5600 || !other.extended_dynamic_state3_sample_mask) 5601 && (self.extended_dynamic_state3_shading_rate_image_enable 5602 || !other.extended_dynamic_state3_shading_rate_image_enable) 5603 && (self.extended_dynamic_state3_tessellation_domain_origin 5604 || !other.extended_dynamic_state3_tessellation_domain_origin) 5605 && (self.extended_dynamic_state3_viewport_swizzle 5606 || !other.extended_dynamic_state3_viewport_swizzle) 5607 && (self.extended_dynamic_state3_viewport_w_scaling_enable 5608 || !other.extended_dynamic_state3_viewport_w_scaling_enable) 5609 && (self.external_memory_rdma || !other.external_memory_rdma) 5610 && (self.fill_mode_non_solid || !other.fill_mode_non_solid) 5611 && (self.format_a4b4g4r4 || !other.format_a4b4g4r4) 5612 && (self.format_a4r4g4b4 || !other.format_a4r4g4b4) 5613 && (self.format_rgba10x6_without_y_cb_cr_sampler 5614 || !other.format_rgba10x6_without_y_cb_cr_sampler) 5615 && (self.fragment_density_map || !other.fragment_density_map) 5616 && (self.fragment_density_map_deferred || !other.fragment_density_map_deferred) 5617 && (self.fragment_density_map_dynamic || !other.fragment_density_map_dynamic) 5618 && (self.fragment_density_map_non_subsampled_images 5619 || !other.fragment_density_map_non_subsampled_images) 5620 && (self.fragment_density_map_offset || !other.fragment_density_map_offset) 5621 && (self.fragment_shader_barycentric || !other.fragment_shader_barycentric) 5622 && (self.fragment_shader_pixel_interlock || !other.fragment_shader_pixel_interlock) 5623 && (self.fragment_shader_sample_interlock || !other.fragment_shader_sample_interlock) 5624 && (self.fragment_shader_shading_rate_interlock 5625 || !other.fragment_shader_shading_rate_interlock) 5626 && (self.fragment_shading_rate_enums || !other.fragment_shading_rate_enums) 5627 && (self.fragment_stores_and_atomics || !other.fragment_stores_and_atomics) 5628 && (self.full_draw_index_uint32 || !other.full_draw_index_uint32) 5629 && (self.geometry_shader || !other.geometry_shader) 5630 && (self.geometry_streams || !other.geometry_streams) 5631 && (self.global_priority_query || !other.global_priority_query) 5632 && (self.graphics_pipeline_library || !other.graphics_pipeline_library) 5633 && (self.host_query_reset || !other.host_query_reset) 5634 && (self.image2_d_view_of3_d || !other.image2_d_view_of3_d) 5635 && (self.image_compression_control || !other.image_compression_control) 5636 && (self.image_compression_control_swapchain 5637 || !other.image_compression_control_swapchain) 5638 && (self.image_cube_array || !other.image_cube_array) 5639 && (self.image_footprint || !other.image_footprint) 5640 && (self.image_view2_d_on3_d_image || !other.image_view2_d_on3_d_image) 5641 && (self.image_view_format_reinterpretation 5642 || !other.image_view_format_reinterpretation) 5643 && (self.image_view_format_swizzle || !other.image_view_format_swizzle) 5644 && (self.imageless_framebuffer || !other.imageless_framebuffer) 5645 && (self.independent_blend || !other.independent_blend) 5646 && (self.index_type_uint8 || !other.index_type_uint8) 5647 && (self.indirect_copy || !other.indirect_copy) 5648 && (self.inherited_conditional_rendering || !other.inherited_conditional_rendering) 5649 && (self.inherited_queries || !other.inherited_queries) 5650 && (self.inherited_viewport_scissor2_d || !other.inherited_viewport_scissor2_d) 5651 && (self.inline_uniform_block || !other.inline_uniform_block) 5652 && (self.invocation_mask || !other.invocation_mask) 5653 && (self.large_points || !other.large_points) 5654 && (self.legacy_dithering || !other.legacy_dithering) 5655 && (self.linear_color_attachment || !other.linear_color_attachment) 5656 && (self.logic_op || !other.logic_op) 5657 && (self.maintenance4 || !other.maintenance4) 5658 && (self.memory_decompression || !other.memory_decompression) 5659 && (self.memory_priority || !other.memory_priority) 5660 && (self.mesh_shader || !other.mesh_shader) 5661 && (self.mesh_shader_queries || !other.mesh_shader_queries) 5662 && (self.micromap || !other.micromap) 5663 && (self.micromap_capture_replay || !other.micromap_capture_replay) 5664 && (self.micromap_host_commands || !other.micromap_host_commands) 5665 && (self.min_lod || !other.min_lod) 5666 && (self.multi_draw || !other.multi_draw) 5667 && (self.multi_draw_indirect || !other.multi_draw_indirect) 5668 && (self.multi_viewport || !other.multi_viewport) 5669 && (self.multisample_array_image || !other.multisample_array_image) 5670 && (self.multisampled_render_to_single_sampled 5671 || !other.multisampled_render_to_single_sampled) 5672 && (self.multiview || !other.multiview) 5673 && (self.multiview_geometry_shader || !other.multiview_geometry_shader) 5674 && (self.multiview_mesh_shader || !other.multiview_mesh_shader) 5675 && (self.multiview_per_view_viewports || !other.multiview_per_view_viewports) 5676 && (self.multiview_tessellation_shader || !other.multiview_tessellation_shader) 5677 && (self.mutable_comparison_samplers || !other.mutable_comparison_samplers) 5678 && (self.mutable_descriptor_type || !other.mutable_descriptor_type) 5679 && (self.no_invocation_fragment_shading_rates 5680 || !other.no_invocation_fragment_shading_rates) 5681 && (self.non_seamless_cube_map || !other.non_seamless_cube_map) 5682 && (self.null_descriptor || !other.null_descriptor) 5683 && (self.occlusion_query_precise || !other.occlusion_query_precise) 5684 && (self.optical_flow || !other.optical_flow) 5685 && (self.pageable_device_local_memory || !other.pageable_device_local_memory) 5686 && (self.performance_counter_multiple_query_pools 5687 || !other.performance_counter_multiple_query_pools) 5688 && (self.performance_counter_query_pools || !other.performance_counter_query_pools) 5689 && (self.pipeline_creation_cache_control || !other.pipeline_creation_cache_control) 5690 && (self.pipeline_executable_info || !other.pipeline_executable_info) 5691 && (self.pipeline_fragment_shading_rate || !other.pipeline_fragment_shading_rate) 5692 && (self.pipeline_properties_identifier || !other.pipeline_properties_identifier) 5693 && (self.pipeline_protected_access || !other.pipeline_protected_access) 5694 && (self.pipeline_robustness || !other.pipeline_robustness) 5695 && (self.pipeline_statistics_query || !other.pipeline_statistics_query) 5696 && (self.point_polygons || !other.point_polygons) 5697 && (self.present_barrier || !other.present_barrier) 5698 && (self.present_id || !other.present_id) 5699 && (self.present_wait || !other.present_wait) 5700 && (self.primitive_fragment_shading_rate || !other.primitive_fragment_shading_rate) 5701 && (self.primitive_fragment_shading_rate_mesh_shader 5702 || !other.primitive_fragment_shading_rate_mesh_shader) 5703 && (self.primitive_topology_list_restart || !other.primitive_topology_list_restart) 5704 && (self.primitive_topology_patch_list_restart 5705 || !other.primitive_topology_patch_list_restart) 5706 && (self.primitives_generated_query || !other.primitives_generated_query) 5707 && (self.primitives_generated_query_with_non_zero_streams 5708 || !other.primitives_generated_query_with_non_zero_streams) 5709 && (self.primitives_generated_query_with_rasterizer_discard 5710 || !other.primitives_generated_query_with_rasterizer_discard) 5711 && (self.private_data || !other.private_data) 5712 && (self.protected_memory || !other.protected_memory) 5713 && (self.provoking_vertex_last || !other.provoking_vertex_last) 5714 && (self.rasterization_order_color_attachment_access 5715 || !other.rasterization_order_color_attachment_access) 5716 && (self.rasterization_order_depth_attachment_access 5717 || !other.rasterization_order_depth_attachment_access) 5718 && (self.rasterization_order_stencil_attachment_access 5719 || !other.rasterization_order_stencil_attachment_access) 5720 && (self.ray_query || !other.ray_query) 5721 && (self.ray_tracing_invocation_reorder || !other.ray_tracing_invocation_reorder) 5722 && (self.ray_tracing_maintenance1 || !other.ray_tracing_maintenance1) 5723 && (self.ray_tracing_motion_blur || !other.ray_tracing_motion_blur) 5724 && (self.ray_tracing_motion_blur_pipeline_trace_rays_indirect 5725 || !other.ray_tracing_motion_blur_pipeline_trace_rays_indirect) 5726 && (self.ray_tracing_pipeline || !other.ray_tracing_pipeline) 5727 && (self.ray_tracing_pipeline_shader_group_handle_capture_replay 5728 || !other.ray_tracing_pipeline_shader_group_handle_capture_replay) 5729 && (self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed 5730 || !other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed) 5731 && (self.ray_tracing_pipeline_trace_rays_indirect 5732 || !other.ray_tracing_pipeline_trace_rays_indirect) 5733 && (self.ray_tracing_pipeline_trace_rays_indirect2 5734 || !other.ray_tracing_pipeline_trace_rays_indirect2) 5735 && (self.ray_traversal_primitive_culling || !other.ray_traversal_primitive_culling) 5736 && (self.rectangular_lines || !other.rectangular_lines) 5737 && (self.report_address_binding || !other.report_address_binding) 5738 && (self.representative_fragment_test || !other.representative_fragment_test) 5739 && (self.robust_buffer_access || !other.robust_buffer_access) 5740 && (self.robust_buffer_access2 || !other.robust_buffer_access2) 5741 && (self.robust_image_access || !other.robust_image_access) 5742 && (self.robust_image_access2 || !other.robust_image_access2) 5743 && (self.runtime_descriptor_array || !other.runtime_descriptor_array) 5744 && (self.sample_rate_shading || !other.sample_rate_shading) 5745 && (self.sampler2_d_view_of3_d || !other.sampler2_d_view_of3_d) 5746 && (self.sampler_anisotropy || !other.sampler_anisotropy) 5747 && (self.sampler_filter_minmax || !other.sampler_filter_minmax) 5748 && (self.sampler_mip_lod_bias || !other.sampler_mip_lod_bias) 5749 && (self.sampler_mirror_clamp_to_edge || !other.sampler_mirror_clamp_to_edge) 5750 && (self.sampler_ycbcr_conversion || !other.sampler_ycbcr_conversion) 5751 && (self.scalar_block_layout || !other.scalar_block_layout) 5752 && (self.separate_depth_stencil_layouts || !other.separate_depth_stencil_layouts) 5753 && (self.separate_stencil_mask_ref || !other.separate_stencil_mask_ref) 5754 && (self.shader_buffer_float16_atomic_add || !other.shader_buffer_float16_atomic_add) 5755 && (self.shader_buffer_float16_atomic_min_max 5756 || !other.shader_buffer_float16_atomic_min_max) 5757 && (self.shader_buffer_float16_atomics || !other.shader_buffer_float16_atomics) 5758 && (self.shader_buffer_float32_atomic_add || !other.shader_buffer_float32_atomic_add) 5759 && (self.shader_buffer_float32_atomic_min_max 5760 || !other.shader_buffer_float32_atomic_min_max) 5761 && (self.shader_buffer_float32_atomics || !other.shader_buffer_float32_atomics) 5762 && (self.shader_buffer_float64_atomic_add || !other.shader_buffer_float64_atomic_add) 5763 && (self.shader_buffer_float64_atomic_min_max 5764 || !other.shader_buffer_float64_atomic_min_max) 5765 && (self.shader_buffer_float64_atomics || !other.shader_buffer_float64_atomics) 5766 && (self.shader_buffer_int64_atomics || !other.shader_buffer_int64_atomics) 5767 && (self.shader_clip_distance || !other.shader_clip_distance) 5768 && (self.shader_core_builtins || !other.shader_core_builtins) 5769 && (self.shader_cull_distance || !other.shader_cull_distance) 5770 && (self.shader_demote_to_helper_invocation 5771 || !other.shader_demote_to_helper_invocation) 5772 && (self.shader_device_clock || !other.shader_device_clock) 5773 && (self.shader_draw_parameters || !other.shader_draw_parameters) 5774 && (self.shader_early_and_late_fragment_tests 5775 || !other.shader_early_and_late_fragment_tests) 5776 && (self.shader_float16 || !other.shader_float16) 5777 && (self.shader_float64 || !other.shader_float64) 5778 && (self.shader_image_float32_atomic_add || !other.shader_image_float32_atomic_add) 5779 && (self.shader_image_float32_atomic_min_max 5780 || !other.shader_image_float32_atomic_min_max) 5781 && (self.shader_image_float32_atomics || !other.shader_image_float32_atomics) 5782 && (self.shader_image_gather_extended || !other.shader_image_gather_extended) 5783 && (self.shader_image_int64_atomics || !other.shader_image_int64_atomics) 5784 && (self.shader_input_attachment_array_dynamic_indexing 5785 || !other.shader_input_attachment_array_dynamic_indexing) 5786 && (self.shader_input_attachment_array_non_uniform_indexing 5787 || !other.shader_input_attachment_array_non_uniform_indexing) 5788 && (self.shader_int16 || !other.shader_int16) 5789 && (self.shader_int64 || !other.shader_int64) 5790 && (self.shader_int8 || !other.shader_int8) 5791 && (self.shader_integer_dot_product || !other.shader_integer_dot_product) 5792 && (self.shader_integer_functions2 || !other.shader_integer_functions2) 5793 && (self.shader_module_identifier || !other.shader_module_identifier) 5794 && (self.shader_output_layer || !other.shader_output_layer) 5795 && (self.shader_output_viewport_index || !other.shader_output_viewport_index) 5796 && (self.shader_resource_min_lod || !other.shader_resource_min_lod) 5797 && (self.shader_resource_residency || !other.shader_resource_residency) 5798 && (self.shader_sample_rate_interpolation_functions 5799 || !other.shader_sample_rate_interpolation_functions) 5800 && (self.shader_sampled_image_array_dynamic_indexing 5801 || !other.shader_sampled_image_array_dynamic_indexing) 5802 && (self.shader_sampled_image_array_non_uniform_indexing 5803 || !other.shader_sampled_image_array_non_uniform_indexing) 5804 && (self.shader_shared_float16_atomic_add || !other.shader_shared_float16_atomic_add) 5805 && (self.shader_shared_float16_atomic_min_max 5806 || !other.shader_shared_float16_atomic_min_max) 5807 && (self.shader_shared_float16_atomics || !other.shader_shared_float16_atomics) 5808 && (self.shader_shared_float32_atomic_add || !other.shader_shared_float32_atomic_add) 5809 && (self.shader_shared_float32_atomic_min_max 5810 || !other.shader_shared_float32_atomic_min_max) 5811 && (self.shader_shared_float32_atomics || !other.shader_shared_float32_atomics) 5812 && (self.shader_shared_float64_atomic_add || !other.shader_shared_float64_atomic_add) 5813 && (self.shader_shared_float64_atomic_min_max 5814 || !other.shader_shared_float64_atomic_min_max) 5815 && (self.shader_shared_float64_atomics || !other.shader_shared_float64_atomics) 5816 && (self.shader_shared_int64_atomics || !other.shader_shared_int64_atomics) 5817 && (self.shader_sm_builtins || !other.shader_sm_builtins) 5818 && (self.shader_storage_buffer_array_dynamic_indexing 5819 || !other.shader_storage_buffer_array_dynamic_indexing) 5820 && (self.shader_storage_buffer_array_non_uniform_indexing 5821 || !other.shader_storage_buffer_array_non_uniform_indexing) 5822 && (self.shader_storage_image_array_dynamic_indexing 5823 || !other.shader_storage_image_array_dynamic_indexing) 5824 && (self.shader_storage_image_array_non_uniform_indexing 5825 || !other.shader_storage_image_array_non_uniform_indexing) 5826 && (self.shader_storage_image_extended_formats 5827 || !other.shader_storage_image_extended_formats) 5828 && (self.shader_storage_image_multisample || !other.shader_storage_image_multisample) 5829 && (self.shader_storage_image_read_without_format 5830 || !other.shader_storage_image_read_without_format) 5831 && (self.shader_storage_image_write_without_format 5832 || !other.shader_storage_image_write_without_format) 5833 && (self.shader_storage_texel_buffer_array_dynamic_indexing 5834 || !other.shader_storage_texel_buffer_array_dynamic_indexing) 5835 && (self.shader_storage_texel_buffer_array_non_uniform_indexing 5836 || !other.shader_storage_texel_buffer_array_non_uniform_indexing) 5837 && (self.shader_subgroup_clock || !other.shader_subgroup_clock) 5838 && (self.shader_subgroup_extended_types || !other.shader_subgroup_extended_types) 5839 && (self.shader_subgroup_uniform_control_flow 5840 || !other.shader_subgroup_uniform_control_flow) 5841 && (self.shader_terminate_invocation || !other.shader_terminate_invocation) 5842 && (self.shader_tessellation_and_geometry_point_size 5843 || !other.shader_tessellation_and_geometry_point_size) 5844 && (self.shader_uniform_buffer_array_dynamic_indexing 5845 || !other.shader_uniform_buffer_array_dynamic_indexing) 5846 && (self.shader_uniform_buffer_array_non_uniform_indexing 5847 || !other.shader_uniform_buffer_array_non_uniform_indexing) 5848 && (self.shader_uniform_texel_buffer_array_dynamic_indexing 5849 || !other.shader_uniform_texel_buffer_array_dynamic_indexing) 5850 && (self.shader_uniform_texel_buffer_array_non_uniform_indexing 5851 || !other.shader_uniform_texel_buffer_array_non_uniform_indexing) 5852 && (self.shader_zero_initialize_workgroup_memory 5853 || !other.shader_zero_initialize_workgroup_memory) 5854 && (self.shading_rate_coarse_sample_order || !other.shading_rate_coarse_sample_order) 5855 && (self.shading_rate_image || !other.shading_rate_image) 5856 && (self.smooth_lines || !other.smooth_lines) 5857 && (self.sparse_binding || !other.sparse_binding) 5858 && (self.sparse_image_float32_atomic_add || !other.sparse_image_float32_atomic_add) 5859 && (self.sparse_image_float32_atomic_min_max 5860 || !other.sparse_image_float32_atomic_min_max) 5861 && (self.sparse_image_float32_atomics || !other.sparse_image_float32_atomics) 5862 && (self.sparse_image_int64_atomics || !other.sparse_image_int64_atomics) 5863 && (self.sparse_residency16_samples || !other.sparse_residency16_samples) 5864 && (self.sparse_residency2_samples || !other.sparse_residency2_samples) 5865 && (self.sparse_residency4_samples || !other.sparse_residency4_samples) 5866 && (self.sparse_residency8_samples || !other.sparse_residency8_samples) 5867 && (self.sparse_residency_aliased || !other.sparse_residency_aliased) 5868 && (self.sparse_residency_buffer || !other.sparse_residency_buffer) 5869 && (self.sparse_residency_image2_d || !other.sparse_residency_image2_d) 5870 && (self.sparse_residency_image3_d || !other.sparse_residency_image3_d) 5871 && (self.stippled_bresenham_lines || !other.stippled_bresenham_lines) 5872 && (self.stippled_rectangular_lines || !other.stippled_rectangular_lines) 5873 && (self.stippled_smooth_lines || !other.stippled_smooth_lines) 5874 && (self.storage_buffer16_bit_access || !other.storage_buffer16_bit_access) 5875 && (self.storage_buffer8_bit_access || !other.storage_buffer8_bit_access) 5876 && (self.storage_input_output16 || !other.storage_input_output16) 5877 && (self.storage_push_constant16 || !other.storage_push_constant16) 5878 && (self.storage_push_constant8 || !other.storage_push_constant8) 5879 && (self.subgroup_broadcast_dynamic_id || !other.subgroup_broadcast_dynamic_id) 5880 && (self.subgroup_size_control || !other.subgroup_size_control) 5881 && (self.subpass_merge_feedback || !other.subpass_merge_feedback) 5882 && (self.subpass_shading || !other.subpass_shading) 5883 && (self.supersample_fragment_shading_rates 5884 || !other.supersample_fragment_shading_rates) 5885 && (self.swapchain_maintenance1 || !other.swapchain_maintenance1) 5886 && (self.synchronization2 || !other.synchronization2) 5887 && (self.task_shader || !other.task_shader) 5888 && (self.tessellation_isolines || !other.tessellation_isolines) 5889 && (self.tessellation_point_mode || !other.tessellation_point_mode) 5890 && (self.tessellation_shader || !other.tessellation_shader) 5891 && (self.texel_buffer_alignment || !other.texel_buffer_alignment) 5892 && (self.texture_block_match || !other.texture_block_match) 5893 && (self.texture_box_filter || !other.texture_box_filter) 5894 && (self.texture_compression_astc_hdr || !other.texture_compression_astc_hdr) 5895 && (self.texture_compression_astc_ldr || !other.texture_compression_astc_ldr) 5896 && (self.texture_compression_bc || !other.texture_compression_bc) 5897 && (self.texture_compression_etc2 || !other.texture_compression_etc2) 5898 && (self.texture_sample_weighted || !other.texture_sample_weighted) 5899 && (self.tile_properties || !other.tile_properties) 5900 && (self.timeline_semaphore || !other.timeline_semaphore) 5901 && (self.transform_feedback || !other.transform_feedback) 5902 && (self.transform_feedback_preserves_provoking_vertex 5903 || !other.transform_feedback_preserves_provoking_vertex) 5904 && (self.triangle_fans || !other.triangle_fans) 5905 && (self.uniform_and_storage_buffer16_bit_access 5906 || !other.uniform_and_storage_buffer16_bit_access) 5907 && (self.uniform_and_storage_buffer8_bit_access 5908 || !other.uniform_and_storage_buffer8_bit_access) 5909 && (self.uniform_buffer_standard_layout || !other.uniform_buffer_standard_layout) 5910 && (self.variable_multisample_rate || !other.variable_multisample_rate) 5911 && (self.variable_pointers || !other.variable_pointers) 5912 && (self.variable_pointers_storage_buffer || !other.variable_pointers_storage_buffer) 5913 && (self.vertex_attribute_access_beyond_stride 5914 || !other.vertex_attribute_access_beyond_stride) 5915 && (self.vertex_attribute_instance_rate_divisor 5916 || !other.vertex_attribute_instance_rate_divisor) 5917 && (self.vertex_attribute_instance_rate_zero_divisor 5918 || !other.vertex_attribute_instance_rate_zero_divisor) 5919 && (self.vertex_input_dynamic_state || !other.vertex_input_dynamic_state) 5920 && (self.vertex_pipeline_stores_and_atomics 5921 || !other.vertex_pipeline_stores_and_atomics) 5922 && (self.vulkan_memory_model || !other.vulkan_memory_model) 5923 && (self.vulkan_memory_model_availability_visibility_chains 5924 || !other.vulkan_memory_model_availability_visibility_chains) 5925 && (self.vulkan_memory_model_device_scope || !other.vulkan_memory_model_device_scope) 5926 && (self.wide_lines || !other.wide_lines) 5927 && (self.workgroup_memory_explicit_layout || !other.workgroup_memory_explicit_layout) 5928 && (self.workgroup_memory_explicit_layout16_bit_access 5929 || !other.workgroup_memory_explicit_layout16_bit_access) 5930 && (self.workgroup_memory_explicit_layout8_bit_access 5931 || !other.workgroup_memory_explicit_layout8_bit_access) 5932 && (self.workgroup_memory_explicit_layout_scalar_block_layout 5933 || !other.workgroup_memory_explicit_layout_scalar_block_layout) 5934 && (self.ycbcr2plane444_formats || !other.ycbcr2plane444_formats) 5935 && (self.ycbcr_image_arrays || !other.ycbcr_image_arrays) 5936 } 5937 #[doc = r" Returns whether all members in `other` are set in `self`."] 5938 #[deprecated(since = "0.31.0", note = "Use `contains` instead.")] 5939 #[inline] is_superset_of(&self, other: &Self) -> bool5940 pub const fn is_superset_of(&self, other: &Self) -> bool { 5941 self.contains(other) 5942 } 5943 #[doc = r" Returns the union of `self` and `other`."] 5944 #[inline] union(&self, other: &Self) -> Self5945 pub const fn union(&self, other: &Self) -> Self { 5946 Self { 5947 acceleration_structure: self.acceleration_structure || other.acceleration_structure, 5948 acceleration_structure_capture_replay: self.acceleration_structure_capture_replay 5949 || other.acceleration_structure_capture_replay, 5950 acceleration_structure_host_commands: self.acceleration_structure_host_commands 5951 || other.acceleration_structure_host_commands, 5952 acceleration_structure_indirect_build: self.acceleration_structure_indirect_build 5953 || other.acceleration_structure_indirect_build, 5954 advanced_blend_coherent_operations: self.advanced_blend_coherent_operations 5955 || other.advanced_blend_coherent_operations, 5956 alpha_to_one: self.alpha_to_one || other.alpha_to_one, 5957 amigo_profiling: self.amigo_profiling || other.amigo_profiling, 5958 attachment_feedback_loop_layout: self.attachment_feedback_loop_layout 5959 || other.attachment_feedback_loop_layout, 5960 attachment_fragment_shading_rate: self.attachment_fragment_shading_rate 5961 || other.attachment_fragment_shading_rate, 5962 border_color_swizzle: self.border_color_swizzle || other.border_color_swizzle, 5963 border_color_swizzle_from_image: self.border_color_swizzle_from_image 5964 || other.border_color_swizzle_from_image, 5965 bresenham_lines: self.bresenham_lines || other.bresenham_lines, 5966 buffer_device_address: self.buffer_device_address || other.buffer_device_address, 5967 buffer_device_address_capture_replay: self.buffer_device_address_capture_replay 5968 || other.buffer_device_address_capture_replay, 5969 buffer_device_address_multi_device: self.buffer_device_address_multi_device 5970 || other.buffer_device_address_multi_device, 5971 color_write_enable: self.color_write_enable || other.color_write_enable, 5972 compute_derivative_group_linear: self.compute_derivative_group_linear 5973 || other.compute_derivative_group_linear, 5974 compute_derivative_group_quads: self.compute_derivative_group_quads 5975 || other.compute_derivative_group_quads, 5976 compute_full_subgroups: self.compute_full_subgroups || other.compute_full_subgroups, 5977 conditional_rendering: self.conditional_rendering || other.conditional_rendering, 5978 constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors 5979 || other.constant_alpha_color_blend_factors, 5980 cooperative_matrix: self.cooperative_matrix || other.cooperative_matrix, 5981 cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access 5982 || other.cooperative_matrix_robust_buffer_access, 5983 corner_sampled_image: self.corner_sampled_image || other.corner_sampled_image, 5984 coverage_reduction_mode: self.coverage_reduction_mode || other.coverage_reduction_mode, 5985 custom_border_color_without_format: self.custom_border_color_without_format 5986 || other.custom_border_color_without_format, 5987 custom_border_colors: self.custom_border_colors || other.custom_border_colors, 5988 decode_mode_shared_exponent: self.decode_mode_shared_exponent 5989 || other.decode_mode_shared_exponent, 5990 dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing 5991 || other.dedicated_allocation_image_aliasing, 5992 depth_bias_clamp: self.depth_bias_clamp || other.depth_bias_clamp, 5993 depth_bounds: self.depth_bounds || other.depth_bounds, 5994 depth_clamp: self.depth_clamp || other.depth_clamp, 5995 depth_clamp_zero_one: self.depth_clamp_zero_one || other.depth_clamp_zero_one, 5996 depth_clip_control: self.depth_clip_control || other.depth_clip_control, 5997 depth_clip_enable: self.depth_clip_enable || other.depth_clip_enable, 5998 descriptor_binding_acceleration_structure_update_after_bind: self 5999 .descriptor_binding_acceleration_structure_update_after_bind 6000 || other.descriptor_binding_acceleration_structure_update_after_bind, 6001 descriptor_binding_inline_uniform_block_update_after_bind: self 6002 .descriptor_binding_inline_uniform_block_update_after_bind 6003 || other.descriptor_binding_inline_uniform_block_update_after_bind, 6004 descriptor_binding_partially_bound: self.descriptor_binding_partially_bound 6005 || other.descriptor_binding_partially_bound, 6006 descriptor_binding_sampled_image_update_after_bind: self 6007 .descriptor_binding_sampled_image_update_after_bind 6008 || other.descriptor_binding_sampled_image_update_after_bind, 6009 descriptor_binding_storage_buffer_update_after_bind: self 6010 .descriptor_binding_storage_buffer_update_after_bind 6011 || other.descriptor_binding_storage_buffer_update_after_bind, 6012 descriptor_binding_storage_image_update_after_bind: self 6013 .descriptor_binding_storage_image_update_after_bind 6014 || other.descriptor_binding_storage_image_update_after_bind, 6015 descriptor_binding_storage_texel_buffer_update_after_bind: self 6016 .descriptor_binding_storage_texel_buffer_update_after_bind 6017 || other.descriptor_binding_storage_texel_buffer_update_after_bind, 6018 descriptor_binding_uniform_buffer_update_after_bind: self 6019 .descriptor_binding_uniform_buffer_update_after_bind 6020 || other.descriptor_binding_uniform_buffer_update_after_bind, 6021 descriptor_binding_uniform_texel_buffer_update_after_bind: self 6022 .descriptor_binding_uniform_texel_buffer_update_after_bind 6023 || other.descriptor_binding_uniform_texel_buffer_update_after_bind, 6024 descriptor_binding_update_unused_while_pending: self 6025 .descriptor_binding_update_unused_while_pending 6026 || other.descriptor_binding_update_unused_while_pending, 6027 descriptor_binding_variable_descriptor_count: self 6028 .descriptor_binding_variable_descriptor_count 6029 || other.descriptor_binding_variable_descriptor_count, 6030 descriptor_buffer: self.descriptor_buffer || other.descriptor_buffer, 6031 descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay 6032 || other.descriptor_buffer_capture_replay, 6033 descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored 6034 || other.descriptor_buffer_image_layout_ignored, 6035 descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors 6036 || other.descriptor_buffer_push_descriptors, 6037 descriptor_indexing: self.descriptor_indexing || other.descriptor_indexing, 6038 descriptor_set_host_mapping: self.descriptor_set_host_mapping 6039 || other.descriptor_set_host_mapping, 6040 device_coherent_memory: self.device_coherent_memory || other.device_coherent_memory, 6041 device_fault: self.device_fault || other.device_fault, 6042 device_fault_vendor_binary: self.device_fault_vendor_binary 6043 || other.device_fault_vendor_binary, 6044 device_generated_commands: self.device_generated_commands 6045 || other.device_generated_commands, 6046 device_memory_report: self.device_memory_report || other.device_memory_report, 6047 diagnostics_config: self.diagnostics_config || other.diagnostics_config, 6048 draw_indirect_count: self.draw_indirect_count || other.draw_indirect_count, 6049 draw_indirect_first_instance: self.draw_indirect_first_instance 6050 || other.draw_indirect_first_instance, 6051 dual_src_blend: self.dual_src_blend || other.dual_src_blend, 6052 dynamic_rendering: self.dynamic_rendering || other.dynamic_rendering, 6053 events: self.events || other.events, 6054 exclusive_scissor: self.exclusive_scissor || other.exclusive_scissor, 6055 extended_dynamic_state: self.extended_dynamic_state || other.extended_dynamic_state, 6056 extended_dynamic_state2: self.extended_dynamic_state2 || other.extended_dynamic_state2, 6057 extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op 6058 || other.extended_dynamic_state2_logic_op, 6059 extended_dynamic_state2_patch_control_points: self 6060 .extended_dynamic_state2_patch_control_points 6061 || other.extended_dynamic_state2_patch_control_points, 6062 extended_dynamic_state3_alpha_to_coverage_enable: self 6063 .extended_dynamic_state3_alpha_to_coverage_enable 6064 || other.extended_dynamic_state3_alpha_to_coverage_enable, 6065 extended_dynamic_state3_alpha_to_one_enable: self 6066 .extended_dynamic_state3_alpha_to_one_enable 6067 || other.extended_dynamic_state3_alpha_to_one_enable, 6068 extended_dynamic_state3_color_blend_advanced: self 6069 .extended_dynamic_state3_color_blend_advanced 6070 || other.extended_dynamic_state3_color_blend_advanced, 6071 extended_dynamic_state3_color_blend_enable: self 6072 .extended_dynamic_state3_color_blend_enable 6073 || other.extended_dynamic_state3_color_blend_enable, 6074 extended_dynamic_state3_color_blend_equation: self 6075 .extended_dynamic_state3_color_blend_equation 6076 || other.extended_dynamic_state3_color_blend_equation, 6077 extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask 6078 || other.extended_dynamic_state3_color_write_mask, 6079 extended_dynamic_state3_conservative_rasterization_mode: self 6080 .extended_dynamic_state3_conservative_rasterization_mode 6081 || other.extended_dynamic_state3_conservative_rasterization_mode, 6082 extended_dynamic_state3_coverage_modulation_mode: self 6083 .extended_dynamic_state3_coverage_modulation_mode 6084 || other.extended_dynamic_state3_coverage_modulation_mode, 6085 extended_dynamic_state3_coverage_modulation_table: self 6086 .extended_dynamic_state3_coverage_modulation_table 6087 || other.extended_dynamic_state3_coverage_modulation_table, 6088 extended_dynamic_state3_coverage_modulation_table_enable: self 6089 .extended_dynamic_state3_coverage_modulation_table_enable 6090 || other.extended_dynamic_state3_coverage_modulation_table_enable, 6091 extended_dynamic_state3_coverage_reduction_mode: self 6092 .extended_dynamic_state3_coverage_reduction_mode 6093 || other.extended_dynamic_state3_coverage_reduction_mode, 6094 extended_dynamic_state3_coverage_to_color_enable: self 6095 .extended_dynamic_state3_coverage_to_color_enable 6096 || other.extended_dynamic_state3_coverage_to_color_enable, 6097 extended_dynamic_state3_coverage_to_color_location: self 6098 .extended_dynamic_state3_coverage_to_color_location 6099 || other.extended_dynamic_state3_coverage_to_color_location, 6100 extended_dynamic_state3_depth_clamp_enable: self 6101 .extended_dynamic_state3_depth_clamp_enable 6102 || other.extended_dynamic_state3_depth_clamp_enable, 6103 extended_dynamic_state3_depth_clip_enable: self 6104 .extended_dynamic_state3_depth_clip_enable 6105 || other.extended_dynamic_state3_depth_clip_enable, 6106 extended_dynamic_state3_depth_clip_negative_one_to_one: self 6107 .extended_dynamic_state3_depth_clip_negative_one_to_one 6108 || other.extended_dynamic_state3_depth_clip_negative_one_to_one, 6109 extended_dynamic_state3_extra_primitive_overestimation_size: self 6110 .extended_dynamic_state3_extra_primitive_overestimation_size 6111 || other.extended_dynamic_state3_extra_primitive_overestimation_size, 6112 extended_dynamic_state3_line_rasterization_mode: self 6113 .extended_dynamic_state3_line_rasterization_mode 6114 || other.extended_dynamic_state3_line_rasterization_mode, 6115 extended_dynamic_state3_line_stipple_enable: self 6116 .extended_dynamic_state3_line_stipple_enable 6117 || other.extended_dynamic_state3_line_stipple_enable, 6118 extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable 6119 || other.extended_dynamic_state3_logic_op_enable, 6120 extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode 6121 || other.extended_dynamic_state3_polygon_mode, 6122 extended_dynamic_state3_provoking_vertex_mode: self 6123 .extended_dynamic_state3_provoking_vertex_mode 6124 || other.extended_dynamic_state3_provoking_vertex_mode, 6125 extended_dynamic_state3_rasterization_samples: self 6126 .extended_dynamic_state3_rasterization_samples 6127 || other.extended_dynamic_state3_rasterization_samples, 6128 extended_dynamic_state3_rasterization_stream: self 6129 .extended_dynamic_state3_rasterization_stream 6130 || other.extended_dynamic_state3_rasterization_stream, 6131 extended_dynamic_state3_representative_fragment_test_enable: self 6132 .extended_dynamic_state3_representative_fragment_test_enable 6133 || other.extended_dynamic_state3_representative_fragment_test_enable, 6134 extended_dynamic_state3_sample_locations_enable: self 6135 .extended_dynamic_state3_sample_locations_enable 6136 || other.extended_dynamic_state3_sample_locations_enable, 6137 extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask 6138 || other.extended_dynamic_state3_sample_mask, 6139 extended_dynamic_state3_shading_rate_image_enable: self 6140 .extended_dynamic_state3_shading_rate_image_enable 6141 || other.extended_dynamic_state3_shading_rate_image_enable, 6142 extended_dynamic_state3_tessellation_domain_origin: self 6143 .extended_dynamic_state3_tessellation_domain_origin 6144 || other.extended_dynamic_state3_tessellation_domain_origin, 6145 extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle 6146 || other.extended_dynamic_state3_viewport_swizzle, 6147 extended_dynamic_state3_viewport_w_scaling_enable: self 6148 .extended_dynamic_state3_viewport_w_scaling_enable 6149 || other.extended_dynamic_state3_viewport_w_scaling_enable, 6150 external_memory_rdma: self.external_memory_rdma || other.external_memory_rdma, 6151 fill_mode_non_solid: self.fill_mode_non_solid || other.fill_mode_non_solid, 6152 format_a4b4g4r4: self.format_a4b4g4r4 || other.format_a4b4g4r4, 6153 format_a4r4g4b4: self.format_a4r4g4b4 || other.format_a4r4g4b4, 6154 format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler 6155 || other.format_rgba10x6_without_y_cb_cr_sampler, 6156 fragment_density_map: self.fragment_density_map || other.fragment_density_map, 6157 fragment_density_map_deferred: self.fragment_density_map_deferred 6158 || other.fragment_density_map_deferred, 6159 fragment_density_map_dynamic: self.fragment_density_map_dynamic 6160 || other.fragment_density_map_dynamic, 6161 fragment_density_map_non_subsampled_images: self 6162 .fragment_density_map_non_subsampled_images 6163 || other.fragment_density_map_non_subsampled_images, 6164 fragment_density_map_offset: self.fragment_density_map_offset 6165 || other.fragment_density_map_offset, 6166 fragment_shader_barycentric: self.fragment_shader_barycentric 6167 || other.fragment_shader_barycentric, 6168 fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock 6169 || other.fragment_shader_pixel_interlock, 6170 fragment_shader_sample_interlock: self.fragment_shader_sample_interlock 6171 || other.fragment_shader_sample_interlock, 6172 fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock 6173 || other.fragment_shader_shading_rate_interlock, 6174 fragment_shading_rate_enums: self.fragment_shading_rate_enums 6175 || other.fragment_shading_rate_enums, 6176 fragment_stores_and_atomics: self.fragment_stores_and_atomics 6177 || other.fragment_stores_and_atomics, 6178 full_draw_index_uint32: self.full_draw_index_uint32 || other.full_draw_index_uint32, 6179 geometry_shader: self.geometry_shader || other.geometry_shader, 6180 geometry_streams: self.geometry_streams || other.geometry_streams, 6181 global_priority_query: self.global_priority_query || other.global_priority_query, 6182 graphics_pipeline_library: self.graphics_pipeline_library 6183 || other.graphics_pipeline_library, 6184 host_query_reset: self.host_query_reset || other.host_query_reset, 6185 image2_d_view_of3_d: self.image2_d_view_of3_d || other.image2_d_view_of3_d, 6186 image_compression_control: self.image_compression_control 6187 || other.image_compression_control, 6188 image_compression_control_swapchain: self.image_compression_control_swapchain 6189 || other.image_compression_control_swapchain, 6190 image_cube_array: self.image_cube_array || other.image_cube_array, 6191 image_footprint: self.image_footprint || other.image_footprint, 6192 image_view2_d_on3_d_image: self.image_view2_d_on3_d_image 6193 || other.image_view2_d_on3_d_image, 6194 image_view_format_reinterpretation: self.image_view_format_reinterpretation 6195 || other.image_view_format_reinterpretation, 6196 image_view_format_swizzle: self.image_view_format_swizzle 6197 || other.image_view_format_swizzle, 6198 imageless_framebuffer: self.imageless_framebuffer || other.imageless_framebuffer, 6199 independent_blend: self.independent_blend || other.independent_blend, 6200 index_type_uint8: self.index_type_uint8 || other.index_type_uint8, 6201 indirect_copy: self.indirect_copy || other.indirect_copy, 6202 inherited_conditional_rendering: self.inherited_conditional_rendering 6203 || other.inherited_conditional_rendering, 6204 inherited_queries: self.inherited_queries || other.inherited_queries, 6205 inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d 6206 || other.inherited_viewport_scissor2_d, 6207 inline_uniform_block: self.inline_uniform_block || other.inline_uniform_block, 6208 invocation_mask: self.invocation_mask || other.invocation_mask, 6209 large_points: self.large_points || other.large_points, 6210 legacy_dithering: self.legacy_dithering || other.legacy_dithering, 6211 linear_color_attachment: self.linear_color_attachment || other.linear_color_attachment, 6212 logic_op: self.logic_op || other.logic_op, 6213 maintenance4: self.maintenance4 || other.maintenance4, 6214 memory_decompression: self.memory_decompression || other.memory_decompression, 6215 memory_priority: self.memory_priority || other.memory_priority, 6216 mesh_shader: self.mesh_shader || other.mesh_shader, 6217 mesh_shader_queries: self.mesh_shader_queries || other.mesh_shader_queries, 6218 micromap: self.micromap || other.micromap, 6219 micromap_capture_replay: self.micromap_capture_replay || other.micromap_capture_replay, 6220 micromap_host_commands: self.micromap_host_commands || other.micromap_host_commands, 6221 min_lod: self.min_lod || other.min_lod, 6222 multi_draw: self.multi_draw || other.multi_draw, 6223 multi_draw_indirect: self.multi_draw_indirect || other.multi_draw_indirect, 6224 multi_viewport: self.multi_viewport || other.multi_viewport, 6225 multisample_array_image: self.multisample_array_image || other.multisample_array_image, 6226 multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled 6227 || other.multisampled_render_to_single_sampled, 6228 multiview: self.multiview || other.multiview, 6229 multiview_geometry_shader: self.multiview_geometry_shader 6230 || other.multiview_geometry_shader, 6231 multiview_mesh_shader: self.multiview_mesh_shader || other.multiview_mesh_shader, 6232 multiview_per_view_viewports: self.multiview_per_view_viewports 6233 || other.multiview_per_view_viewports, 6234 multiview_tessellation_shader: self.multiview_tessellation_shader 6235 || other.multiview_tessellation_shader, 6236 mutable_comparison_samplers: self.mutable_comparison_samplers 6237 || other.mutable_comparison_samplers, 6238 mutable_descriptor_type: self.mutable_descriptor_type || other.mutable_descriptor_type, 6239 no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates 6240 || other.no_invocation_fragment_shading_rates, 6241 non_seamless_cube_map: self.non_seamless_cube_map || other.non_seamless_cube_map, 6242 null_descriptor: self.null_descriptor || other.null_descriptor, 6243 occlusion_query_precise: self.occlusion_query_precise || other.occlusion_query_precise, 6244 optical_flow: self.optical_flow || other.optical_flow, 6245 pageable_device_local_memory: self.pageable_device_local_memory 6246 || other.pageable_device_local_memory, 6247 performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools 6248 || other.performance_counter_multiple_query_pools, 6249 performance_counter_query_pools: self.performance_counter_query_pools 6250 || other.performance_counter_query_pools, 6251 pipeline_creation_cache_control: self.pipeline_creation_cache_control 6252 || other.pipeline_creation_cache_control, 6253 pipeline_executable_info: self.pipeline_executable_info 6254 || other.pipeline_executable_info, 6255 pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate 6256 || other.pipeline_fragment_shading_rate, 6257 pipeline_properties_identifier: self.pipeline_properties_identifier 6258 || other.pipeline_properties_identifier, 6259 pipeline_protected_access: self.pipeline_protected_access 6260 || other.pipeline_protected_access, 6261 pipeline_robustness: self.pipeline_robustness || other.pipeline_robustness, 6262 pipeline_statistics_query: self.pipeline_statistics_query 6263 || other.pipeline_statistics_query, 6264 point_polygons: self.point_polygons || other.point_polygons, 6265 present_barrier: self.present_barrier || other.present_barrier, 6266 present_id: self.present_id || other.present_id, 6267 present_wait: self.present_wait || other.present_wait, 6268 primitive_fragment_shading_rate: self.primitive_fragment_shading_rate 6269 || other.primitive_fragment_shading_rate, 6270 primitive_fragment_shading_rate_mesh_shader: self 6271 .primitive_fragment_shading_rate_mesh_shader 6272 || other.primitive_fragment_shading_rate_mesh_shader, 6273 primitive_topology_list_restart: self.primitive_topology_list_restart 6274 || other.primitive_topology_list_restart, 6275 primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart 6276 || other.primitive_topology_patch_list_restart, 6277 primitives_generated_query: self.primitives_generated_query 6278 || other.primitives_generated_query, 6279 primitives_generated_query_with_non_zero_streams: self 6280 .primitives_generated_query_with_non_zero_streams 6281 || other.primitives_generated_query_with_non_zero_streams, 6282 primitives_generated_query_with_rasterizer_discard: self 6283 .primitives_generated_query_with_rasterizer_discard 6284 || other.primitives_generated_query_with_rasterizer_discard, 6285 private_data: self.private_data || other.private_data, 6286 protected_memory: self.protected_memory || other.protected_memory, 6287 provoking_vertex_last: self.provoking_vertex_last || other.provoking_vertex_last, 6288 rasterization_order_color_attachment_access: self 6289 .rasterization_order_color_attachment_access 6290 || other.rasterization_order_color_attachment_access, 6291 rasterization_order_depth_attachment_access: self 6292 .rasterization_order_depth_attachment_access 6293 || other.rasterization_order_depth_attachment_access, 6294 rasterization_order_stencil_attachment_access: self 6295 .rasterization_order_stencil_attachment_access 6296 || other.rasterization_order_stencil_attachment_access, 6297 ray_query: self.ray_query || other.ray_query, 6298 ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder 6299 || other.ray_tracing_invocation_reorder, 6300 ray_tracing_maintenance1: self.ray_tracing_maintenance1 6301 || other.ray_tracing_maintenance1, 6302 ray_tracing_motion_blur: self.ray_tracing_motion_blur || other.ray_tracing_motion_blur, 6303 ray_tracing_motion_blur_pipeline_trace_rays_indirect: self 6304 .ray_tracing_motion_blur_pipeline_trace_rays_indirect 6305 || other.ray_tracing_motion_blur_pipeline_trace_rays_indirect, 6306 ray_tracing_pipeline: self.ray_tracing_pipeline || other.ray_tracing_pipeline, 6307 ray_tracing_pipeline_shader_group_handle_capture_replay: self 6308 .ray_tracing_pipeline_shader_group_handle_capture_replay 6309 || other.ray_tracing_pipeline_shader_group_handle_capture_replay, 6310 ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self 6311 .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed 6312 || other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed, 6313 ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect 6314 || other.ray_tracing_pipeline_trace_rays_indirect, 6315 ray_tracing_pipeline_trace_rays_indirect2: self 6316 .ray_tracing_pipeline_trace_rays_indirect2 6317 || other.ray_tracing_pipeline_trace_rays_indirect2, 6318 ray_traversal_primitive_culling: self.ray_traversal_primitive_culling 6319 || other.ray_traversal_primitive_culling, 6320 rectangular_lines: self.rectangular_lines || other.rectangular_lines, 6321 report_address_binding: self.report_address_binding || other.report_address_binding, 6322 representative_fragment_test: self.representative_fragment_test 6323 || other.representative_fragment_test, 6324 robust_buffer_access: self.robust_buffer_access || other.robust_buffer_access, 6325 robust_buffer_access2: self.robust_buffer_access2 || other.robust_buffer_access2, 6326 robust_image_access: self.robust_image_access || other.robust_image_access, 6327 robust_image_access2: self.robust_image_access2 || other.robust_image_access2, 6328 runtime_descriptor_array: self.runtime_descriptor_array 6329 || other.runtime_descriptor_array, 6330 sample_rate_shading: self.sample_rate_shading || other.sample_rate_shading, 6331 sampler2_d_view_of3_d: self.sampler2_d_view_of3_d || other.sampler2_d_view_of3_d, 6332 sampler_anisotropy: self.sampler_anisotropy || other.sampler_anisotropy, 6333 sampler_filter_minmax: self.sampler_filter_minmax || other.sampler_filter_minmax, 6334 sampler_mip_lod_bias: self.sampler_mip_lod_bias || other.sampler_mip_lod_bias, 6335 sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge 6336 || other.sampler_mirror_clamp_to_edge, 6337 sampler_ycbcr_conversion: self.sampler_ycbcr_conversion 6338 || other.sampler_ycbcr_conversion, 6339 scalar_block_layout: self.scalar_block_layout || other.scalar_block_layout, 6340 separate_depth_stencil_layouts: self.separate_depth_stencil_layouts 6341 || other.separate_depth_stencil_layouts, 6342 separate_stencil_mask_ref: self.separate_stencil_mask_ref 6343 || other.separate_stencil_mask_ref, 6344 shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add 6345 || other.shader_buffer_float16_atomic_add, 6346 shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max 6347 || other.shader_buffer_float16_atomic_min_max, 6348 shader_buffer_float16_atomics: self.shader_buffer_float16_atomics 6349 || other.shader_buffer_float16_atomics, 6350 shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add 6351 || other.shader_buffer_float32_atomic_add, 6352 shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max 6353 || other.shader_buffer_float32_atomic_min_max, 6354 shader_buffer_float32_atomics: self.shader_buffer_float32_atomics 6355 || other.shader_buffer_float32_atomics, 6356 shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add 6357 || other.shader_buffer_float64_atomic_add, 6358 shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max 6359 || other.shader_buffer_float64_atomic_min_max, 6360 shader_buffer_float64_atomics: self.shader_buffer_float64_atomics 6361 || other.shader_buffer_float64_atomics, 6362 shader_buffer_int64_atomics: self.shader_buffer_int64_atomics 6363 || other.shader_buffer_int64_atomics, 6364 shader_clip_distance: self.shader_clip_distance || other.shader_clip_distance, 6365 shader_core_builtins: self.shader_core_builtins || other.shader_core_builtins, 6366 shader_cull_distance: self.shader_cull_distance || other.shader_cull_distance, 6367 shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation 6368 || other.shader_demote_to_helper_invocation, 6369 shader_device_clock: self.shader_device_clock || other.shader_device_clock, 6370 shader_draw_parameters: self.shader_draw_parameters || other.shader_draw_parameters, 6371 shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests 6372 || other.shader_early_and_late_fragment_tests, 6373 shader_float16: self.shader_float16 || other.shader_float16, 6374 shader_float64: self.shader_float64 || other.shader_float64, 6375 shader_image_float32_atomic_add: self.shader_image_float32_atomic_add 6376 || other.shader_image_float32_atomic_add, 6377 shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max 6378 || other.shader_image_float32_atomic_min_max, 6379 shader_image_float32_atomics: self.shader_image_float32_atomics 6380 || other.shader_image_float32_atomics, 6381 shader_image_gather_extended: self.shader_image_gather_extended 6382 || other.shader_image_gather_extended, 6383 shader_image_int64_atomics: self.shader_image_int64_atomics 6384 || other.shader_image_int64_atomics, 6385 shader_input_attachment_array_dynamic_indexing: self 6386 .shader_input_attachment_array_dynamic_indexing 6387 || other.shader_input_attachment_array_dynamic_indexing, 6388 shader_input_attachment_array_non_uniform_indexing: self 6389 .shader_input_attachment_array_non_uniform_indexing 6390 || other.shader_input_attachment_array_non_uniform_indexing, 6391 shader_int16: self.shader_int16 || other.shader_int16, 6392 shader_int64: self.shader_int64 || other.shader_int64, 6393 shader_int8: self.shader_int8 || other.shader_int8, 6394 shader_integer_dot_product: self.shader_integer_dot_product 6395 || other.shader_integer_dot_product, 6396 shader_integer_functions2: self.shader_integer_functions2 6397 || other.shader_integer_functions2, 6398 shader_module_identifier: self.shader_module_identifier 6399 || other.shader_module_identifier, 6400 shader_output_layer: self.shader_output_layer || other.shader_output_layer, 6401 shader_output_viewport_index: self.shader_output_viewport_index 6402 || other.shader_output_viewport_index, 6403 shader_resource_min_lod: self.shader_resource_min_lod || other.shader_resource_min_lod, 6404 shader_resource_residency: self.shader_resource_residency 6405 || other.shader_resource_residency, 6406 shader_sample_rate_interpolation_functions: self 6407 .shader_sample_rate_interpolation_functions 6408 || other.shader_sample_rate_interpolation_functions, 6409 shader_sampled_image_array_dynamic_indexing: self 6410 .shader_sampled_image_array_dynamic_indexing 6411 || other.shader_sampled_image_array_dynamic_indexing, 6412 shader_sampled_image_array_non_uniform_indexing: self 6413 .shader_sampled_image_array_non_uniform_indexing 6414 || other.shader_sampled_image_array_non_uniform_indexing, 6415 shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add 6416 || other.shader_shared_float16_atomic_add, 6417 shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max 6418 || other.shader_shared_float16_atomic_min_max, 6419 shader_shared_float16_atomics: self.shader_shared_float16_atomics 6420 || other.shader_shared_float16_atomics, 6421 shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add 6422 || other.shader_shared_float32_atomic_add, 6423 shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max 6424 || other.shader_shared_float32_atomic_min_max, 6425 shader_shared_float32_atomics: self.shader_shared_float32_atomics 6426 || other.shader_shared_float32_atomics, 6427 shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add 6428 || other.shader_shared_float64_atomic_add, 6429 shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max 6430 || other.shader_shared_float64_atomic_min_max, 6431 shader_shared_float64_atomics: self.shader_shared_float64_atomics 6432 || other.shader_shared_float64_atomics, 6433 shader_shared_int64_atomics: self.shader_shared_int64_atomics 6434 || other.shader_shared_int64_atomics, 6435 shader_sm_builtins: self.shader_sm_builtins || other.shader_sm_builtins, 6436 shader_storage_buffer_array_dynamic_indexing: self 6437 .shader_storage_buffer_array_dynamic_indexing 6438 || other.shader_storage_buffer_array_dynamic_indexing, 6439 shader_storage_buffer_array_non_uniform_indexing: self 6440 .shader_storage_buffer_array_non_uniform_indexing 6441 || other.shader_storage_buffer_array_non_uniform_indexing, 6442 shader_storage_image_array_dynamic_indexing: self 6443 .shader_storage_image_array_dynamic_indexing 6444 || other.shader_storage_image_array_dynamic_indexing, 6445 shader_storage_image_array_non_uniform_indexing: self 6446 .shader_storage_image_array_non_uniform_indexing 6447 || other.shader_storage_image_array_non_uniform_indexing, 6448 shader_storage_image_extended_formats: self.shader_storage_image_extended_formats 6449 || other.shader_storage_image_extended_formats, 6450 shader_storage_image_multisample: self.shader_storage_image_multisample 6451 || other.shader_storage_image_multisample, 6452 shader_storage_image_read_without_format: self.shader_storage_image_read_without_format 6453 || other.shader_storage_image_read_without_format, 6454 shader_storage_image_write_without_format: self 6455 .shader_storage_image_write_without_format 6456 || other.shader_storage_image_write_without_format, 6457 shader_storage_texel_buffer_array_dynamic_indexing: self 6458 .shader_storage_texel_buffer_array_dynamic_indexing 6459 || other.shader_storage_texel_buffer_array_dynamic_indexing, 6460 shader_storage_texel_buffer_array_non_uniform_indexing: self 6461 .shader_storage_texel_buffer_array_non_uniform_indexing 6462 || other.shader_storage_texel_buffer_array_non_uniform_indexing, 6463 shader_subgroup_clock: self.shader_subgroup_clock || other.shader_subgroup_clock, 6464 shader_subgroup_extended_types: self.shader_subgroup_extended_types 6465 || other.shader_subgroup_extended_types, 6466 shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow 6467 || other.shader_subgroup_uniform_control_flow, 6468 shader_terminate_invocation: self.shader_terminate_invocation 6469 || other.shader_terminate_invocation, 6470 shader_tessellation_and_geometry_point_size: self 6471 .shader_tessellation_and_geometry_point_size 6472 || other.shader_tessellation_and_geometry_point_size, 6473 shader_uniform_buffer_array_dynamic_indexing: self 6474 .shader_uniform_buffer_array_dynamic_indexing 6475 || other.shader_uniform_buffer_array_dynamic_indexing, 6476 shader_uniform_buffer_array_non_uniform_indexing: self 6477 .shader_uniform_buffer_array_non_uniform_indexing 6478 || other.shader_uniform_buffer_array_non_uniform_indexing, 6479 shader_uniform_texel_buffer_array_dynamic_indexing: self 6480 .shader_uniform_texel_buffer_array_dynamic_indexing 6481 || other.shader_uniform_texel_buffer_array_dynamic_indexing, 6482 shader_uniform_texel_buffer_array_non_uniform_indexing: self 6483 .shader_uniform_texel_buffer_array_non_uniform_indexing 6484 || other.shader_uniform_texel_buffer_array_non_uniform_indexing, 6485 shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory 6486 || other.shader_zero_initialize_workgroup_memory, 6487 shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order 6488 || other.shading_rate_coarse_sample_order, 6489 shading_rate_image: self.shading_rate_image || other.shading_rate_image, 6490 smooth_lines: self.smooth_lines || other.smooth_lines, 6491 sparse_binding: self.sparse_binding || other.sparse_binding, 6492 sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add 6493 || other.sparse_image_float32_atomic_add, 6494 sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max 6495 || other.sparse_image_float32_atomic_min_max, 6496 sparse_image_float32_atomics: self.sparse_image_float32_atomics 6497 || other.sparse_image_float32_atomics, 6498 sparse_image_int64_atomics: self.sparse_image_int64_atomics 6499 || other.sparse_image_int64_atomics, 6500 sparse_residency16_samples: self.sparse_residency16_samples 6501 || other.sparse_residency16_samples, 6502 sparse_residency2_samples: self.sparse_residency2_samples 6503 || other.sparse_residency2_samples, 6504 sparse_residency4_samples: self.sparse_residency4_samples 6505 || other.sparse_residency4_samples, 6506 sparse_residency8_samples: self.sparse_residency8_samples 6507 || other.sparse_residency8_samples, 6508 sparse_residency_aliased: self.sparse_residency_aliased 6509 || other.sparse_residency_aliased, 6510 sparse_residency_buffer: self.sparse_residency_buffer || other.sparse_residency_buffer, 6511 sparse_residency_image2_d: self.sparse_residency_image2_d 6512 || other.sparse_residency_image2_d, 6513 sparse_residency_image3_d: self.sparse_residency_image3_d 6514 || other.sparse_residency_image3_d, 6515 stippled_bresenham_lines: self.stippled_bresenham_lines 6516 || other.stippled_bresenham_lines, 6517 stippled_rectangular_lines: self.stippled_rectangular_lines 6518 || other.stippled_rectangular_lines, 6519 stippled_smooth_lines: self.stippled_smooth_lines || other.stippled_smooth_lines, 6520 storage_buffer16_bit_access: self.storage_buffer16_bit_access 6521 || other.storage_buffer16_bit_access, 6522 storage_buffer8_bit_access: self.storage_buffer8_bit_access 6523 || other.storage_buffer8_bit_access, 6524 storage_input_output16: self.storage_input_output16 || other.storage_input_output16, 6525 storage_push_constant16: self.storage_push_constant16 || other.storage_push_constant16, 6526 storage_push_constant8: self.storage_push_constant8 || other.storage_push_constant8, 6527 subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id 6528 || other.subgroup_broadcast_dynamic_id, 6529 subgroup_size_control: self.subgroup_size_control || other.subgroup_size_control, 6530 subpass_merge_feedback: self.subpass_merge_feedback || other.subpass_merge_feedback, 6531 subpass_shading: self.subpass_shading || other.subpass_shading, 6532 supersample_fragment_shading_rates: self.supersample_fragment_shading_rates 6533 || other.supersample_fragment_shading_rates, 6534 swapchain_maintenance1: self.swapchain_maintenance1 || other.swapchain_maintenance1, 6535 synchronization2: self.synchronization2 || other.synchronization2, 6536 task_shader: self.task_shader || other.task_shader, 6537 tessellation_isolines: self.tessellation_isolines || other.tessellation_isolines, 6538 tessellation_point_mode: self.tessellation_point_mode || other.tessellation_point_mode, 6539 tessellation_shader: self.tessellation_shader || other.tessellation_shader, 6540 texel_buffer_alignment: self.texel_buffer_alignment || other.texel_buffer_alignment, 6541 texture_block_match: self.texture_block_match || other.texture_block_match, 6542 texture_box_filter: self.texture_box_filter || other.texture_box_filter, 6543 texture_compression_astc_hdr: self.texture_compression_astc_hdr 6544 || other.texture_compression_astc_hdr, 6545 texture_compression_astc_ldr: self.texture_compression_astc_ldr 6546 || other.texture_compression_astc_ldr, 6547 texture_compression_bc: self.texture_compression_bc || other.texture_compression_bc, 6548 texture_compression_etc2: self.texture_compression_etc2 6549 || other.texture_compression_etc2, 6550 texture_sample_weighted: self.texture_sample_weighted || other.texture_sample_weighted, 6551 tile_properties: self.tile_properties || other.tile_properties, 6552 timeline_semaphore: self.timeline_semaphore || other.timeline_semaphore, 6553 transform_feedback: self.transform_feedback || other.transform_feedback, 6554 transform_feedback_preserves_provoking_vertex: self 6555 .transform_feedback_preserves_provoking_vertex 6556 || other.transform_feedback_preserves_provoking_vertex, 6557 triangle_fans: self.triangle_fans || other.triangle_fans, 6558 uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access 6559 || other.uniform_and_storage_buffer16_bit_access, 6560 uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access 6561 || other.uniform_and_storage_buffer8_bit_access, 6562 uniform_buffer_standard_layout: self.uniform_buffer_standard_layout 6563 || other.uniform_buffer_standard_layout, 6564 variable_multisample_rate: self.variable_multisample_rate 6565 || other.variable_multisample_rate, 6566 variable_pointers: self.variable_pointers || other.variable_pointers, 6567 variable_pointers_storage_buffer: self.variable_pointers_storage_buffer 6568 || other.variable_pointers_storage_buffer, 6569 vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride 6570 || other.vertex_attribute_access_beyond_stride, 6571 vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor 6572 || other.vertex_attribute_instance_rate_divisor, 6573 vertex_attribute_instance_rate_zero_divisor: self 6574 .vertex_attribute_instance_rate_zero_divisor 6575 || other.vertex_attribute_instance_rate_zero_divisor, 6576 vertex_input_dynamic_state: self.vertex_input_dynamic_state 6577 || other.vertex_input_dynamic_state, 6578 vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics 6579 || other.vertex_pipeline_stores_and_atomics, 6580 vulkan_memory_model: self.vulkan_memory_model || other.vulkan_memory_model, 6581 vulkan_memory_model_availability_visibility_chains: self 6582 .vulkan_memory_model_availability_visibility_chains 6583 || other.vulkan_memory_model_availability_visibility_chains, 6584 vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope 6585 || other.vulkan_memory_model_device_scope, 6586 wide_lines: self.wide_lines || other.wide_lines, 6587 workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout 6588 || other.workgroup_memory_explicit_layout, 6589 workgroup_memory_explicit_layout16_bit_access: self 6590 .workgroup_memory_explicit_layout16_bit_access 6591 || other.workgroup_memory_explicit_layout16_bit_access, 6592 workgroup_memory_explicit_layout8_bit_access: self 6593 .workgroup_memory_explicit_layout8_bit_access 6594 || other.workgroup_memory_explicit_layout8_bit_access, 6595 workgroup_memory_explicit_layout_scalar_block_layout: self 6596 .workgroup_memory_explicit_layout_scalar_block_layout 6597 || other.workgroup_memory_explicit_layout_scalar_block_layout, 6598 ycbcr2plane444_formats: self.ycbcr2plane444_formats || other.ycbcr2plane444_formats, 6599 ycbcr_image_arrays: self.ycbcr_image_arrays || other.ycbcr_image_arrays, 6600 _ne: crate::NonExhaustive(()), 6601 } 6602 } 6603 #[doc = r" Returns the intersection of `self` and `other`."] 6604 #[inline] intersection(&self, other: &Self) -> Self6605 pub const fn intersection(&self, other: &Self) -> Self { 6606 Self { 6607 acceleration_structure: self.acceleration_structure && other.acceleration_structure, 6608 acceleration_structure_capture_replay: self.acceleration_structure_capture_replay 6609 && other.acceleration_structure_capture_replay, 6610 acceleration_structure_host_commands: self.acceleration_structure_host_commands 6611 && other.acceleration_structure_host_commands, 6612 acceleration_structure_indirect_build: self.acceleration_structure_indirect_build 6613 && other.acceleration_structure_indirect_build, 6614 advanced_blend_coherent_operations: self.advanced_blend_coherent_operations 6615 && other.advanced_blend_coherent_operations, 6616 alpha_to_one: self.alpha_to_one && other.alpha_to_one, 6617 amigo_profiling: self.amigo_profiling && other.amigo_profiling, 6618 attachment_feedback_loop_layout: self.attachment_feedback_loop_layout 6619 && other.attachment_feedback_loop_layout, 6620 attachment_fragment_shading_rate: self.attachment_fragment_shading_rate 6621 && other.attachment_fragment_shading_rate, 6622 border_color_swizzle: self.border_color_swizzle && other.border_color_swizzle, 6623 border_color_swizzle_from_image: self.border_color_swizzle_from_image 6624 && other.border_color_swizzle_from_image, 6625 bresenham_lines: self.bresenham_lines && other.bresenham_lines, 6626 buffer_device_address: self.buffer_device_address && other.buffer_device_address, 6627 buffer_device_address_capture_replay: self.buffer_device_address_capture_replay 6628 && other.buffer_device_address_capture_replay, 6629 buffer_device_address_multi_device: self.buffer_device_address_multi_device 6630 && other.buffer_device_address_multi_device, 6631 color_write_enable: self.color_write_enable && other.color_write_enable, 6632 compute_derivative_group_linear: self.compute_derivative_group_linear 6633 && other.compute_derivative_group_linear, 6634 compute_derivative_group_quads: self.compute_derivative_group_quads 6635 && other.compute_derivative_group_quads, 6636 compute_full_subgroups: self.compute_full_subgroups && other.compute_full_subgroups, 6637 conditional_rendering: self.conditional_rendering && other.conditional_rendering, 6638 constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors 6639 && other.constant_alpha_color_blend_factors, 6640 cooperative_matrix: self.cooperative_matrix && other.cooperative_matrix, 6641 cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access 6642 && other.cooperative_matrix_robust_buffer_access, 6643 corner_sampled_image: self.corner_sampled_image && other.corner_sampled_image, 6644 coverage_reduction_mode: self.coverage_reduction_mode && other.coverage_reduction_mode, 6645 custom_border_color_without_format: self.custom_border_color_without_format 6646 && other.custom_border_color_without_format, 6647 custom_border_colors: self.custom_border_colors && other.custom_border_colors, 6648 decode_mode_shared_exponent: self.decode_mode_shared_exponent 6649 && other.decode_mode_shared_exponent, 6650 dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing 6651 && other.dedicated_allocation_image_aliasing, 6652 depth_bias_clamp: self.depth_bias_clamp && other.depth_bias_clamp, 6653 depth_bounds: self.depth_bounds && other.depth_bounds, 6654 depth_clamp: self.depth_clamp && other.depth_clamp, 6655 depth_clamp_zero_one: self.depth_clamp_zero_one && other.depth_clamp_zero_one, 6656 depth_clip_control: self.depth_clip_control && other.depth_clip_control, 6657 depth_clip_enable: self.depth_clip_enable && other.depth_clip_enable, 6658 descriptor_binding_acceleration_structure_update_after_bind: self 6659 .descriptor_binding_acceleration_structure_update_after_bind 6660 && other.descriptor_binding_acceleration_structure_update_after_bind, 6661 descriptor_binding_inline_uniform_block_update_after_bind: self 6662 .descriptor_binding_inline_uniform_block_update_after_bind 6663 && other.descriptor_binding_inline_uniform_block_update_after_bind, 6664 descriptor_binding_partially_bound: self.descriptor_binding_partially_bound 6665 && other.descriptor_binding_partially_bound, 6666 descriptor_binding_sampled_image_update_after_bind: self 6667 .descriptor_binding_sampled_image_update_after_bind 6668 && other.descriptor_binding_sampled_image_update_after_bind, 6669 descriptor_binding_storage_buffer_update_after_bind: self 6670 .descriptor_binding_storage_buffer_update_after_bind 6671 && other.descriptor_binding_storage_buffer_update_after_bind, 6672 descriptor_binding_storage_image_update_after_bind: self 6673 .descriptor_binding_storage_image_update_after_bind 6674 && other.descriptor_binding_storage_image_update_after_bind, 6675 descriptor_binding_storage_texel_buffer_update_after_bind: self 6676 .descriptor_binding_storage_texel_buffer_update_after_bind 6677 && other.descriptor_binding_storage_texel_buffer_update_after_bind, 6678 descriptor_binding_uniform_buffer_update_after_bind: self 6679 .descriptor_binding_uniform_buffer_update_after_bind 6680 && other.descriptor_binding_uniform_buffer_update_after_bind, 6681 descriptor_binding_uniform_texel_buffer_update_after_bind: self 6682 .descriptor_binding_uniform_texel_buffer_update_after_bind 6683 && other.descriptor_binding_uniform_texel_buffer_update_after_bind, 6684 descriptor_binding_update_unused_while_pending: self 6685 .descriptor_binding_update_unused_while_pending 6686 && other.descriptor_binding_update_unused_while_pending, 6687 descriptor_binding_variable_descriptor_count: self 6688 .descriptor_binding_variable_descriptor_count 6689 && other.descriptor_binding_variable_descriptor_count, 6690 descriptor_buffer: self.descriptor_buffer && other.descriptor_buffer, 6691 descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay 6692 && other.descriptor_buffer_capture_replay, 6693 descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored 6694 && other.descriptor_buffer_image_layout_ignored, 6695 descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors 6696 && other.descriptor_buffer_push_descriptors, 6697 descriptor_indexing: self.descriptor_indexing && other.descriptor_indexing, 6698 descriptor_set_host_mapping: self.descriptor_set_host_mapping 6699 && other.descriptor_set_host_mapping, 6700 device_coherent_memory: self.device_coherent_memory && other.device_coherent_memory, 6701 device_fault: self.device_fault && other.device_fault, 6702 device_fault_vendor_binary: self.device_fault_vendor_binary 6703 && other.device_fault_vendor_binary, 6704 device_generated_commands: self.device_generated_commands 6705 && other.device_generated_commands, 6706 device_memory_report: self.device_memory_report && other.device_memory_report, 6707 diagnostics_config: self.diagnostics_config && other.diagnostics_config, 6708 draw_indirect_count: self.draw_indirect_count && other.draw_indirect_count, 6709 draw_indirect_first_instance: self.draw_indirect_first_instance 6710 && other.draw_indirect_first_instance, 6711 dual_src_blend: self.dual_src_blend && other.dual_src_blend, 6712 dynamic_rendering: self.dynamic_rendering && other.dynamic_rendering, 6713 events: self.events && other.events, 6714 exclusive_scissor: self.exclusive_scissor && other.exclusive_scissor, 6715 extended_dynamic_state: self.extended_dynamic_state && other.extended_dynamic_state, 6716 extended_dynamic_state2: self.extended_dynamic_state2 && other.extended_dynamic_state2, 6717 extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op 6718 && other.extended_dynamic_state2_logic_op, 6719 extended_dynamic_state2_patch_control_points: self 6720 .extended_dynamic_state2_patch_control_points 6721 && other.extended_dynamic_state2_patch_control_points, 6722 extended_dynamic_state3_alpha_to_coverage_enable: self 6723 .extended_dynamic_state3_alpha_to_coverage_enable 6724 && other.extended_dynamic_state3_alpha_to_coverage_enable, 6725 extended_dynamic_state3_alpha_to_one_enable: self 6726 .extended_dynamic_state3_alpha_to_one_enable 6727 && other.extended_dynamic_state3_alpha_to_one_enable, 6728 extended_dynamic_state3_color_blend_advanced: self 6729 .extended_dynamic_state3_color_blend_advanced 6730 && other.extended_dynamic_state3_color_blend_advanced, 6731 extended_dynamic_state3_color_blend_enable: self 6732 .extended_dynamic_state3_color_blend_enable 6733 && other.extended_dynamic_state3_color_blend_enable, 6734 extended_dynamic_state3_color_blend_equation: self 6735 .extended_dynamic_state3_color_blend_equation 6736 && other.extended_dynamic_state3_color_blend_equation, 6737 extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask 6738 && other.extended_dynamic_state3_color_write_mask, 6739 extended_dynamic_state3_conservative_rasterization_mode: self 6740 .extended_dynamic_state3_conservative_rasterization_mode 6741 && other.extended_dynamic_state3_conservative_rasterization_mode, 6742 extended_dynamic_state3_coverage_modulation_mode: self 6743 .extended_dynamic_state3_coverage_modulation_mode 6744 && other.extended_dynamic_state3_coverage_modulation_mode, 6745 extended_dynamic_state3_coverage_modulation_table: self 6746 .extended_dynamic_state3_coverage_modulation_table 6747 && other.extended_dynamic_state3_coverage_modulation_table, 6748 extended_dynamic_state3_coverage_modulation_table_enable: self 6749 .extended_dynamic_state3_coverage_modulation_table_enable 6750 && other.extended_dynamic_state3_coverage_modulation_table_enable, 6751 extended_dynamic_state3_coverage_reduction_mode: self 6752 .extended_dynamic_state3_coverage_reduction_mode 6753 && other.extended_dynamic_state3_coverage_reduction_mode, 6754 extended_dynamic_state3_coverage_to_color_enable: self 6755 .extended_dynamic_state3_coverage_to_color_enable 6756 && other.extended_dynamic_state3_coverage_to_color_enable, 6757 extended_dynamic_state3_coverage_to_color_location: self 6758 .extended_dynamic_state3_coverage_to_color_location 6759 && other.extended_dynamic_state3_coverage_to_color_location, 6760 extended_dynamic_state3_depth_clamp_enable: self 6761 .extended_dynamic_state3_depth_clamp_enable 6762 && other.extended_dynamic_state3_depth_clamp_enable, 6763 extended_dynamic_state3_depth_clip_enable: self 6764 .extended_dynamic_state3_depth_clip_enable 6765 && other.extended_dynamic_state3_depth_clip_enable, 6766 extended_dynamic_state3_depth_clip_negative_one_to_one: self 6767 .extended_dynamic_state3_depth_clip_negative_one_to_one 6768 && other.extended_dynamic_state3_depth_clip_negative_one_to_one, 6769 extended_dynamic_state3_extra_primitive_overestimation_size: self 6770 .extended_dynamic_state3_extra_primitive_overestimation_size 6771 && other.extended_dynamic_state3_extra_primitive_overestimation_size, 6772 extended_dynamic_state3_line_rasterization_mode: self 6773 .extended_dynamic_state3_line_rasterization_mode 6774 && other.extended_dynamic_state3_line_rasterization_mode, 6775 extended_dynamic_state3_line_stipple_enable: self 6776 .extended_dynamic_state3_line_stipple_enable 6777 && other.extended_dynamic_state3_line_stipple_enable, 6778 extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable 6779 && other.extended_dynamic_state3_logic_op_enable, 6780 extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode 6781 && other.extended_dynamic_state3_polygon_mode, 6782 extended_dynamic_state3_provoking_vertex_mode: self 6783 .extended_dynamic_state3_provoking_vertex_mode 6784 && other.extended_dynamic_state3_provoking_vertex_mode, 6785 extended_dynamic_state3_rasterization_samples: self 6786 .extended_dynamic_state3_rasterization_samples 6787 && other.extended_dynamic_state3_rasterization_samples, 6788 extended_dynamic_state3_rasterization_stream: self 6789 .extended_dynamic_state3_rasterization_stream 6790 && other.extended_dynamic_state3_rasterization_stream, 6791 extended_dynamic_state3_representative_fragment_test_enable: self 6792 .extended_dynamic_state3_representative_fragment_test_enable 6793 && other.extended_dynamic_state3_representative_fragment_test_enable, 6794 extended_dynamic_state3_sample_locations_enable: self 6795 .extended_dynamic_state3_sample_locations_enable 6796 && other.extended_dynamic_state3_sample_locations_enable, 6797 extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask 6798 && other.extended_dynamic_state3_sample_mask, 6799 extended_dynamic_state3_shading_rate_image_enable: self 6800 .extended_dynamic_state3_shading_rate_image_enable 6801 && other.extended_dynamic_state3_shading_rate_image_enable, 6802 extended_dynamic_state3_tessellation_domain_origin: self 6803 .extended_dynamic_state3_tessellation_domain_origin 6804 && other.extended_dynamic_state3_tessellation_domain_origin, 6805 extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle 6806 && other.extended_dynamic_state3_viewport_swizzle, 6807 extended_dynamic_state3_viewport_w_scaling_enable: self 6808 .extended_dynamic_state3_viewport_w_scaling_enable 6809 && other.extended_dynamic_state3_viewport_w_scaling_enable, 6810 external_memory_rdma: self.external_memory_rdma && other.external_memory_rdma, 6811 fill_mode_non_solid: self.fill_mode_non_solid && other.fill_mode_non_solid, 6812 format_a4b4g4r4: self.format_a4b4g4r4 && other.format_a4b4g4r4, 6813 format_a4r4g4b4: self.format_a4r4g4b4 && other.format_a4r4g4b4, 6814 format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler 6815 && other.format_rgba10x6_without_y_cb_cr_sampler, 6816 fragment_density_map: self.fragment_density_map && other.fragment_density_map, 6817 fragment_density_map_deferred: self.fragment_density_map_deferred 6818 && other.fragment_density_map_deferred, 6819 fragment_density_map_dynamic: self.fragment_density_map_dynamic 6820 && other.fragment_density_map_dynamic, 6821 fragment_density_map_non_subsampled_images: self 6822 .fragment_density_map_non_subsampled_images 6823 && other.fragment_density_map_non_subsampled_images, 6824 fragment_density_map_offset: self.fragment_density_map_offset 6825 && other.fragment_density_map_offset, 6826 fragment_shader_barycentric: self.fragment_shader_barycentric 6827 && other.fragment_shader_barycentric, 6828 fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock 6829 && other.fragment_shader_pixel_interlock, 6830 fragment_shader_sample_interlock: self.fragment_shader_sample_interlock 6831 && other.fragment_shader_sample_interlock, 6832 fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock 6833 && other.fragment_shader_shading_rate_interlock, 6834 fragment_shading_rate_enums: self.fragment_shading_rate_enums 6835 && other.fragment_shading_rate_enums, 6836 fragment_stores_and_atomics: self.fragment_stores_and_atomics 6837 && other.fragment_stores_and_atomics, 6838 full_draw_index_uint32: self.full_draw_index_uint32 && other.full_draw_index_uint32, 6839 geometry_shader: self.geometry_shader && other.geometry_shader, 6840 geometry_streams: self.geometry_streams && other.geometry_streams, 6841 global_priority_query: self.global_priority_query && other.global_priority_query, 6842 graphics_pipeline_library: self.graphics_pipeline_library 6843 && other.graphics_pipeline_library, 6844 host_query_reset: self.host_query_reset && other.host_query_reset, 6845 image2_d_view_of3_d: self.image2_d_view_of3_d && other.image2_d_view_of3_d, 6846 image_compression_control: self.image_compression_control 6847 && other.image_compression_control, 6848 image_compression_control_swapchain: self.image_compression_control_swapchain 6849 && other.image_compression_control_swapchain, 6850 image_cube_array: self.image_cube_array && other.image_cube_array, 6851 image_footprint: self.image_footprint && other.image_footprint, 6852 image_view2_d_on3_d_image: self.image_view2_d_on3_d_image 6853 && other.image_view2_d_on3_d_image, 6854 image_view_format_reinterpretation: self.image_view_format_reinterpretation 6855 && other.image_view_format_reinterpretation, 6856 image_view_format_swizzle: self.image_view_format_swizzle 6857 && other.image_view_format_swizzle, 6858 imageless_framebuffer: self.imageless_framebuffer && other.imageless_framebuffer, 6859 independent_blend: self.independent_blend && other.independent_blend, 6860 index_type_uint8: self.index_type_uint8 && other.index_type_uint8, 6861 indirect_copy: self.indirect_copy && other.indirect_copy, 6862 inherited_conditional_rendering: self.inherited_conditional_rendering 6863 && other.inherited_conditional_rendering, 6864 inherited_queries: self.inherited_queries && other.inherited_queries, 6865 inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d 6866 && other.inherited_viewport_scissor2_d, 6867 inline_uniform_block: self.inline_uniform_block && other.inline_uniform_block, 6868 invocation_mask: self.invocation_mask && other.invocation_mask, 6869 large_points: self.large_points && other.large_points, 6870 legacy_dithering: self.legacy_dithering && other.legacy_dithering, 6871 linear_color_attachment: self.linear_color_attachment && other.linear_color_attachment, 6872 logic_op: self.logic_op && other.logic_op, 6873 maintenance4: self.maintenance4 && other.maintenance4, 6874 memory_decompression: self.memory_decompression && other.memory_decompression, 6875 memory_priority: self.memory_priority && other.memory_priority, 6876 mesh_shader: self.mesh_shader && other.mesh_shader, 6877 mesh_shader_queries: self.mesh_shader_queries && other.mesh_shader_queries, 6878 micromap: self.micromap && other.micromap, 6879 micromap_capture_replay: self.micromap_capture_replay && other.micromap_capture_replay, 6880 micromap_host_commands: self.micromap_host_commands && other.micromap_host_commands, 6881 min_lod: self.min_lod && other.min_lod, 6882 multi_draw: self.multi_draw && other.multi_draw, 6883 multi_draw_indirect: self.multi_draw_indirect && other.multi_draw_indirect, 6884 multi_viewport: self.multi_viewport && other.multi_viewport, 6885 multisample_array_image: self.multisample_array_image && other.multisample_array_image, 6886 multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled 6887 && other.multisampled_render_to_single_sampled, 6888 multiview: self.multiview && other.multiview, 6889 multiview_geometry_shader: self.multiview_geometry_shader 6890 && other.multiview_geometry_shader, 6891 multiview_mesh_shader: self.multiview_mesh_shader && other.multiview_mesh_shader, 6892 multiview_per_view_viewports: self.multiview_per_view_viewports 6893 && other.multiview_per_view_viewports, 6894 multiview_tessellation_shader: self.multiview_tessellation_shader 6895 && other.multiview_tessellation_shader, 6896 mutable_comparison_samplers: self.mutable_comparison_samplers 6897 && other.mutable_comparison_samplers, 6898 mutable_descriptor_type: self.mutable_descriptor_type && other.mutable_descriptor_type, 6899 no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates 6900 && other.no_invocation_fragment_shading_rates, 6901 non_seamless_cube_map: self.non_seamless_cube_map && other.non_seamless_cube_map, 6902 null_descriptor: self.null_descriptor && other.null_descriptor, 6903 occlusion_query_precise: self.occlusion_query_precise && other.occlusion_query_precise, 6904 optical_flow: self.optical_flow && other.optical_flow, 6905 pageable_device_local_memory: self.pageable_device_local_memory 6906 && other.pageable_device_local_memory, 6907 performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools 6908 && other.performance_counter_multiple_query_pools, 6909 performance_counter_query_pools: self.performance_counter_query_pools 6910 && other.performance_counter_query_pools, 6911 pipeline_creation_cache_control: self.pipeline_creation_cache_control 6912 && other.pipeline_creation_cache_control, 6913 pipeline_executable_info: self.pipeline_executable_info 6914 && other.pipeline_executable_info, 6915 pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate 6916 && other.pipeline_fragment_shading_rate, 6917 pipeline_properties_identifier: self.pipeline_properties_identifier 6918 && other.pipeline_properties_identifier, 6919 pipeline_protected_access: self.pipeline_protected_access 6920 && other.pipeline_protected_access, 6921 pipeline_robustness: self.pipeline_robustness && other.pipeline_robustness, 6922 pipeline_statistics_query: self.pipeline_statistics_query 6923 && other.pipeline_statistics_query, 6924 point_polygons: self.point_polygons && other.point_polygons, 6925 present_barrier: self.present_barrier && other.present_barrier, 6926 present_id: self.present_id && other.present_id, 6927 present_wait: self.present_wait && other.present_wait, 6928 primitive_fragment_shading_rate: self.primitive_fragment_shading_rate 6929 && other.primitive_fragment_shading_rate, 6930 primitive_fragment_shading_rate_mesh_shader: self 6931 .primitive_fragment_shading_rate_mesh_shader 6932 && other.primitive_fragment_shading_rate_mesh_shader, 6933 primitive_topology_list_restart: self.primitive_topology_list_restart 6934 && other.primitive_topology_list_restart, 6935 primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart 6936 && other.primitive_topology_patch_list_restart, 6937 primitives_generated_query: self.primitives_generated_query 6938 && other.primitives_generated_query, 6939 primitives_generated_query_with_non_zero_streams: self 6940 .primitives_generated_query_with_non_zero_streams 6941 && other.primitives_generated_query_with_non_zero_streams, 6942 primitives_generated_query_with_rasterizer_discard: self 6943 .primitives_generated_query_with_rasterizer_discard 6944 && other.primitives_generated_query_with_rasterizer_discard, 6945 private_data: self.private_data && other.private_data, 6946 protected_memory: self.protected_memory && other.protected_memory, 6947 provoking_vertex_last: self.provoking_vertex_last && other.provoking_vertex_last, 6948 rasterization_order_color_attachment_access: self 6949 .rasterization_order_color_attachment_access 6950 && other.rasterization_order_color_attachment_access, 6951 rasterization_order_depth_attachment_access: self 6952 .rasterization_order_depth_attachment_access 6953 && other.rasterization_order_depth_attachment_access, 6954 rasterization_order_stencil_attachment_access: self 6955 .rasterization_order_stencil_attachment_access 6956 && other.rasterization_order_stencil_attachment_access, 6957 ray_query: self.ray_query && other.ray_query, 6958 ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder 6959 && other.ray_tracing_invocation_reorder, 6960 ray_tracing_maintenance1: self.ray_tracing_maintenance1 6961 && other.ray_tracing_maintenance1, 6962 ray_tracing_motion_blur: self.ray_tracing_motion_blur && other.ray_tracing_motion_blur, 6963 ray_tracing_motion_blur_pipeline_trace_rays_indirect: self 6964 .ray_tracing_motion_blur_pipeline_trace_rays_indirect 6965 && other.ray_tracing_motion_blur_pipeline_trace_rays_indirect, 6966 ray_tracing_pipeline: self.ray_tracing_pipeline && other.ray_tracing_pipeline, 6967 ray_tracing_pipeline_shader_group_handle_capture_replay: self 6968 .ray_tracing_pipeline_shader_group_handle_capture_replay 6969 && other.ray_tracing_pipeline_shader_group_handle_capture_replay, 6970 ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self 6971 .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed 6972 && other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed, 6973 ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect 6974 && other.ray_tracing_pipeline_trace_rays_indirect, 6975 ray_tracing_pipeline_trace_rays_indirect2: self 6976 .ray_tracing_pipeline_trace_rays_indirect2 6977 && other.ray_tracing_pipeline_trace_rays_indirect2, 6978 ray_traversal_primitive_culling: self.ray_traversal_primitive_culling 6979 && other.ray_traversal_primitive_culling, 6980 rectangular_lines: self.rectangular_lines && other.rectangular_lines, 6981 report_address_binding: self.report_address_binding && other.report_address_binding, 6982 representative_fragment_test: self.representative_fragment_test 6983 && other.representative_fragment_test, 6984 robust_buffer_access: self.robust_buffer_access && other.robust_buffer_access, 6985 robust_buffer_access2: self.robust_buffer_access2 && other.robust_buffer_access2, 6986 robust_image_access: self.robust_image_access && other.robust_image_access, 6987 robust_image_access2: self.robust_image_access2 && other.robust_image_access2, 6988 runtime_descriptor_array: self.runtime_descriptor_array 6989 && other.runtime_descriptor_array, 6990 sample_rate_shading: self.sample_rate_shading && other.sample_rate_shading, 6991 sampler2_d_view_of3_d: self.sampler2_d_view_of3_d && other.sampler2_d_view_of3_d, 6992 sampler_anisotropy: self.sampler_anisotropy && other.sampler_anisotropy, 6993 sampler_filter_minmax: self.sampler_filter_minmax && other.sampler_filter_minmax, 6994 sampler_mip_lod_bias: self.sampler_mip_lod_bias && other.sampler_mip_lod_bias, 6995 sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge 6996 && other.sampler_mirror_clamp_to_edge, 6997 sampler_ycbcr_conversion: self.sampler_ycbcr_conversion 6998 && other.sampler_ycbcr_conversion, 6999 scalar_block_layout: self.scalar_block_layout && other.scalar_block_layout, 7000 separate_depth_stencil_layouts: self.separate_depth_stencil_layouts 7001 && other.separate_depth_stencil_layouts, 7002 separate_stencil_mask_ref: self.separate_stencil_mask_ref 7003 && other.separate_stencil_mask_ref, 7004 shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add 7005 && other.shader_buffer_float16_atomic_add, 7006 shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max 7007 && other.shader_buffer_float16_atomic_min_max, 7008 shader_buffer_float16_atomics: self.shader_buffer_float16_atomics 7009 && other.shader_buffer_float16_atomics, 7010 shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add 7011 && other.shader_buffer_float32_atomic_add, 7012 shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max 7013 && other.shader_buffer_float32_atomic_min_max, 7014 shader_buffer_float32_atomics: self.shader_buffer_float32_atomics 7015 && other.shader_buffer_float32_atomics, 7016 shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add 7017 && other.shader_buffer_float64_atomic_add, 7018 shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max 7019 && other.shader_buffer_float64_atomic_min_max, 7020 shader_buffer_float64_atomics: self.shader_buffer_float64_atomics 7021 && other.shader_buffer_float64_atomics, 7022 shader_buffer_int64_atomics: self.shader_buffer_int64_atomics 7023 && other.shader_buffer_int64_atomics, 7024 shader_clip_distance: self.shader_clip_distance && other.shader_clip_distance, 7025 shader_core_builtins: self.shader_core_builtins && other.shader_core_builtins, 7026 shader_cull_distance: self.shader_cull_distance && other.shader_cull_distance, 7027 shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation 7028 && other.shader_demote_to_helper_invocation, 7029 shader_device_clock: self.shader_device_clock && other.shader_device_clock, 7030 shader_draw_parameters: self.shader_draw_parameters && other.shader_draw_parameters, 7031 shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests 7032 && other.shader_early_and_late_fragment_tests, 7033 shader_float16: self.shader_float16 && other.shader_float16, 7034 shader_float64: self.shader_float64 && other.shader_float64, 7035 shader_image_float32_atomic_add: self.shader_image_float32_atomic_add 7036 && other.shader_image_float32_atomic_add, 7037 shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max 7038 && other.shader_image_float32_atomic_min_max, 7039 shader_image_float32_atomics: self.shader_image_float32_atomics 7040 && other.shader_image_float32_atomics, 7041 shader_image_gather_extended: self.shader_image_gather_extended 7042 && other.shader_image_gather_extended, 7043 shader_image_int64_atomics: self.shader_image_int64_atomics 7044 && other.shader_image_int64_atomics, 7045 shader_input_attachment_array_dynamic_indexing: self 7046 .shader_input_attachment_array_dynamic_indexing 7047 && other.shader_input_attachment_array_dynamic_indexing, 7048 shader_input_attachment_array_non_uniform_indexing: self 7049 .shader_input_attachment_array_non_uniform_indexing 7050 && other.shader_input_attachment_array_non_uniform_indexing, 7051 shader_int16: self.shader_int16 && other.shader_int16, 7052 shader_int64: self.shader_int64 && other.shader_int64, 7053 shader_int8: self.shader_int8 && other.shader_int8, 7054 shader_integer_dot_product: self.shader_integer_dot_product 7055 && other.shader_integer_dot_product, 7056 shader_integer_functions2: self.shader_integer_functions2 7057 && other.shader_integer_functions2, 7058 shader_module_identifier: self.shader_module_identifier 7059 && other.shader_module_identifier, 7060 shader_output_layer: self.shader_output_layer && other.shader_output_layer, 7061 shader_output_viewport_index: self.shader_output_viewport_index 7062 && other.shader_output_viewport_index, 7063 shader_resource_min_lod: self.shader_resource_min_lod && other.shader_resource_min_lod, 7064 shader_resource_residency: self.shader_resource_residency 7065 && other.shader_resource_residency, 7066 shader_sample_rate_interpolation_functions: self 7067 .shader_sample_rate_interpolation_functions 7068 && other.shader_sample_rate_interpolation_functions, 7069 shader_sampled_image_array_dynamic_indexing: self 7070 .shader_sampled_image_array_dynamic_indexing 7071 && other.shader_sampled_image_array_dynamic_indexing, 7072 shader_sampled_image_array_non_uniform_indexing: self 7073 .shader_sampled_image_array_non_uniform_indexing 7074 && other.shader_sampled_image_array_non_uniform_indexing, 7075 shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add 7076 && other.shader_shared_float16_atomic_add, 7077 shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max 7078 && other.shader_shared_float16_atomic_min_max, 7079 shader_shared_float16_atomics: self.shader_shared_float16_atomics 7080 && other.shader_shared_float16_atomics, 7081 shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add 7082 && other.shader_shared_float32_atomic_add, 7083 shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max 7084 && other.shader_shared_float32_atomic_min_max, 7085 shader_shared_float32_atomics: self.shader_shared_float32_atomics 7086 && other.shader_shared_float32_atomics, 7087 shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add 7088 && other.shader_shared_float64_atomic_add, 7089 shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max 7090 && other.shader_shared_float64_atomic_min_max, 7091 shader_shared_float64_atomics: self.shader_shared_float64_atomics 7092 && other.shader_shared_float64_atomics, 7093 shader_shared_int64_atomics: self.shader_shared_int64_atomics 7094 && other.shader_shared_int64_atomics, 7095 shader_sm_builtins: self.shader_sm_builtins && other.shader_sm_builtins, 7096 shader_storage_buffer_array_dynamic_indexing: self 7097 .shader_storage_buffer_array_dynamic_indexing 7098 && other.shader_storage_buffer_array_dynamic_indexing, 7099 shader_storage_buffer_array_non_uniform_indexing: self 7100 .shader_storage_buffer_array_non_uniform_indexing 7101 && other.shader_storage_buffer_array_non_uniform_indexing, 7102 shader_storage_image_array_dynamic_indexing: self 7103 .shader_storage_image_array_dynamic_indexing 7104 && other.shader_storage_image_array_dynamic_indexing, 7105 shader_storage_image_array_non_uniform_indexing: self 7106 .shader_storage_image_array_non_uniform_indexing 7107 && other.shader_storage_image_array_non_uniform_indexing, 7108 shader_storage_image_extended_formats: self.shader_storage_image_extended_formats 7109 && other.shader_storage_image_extended_formats, 7110 shader_storage_image_multisample: self.shader_storage_image_multisample 7111 && other.shader_storage_image_multisample, 7112 shader_storage_image_read_without_format: self.shader_storage_image_read_without_format 7113 && other.shader_storage_image_read_without_format, 7114 shader_storage_image_write_without_format: self 7115 .shader_storage_image_write_without_format 7116 && other.shader_storage_image_write_without_format, 7117 shader_storage_texel_buffer_array_dynamic_indexing: self 7118 .shader_storage_texel_buffer_array_dynamic_indexing 7119 && other.shader_storage_texel_buffer_array_dynamic_indexing, 7120 shader_storage_texel_buffer_array_non_uniform_indexing: self 7121 .shader_storage_texel_buffer_array_non_uniform_indexing 7122 && other.shader_storage_texel_buffer_array_non_uniform_indexing, 7123 shader_subgroup_clock: self.shader_subgroup_clock && other.shader_subgroup_clock, 7124 shader_subgroup_extended_types: self.shader_subgroup_extended_types 7125 && other.shader_subgroup_extended_types, 7126 shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow 7127 && other.shader_subgroup_uniform_control_flow, 7128 shader_terminate_invocation: self.shader_terminate_invocation 7129 && other.shader_terminate_invocation, 7130 shader_tessellation_and_geometry_point_size: self 7131 .shader_tessellation_and_geometry_point_size 7132 && other.shader_tessellation_and_geometry_point_size, 7133 shader_uniform_buffer_array_dynamic_indexing: self 7134 .shader_uniform_buffer_array_dynamic_indexing 7135 && other.shader_uniform_buffer_array_dynamic_indexing, 7136 shader_uniform_buffer_array_non_uniform_indexing: self 7137 .shader_uniform_buffer_array_non_uniform_indexing 7138 && other.shader_uniform_buffer_array_non_uniform_indexing, 7139 shader_uniform_texel_buffer_array_dynamic_indexing: self 7140 .shader_uniform_texel_buffer_array_dynamic_indexing 7141 && other.shader_uniform_texel_buffer_array_dynamic_indexing, 7142 shader_uniform_texel_buffer_array_non_uniform_indexing: self 7143 .shader_uniform_texel_buffer_array_non_uniform_indexing 7144 && other.shader_uniform_texel_buffer_array_non_uniform_indexing, 7145 shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory 7146 && other.shader_zero_initialize_workgroup_memory, 7147 shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order 7148 && other.shading_rate_coarse_sample_order, 7149 shading_rate_image: self.shading_rate_image && other.shading_rate_image, 7150 smooth_lines: self.smooth_lines && other.smooth_lines, 7151 sparse_binding: self.sparse_binding && other.sparse_binding, 7152 sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add 7153 && other.sparse_image_float32_atomic_add, 7154 sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max 7155 && other.sparse_image_float32_atomic_min_max, 7156 sparse_image_float32_atomics: self.sparse_image_float32_atomics 7157 && other.sparse_image_float32_atomics, 7158 sparse_image_int64_atomics: self.sparse_image_int64_atomics 7159 && other.sparse_image_int64_atomics, 7160 sparse_residency16_samples: self.sparse_residency16_samples 7161 && other.sparse_residency16_samples, 7162 sparse_residency2_samples: self.sparse_residency2_samples 7163 && other.sparse_residency2_samples, 7164 sparse_residency4_samples: self.sparse_residency4_samples 7165 && other.sparse_residency4_samples, 7166 sparse_residency8_samples: self.sparse_residency8_samples 7167 && other.sparse_residency8_samples, 7168 sparse_residency_aliased: self.sparse_residency_aliased 7169 && other.sparse_residency_aliased, 7170 sparse_residency_buffer: self.sparse_residency_buffer && other.sparse_residency_buffer, 7171 sparse_residency_image2_d: self.sparse_residency_image2_d 7172 && other.sparse_residency_image2_d, 7173 sparse_residency_image3_d: self.sparse_residency_image3_d 7174 && other.sparse_residency_image3_d, 7175 stippled_bresenham_lines: self.stippled_bresenham_lines 7176 && other.stippled_bresenham_lines, 7177 stippled_rectangular_lines: self.stippled_rectangular_lines 7178 && other.stippled_rectangular_lines, 7179 stippled_smooth_lines: self.stippled_smooth_lines && other.stippled_smooth_lines, 7180 storage_buffer16_bit_access: self.storage_buffer16_bit_access 7181 && other.storage_buffer16_bit_access, 7182 storage_buffer8_bit_access: self.storage_buffer8_bit_access 7183 && other.storage_buffer8_bit_access, 7184 storage_input_output16: self.storage_input_output16 && other.storage_input_output16, 7185 storage_push_constant16: self.storage_push_constant16 && other.storage_push_constant16, 7186 storage_push_constant8: self.storage_push_constant8 && other.storage_push_constant8, 7187 subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id 7188 && other.subgroup_broadcast_dynamic_id, 7189 subgroup_size_control: self.subgroup_size_control && other.subgroup_size_control, 7190 subpass_merge_feedback: self.subpass_merge_feedback && other.subpass_merge_feedback, 7191 subpass_shading: self.subpass_shading && other.subpass_shading, 7192 supersample_fragment_shading_rates: self.supersample_fragment_shading_rates 7193 && other.supersample_fragment_shading_rates, 7194 swapchain_maintenance1: self.swapchain_maintenance1 && other.swapchain_maintenance1, 7195 synchronization2: self.synchronization2 && other.synchronization2, 7196 task_shader: self.task_shader && other.task_shader, 7197 tessellation_isolines: self.tessellation_isolines && other.tessellation_isolines, 7198 tessellation_point_mode: self.tessellation_point_mode && other.tessellation_point_mode, 7199 tessellation_shader: self.tessellation_shader && other.tessellation_shader, 7200 texel_buffer_alignment: self.texel_buffer_alignment && other.texel_buffer_alignment, 7201 texture_block_match: self.texture_block_match && other.texture_block_match, 7202 texture_box_filter: self.texture_box_filter && other.texture_box_filter, 7203 texture_compression_astc_hdr: self.texture_compression_astc_hdr 7204 && other.texture_compression_astc_hdr, 7205 texture_compression_astc_ldr: self.texture_compression_astc_ldr 7206 && other.texture_compression_astc_ldr, 7207 texture_compression_bc: self.texture_compression_bc && other.texture_compression_bc, 7208 texture_compression_etc2: self.texture_compression_etc2 7209 && other.texture_compression_etc2, 7210 texture_sample_weighted: self.texture_sample_weighted && other.texture_sample_weighted, 7211 tile_properties: self.tile_properties && other.tile_properties, 7212 timeline_semaphore: self.timeline_semaphore && other.timeline_semaphore, 7213 transform_feedback: self.transform_feedback && other.transform_feedback, 7214 transform_feedback_preserves_provoking_vertex: self 7215 .transform_feedback_preserves_provoking_vertex 7216 && other.transform_feedback_preserves_provoking_vertex, 7217 triangle_fans: self.triangle_fans && other.triangle_fans, 7218 uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access 7219 && other.uniform_and_storage_buffer16_bit_access, 7220 uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access 7221 && other.uniform_and_storage_buffer8_bit_access, 7222 uniform_buffer_standard_layout: self.uniform_buffer_standard_layout 7223 && other.uniform_buffer_standard_layout, 7224 variable_multisample_rate: self.variable_multisample_rate 7225 && other.variable_multisample_rate, 7226 variable_pointers: self.variable_pointers && other.variable_pointers, 7227 variable_pointers_storage_buffer: self.variable_pointers_storage_buffer 7228 && other.variable_pointers_storage_buffer, 7229 vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride 7230 && other.vertex_attribute_access_beyond_stride, 7231 vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor 7232 && other.vertex_attribute_instance_rate_divisor, 7233 vertex_attribute_instance_rate_zero_divisor: self 7234 .vertex_attribute_instance_rate_zero_divisor 7235 && other.vertex_attribute_instance_rate_zero_divisor, 7236 vertex_input_dynamic_state: self.vertex_input_dynamic_state 7237 && other.vertex_input_dynamic_state, 7238 vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics 7239 && other.vertex_pipeline_stores_and_atomics, 7240 vulkan_memory_model: self.vulkan_memory_model && other.vulkan_memory_model, 7241 vulkan_memory_model_availability_visibility_chains: self 7242 .vulkan_memory_model_availability_visibility_chains 7243 && other.vulkan_memory_model_availability_visibility_chains, 7244 vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope 7245 && other.vulkan_memory_model_device_scope, 7246 wide_lines: self.wide_lines && other.wide_lines, 7247 workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout 7248 && other.workgroup_memory_explicit_layout, 7249 workgroup_memory_explicit_layout16_bit_access: self 7250 .workgroup_memory_explicit_layout16_bit_access 7251 && other.workgroup_memory_explicit_layout16_bit_access, 7252 workgroup_memory_explicit_layout8_bit_access: self 7253 .workgroup_memory_explicit_layout8_bit_access 7254 && other.workgroup_memory_explicit_layout8_bit_access, 7255 workgroup_memory_explicit_layout_scalar_block_layout: self 7256 .workgroup_memory_explicit_layout_scalar_block_layout 7257 && other.workgroup_memory_explicit_layout_scalar_block_layout, 7258 ycbcr2plane444_formats: self.ycbcr2plane444_formats && other.ycbcr2plane444_formats, 7259 ycbcr_image_arrays: self.ycbcr_image_arrays && other.ycbcr_image_arrays, 7260 _ne: crate::NonExhaustive(()), 7261 } 7262 } 7263 #[doc = r" Returns `self` without the members set in `other`."] 7264 #[inline] difference(&self, other: &Self) -> Self7265 pub const fn difference(&self, other: &Self) -> Self { 7266 Self { 7267 acceleration_structure: self.acceleration_structure && !other.acceleration_structure, 7268 acceleration_structure_capture_replay: self.acceleration_structure_capture_replay 7269 && !other.acceleration_structure_capture_replay, 7270 acceleration_structure_host_commands: self.acceleration_structure_host_commands 7271 && !other.acceleration_structure_host_commands, 7272 acceleration_structure_indirect_build: self.acceleration_structure_indirect_build 7273 && !other.acceleration_structure_indirect_build, 7274 advanced_blend_coherent_operations: self.advanced_blend_coherent_operations 7275 && !other.advanced_blend_coherent_operations, 7276 alpha_to_one: self.alpha_to_one && !other.alpha_to_one, 7277 amigo_profiling: self.amigo_profiling && !other.amigo_profiling, 7278 attachment_feedback_loop_layout: self.attachment_feedback_loop_layout 7279 && !other.attachment_feedback_loop_layout, 7280 attachment_fragment_shading_rate: self.attachment_fragment_shading_rate 7281 && !other.attachment_fragment_shading_rate, 7282 border_color_swizzle: self.border_color_swizzle && !other.border_color_swizzle, 7283 border_color_swizzle_from_image: self.border_color_swizzle_from_image 7284 && !other.border_color_swizzle_from_image, 7285 bresenham_lines: self.bresenham_lines && !other.bresenham_lines, 7286 buffer_device_address: self.buffer_device_address && !other.buffer_device_address, 7287 buffer_device_address_capture_replay: self.buffer_device_address_capture_replay 7288 && !other.buffer_device_address_capture_replay, 7289 buffer_device_address_multi_device: self.buffer_device_address_multi_device 7290 && !other.buffer_device_address_multi_device, 7291 color_write_enable: self.color_write_enable && !other.color_write_enable, 7292 compute_derivative_group_linear: self.compute_derivative_group_linear 7293 && !other.compute_derivative_group_linear, 7294 compute_derivative_group_quads: self.compute_derivative_group_quads 7295 && !other.compute_derivative_group_quads, 7296 compute_full_subgroups: self.compute_full_subgroups && !other.compute_full_subgroups, 7297 conditional_rendering: self.conditional_rendering && !other.conditional_rendering, 7298 constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors 7299 && !other.constant_alpha_color_blend_factors, 7300 cooperative_matrix: self.cooperative_matrix && !other.cooperative_matrix, 7301 cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access 7302 && !other.cooperative_matrix_robust_buffer_access, 7303 corner_sampled_image: self.corner_sampled_image && !other.corner_sampled_image, 7304 coverage_reduction_mode: self.coverage_reduction_mode && !other.coverage_reduction_mode, 7305 custom_border_color_without_format: self.custom_border_color_without_format 7306 && !other.custom_border_color_without_format, 7307 custom_border_colors: self.custom_border_colors && !other.custom_border_colors, 7308 decode_mode_shared_exponent: self.decode_mode_shared_exponent 7309 && !other.decode_mode_shared_exponent, 7310 dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing 7311 && !other.dedicated_allocation_image_aliasing, 7312 depth_bias_clamp: self.depth_bias_clamp && !other.depth_bias_clamp, 7313 depth_bounds: self.depth_bounds && !other.depth_bounds, 7314 depth_clamp: self.depth_clamp && !other.depth_clamp, 7315 depth_clamp_zero_one: self.depth_clamp_zero_one && !other.depth_clamp_zero_one, 7316 depth_clip_control: self.depth_clip_control && !other.depth_clip_control, 7317 depth_clip_enable: self.depth_clip_enable && !other.depth_clip_enable, 7318 descriptor_binding_acceleration_structure_update_after_bind: self 7319 .descriptor_binding_acceleration_structure_update_after_bind 7320 && !other.descriptor_binding_acceleration_structure_update_after_bind, 7321 descriptor_binding_inline_uniform_block_update_after_bind: self 7322 .descriptor_binding_inline_uniform_block_update_after_bind 7323 && !other.descriptor_binding_inline_uniform_block_update_after_bind, 7324 descriptor_binding_partially_bound: self.descriptor_binding_partially_bound 7325 && !other.descriptor_binding_partially_bound, 7326 descriptor_binding_sampled_image_update_after_bind: self 7327 .descriptor_binding_sampled_image_update_after_bind 7328 && !other.descriptor_binding_sampled_image_update_after_bind, 7329 descriptor_binding_storage_buffer_update_after_bind: self 7330 .descriptor_binding_storage_buffer_update_after_bind 7331 && !other.descriptor_binding_storage_buffer_update_after_bind, 7332 descriptor_binding_storage_image_update_after_bind: self 7333 .descriptor_binding_storage_image_update_after_bind 7334 && !other.descriptor_binding_storage_image_update_after_bind, 7335 descriptor_binding_storage_texel_buffer_update_after_bind: self 7336 .descriptor_binding_storage_texel_buffer_update_after_bind 7337 && !other.descriptor_binding_storage_texel_buffer_update_after_bind, 7338 descriptor_binding_uniform_buffer_update_after_bind: self 7339 .descriptor_binding_uniform_buffer_update_after_bind 7340 && !other.descriptor_binding_uniform_buffer_update_after_bind, 7341 descriptor_binding_uniform_texel_buffer_update_after_bind: self 7342 .descriptor_binding_uniform_texel_buffer_update_after_bind 7343 && !other.descriptor_binding_uniform_texel_buffer_update_after_bind, 7344 descriptor_binding_update_unused_while_pending: self 7345 .descriptor_binding_update_unused_while_pending 7346 && !other.descriptor_binding_update_unused_while_pending, 7347 descriptor_binding_variable_descriptor_count: self 7348 .descriptor_binding_variable_descriptor_count 7349 && !other.descriptor_binding_variable_descriptor_count, 7350 descriptor_buffer: self.descriptor_buffer && !other.descriptor_buffer, 7351 descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay 7352 && !other.descriptor_buffer_capture_replay, 7353 descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored 7354 && !other.descriptor_buffer_image_layout_ignored, 7355 descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors 7356 && !other.descriptor_buffer_push_descriptors, 7357 descriptor_indexing: self.descriptor_indexing && !other.descriptor_indexing, 7358 descriptor_set_host_mapping: self.descriptor_set_host_mapping 7359 && !other.descriptor_set_host_mapping, 7360 device_coherent_memory: self.device_coherent_memory && !other.device_coherent_memory, 7361 device_fault: self.device_fault && !other.device_fault, 7362 device_fault_vendor_binary: self.device_fault_vendor_binary 7363 && !other.device_fault_vendor_binary, 7364 device_generated_commands: self.device_generated_commands 7365 && !other.device_generated_commands, 7366 device_memory_report: self.device_memory_report && !other.device_memory_report, 7367 diagnostics_config: self.diagnostics_config && !other.diagnostics_config, 7368 draw_indirect_count: self.draw_indirect_count && !other.draw_indirect_count, 7369 draw_indirect_first_instance: self.draw_indirect_first_instance 7370 && !other.draw_indirect_first_instance, 7371 dual_src_blend: self.dual_src_blend && !other.dual_src_blend, 7372 dynamic_rendering: self.dynamic_rendering && !other.dynamic_rendering, 7373 events: self.events && !other.events, 7374 exclusive_scissor: self.exclusive_scissor && !other.exclusive_scissor, 7375 extended_dynamic_state: self.extended_dynamic_state && !other.extended_dynamic_state, 7376 extended_dynamic_state2: self.extended_dynamic_state2 && !other.extended_dynamic_state2, 7377 extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op 7378 && !other.extended_dynamic_state2_logic_op, 7379 extended_dynamic_state2_patch_control_points: self 7380 .extended_dynamic_state2_patch_control_points 7381 && !other.extended_dynamic_state2_patch_control_points, 7382 extended_dynamic_state3_alpha_to_coverage_enable: self 7383 .extended_dynamic_state3_alpha_to_coverage_enable 7384 && !other.extended_dynamic_state3_alpha_to_coverage_enable, 7385 extended_dynamic_state3_alpha_to_one_enable: self 7386 .extended_dynamic_state3_alpha_to_one_enable 7387 && !other.extended_dynamic_state3_alpha_to_one_enable, 7388 extended_dynamic_state3_color_blend_advanced: self 7389 .extended_dynamic_state3_color_blend_advanced 7390 && !other.extended_dynamic_state3_color_blend_advanced, 7391 extended_dynamic_state3_color_blend_enable: self 7392 .extended_dynamic_state3_color_blend_enable 7393 && !other.extended_dynamic_state3_color_blend_enable, 7394 extended_dynamic_state3_color_blend_equation: self 7395 .extended_dynamic_state3_color_blend_equation 7396 && !other.extended_dynamic_state3_color_blend_equation, 7397 extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask 7398 && !other.extended_dynamic_state3_color_write_mask, 7399 extended_dynamic_state3_conservative_rasterization_mode: self 7400 .extended_dynamic_state3_conservative_rasterization_mode 7401 && !other.extended_dynamic_state3_conservative_rasterization_mode, 7402 extended_dynamic_state3_coverage_modulation_mode: self 7403 .extended_dynamic_state3_coverage_modulation_mode 7404 && !other.extended_dynamic_state3_coverage_modulation_mode, 7405 extended_dynamic_state3_coverage_modulation_table: self 7406 .extended_dynamic_state3_coverage_modulation_table 7407 && !other.extended_dynamic_state3_coverage_modulation_table, 7408 extended_dynamic_state3_coverage_modulation_table_enable: self 7409 .extended_dynamic_state3_coverage_modulation_table_enable 7410 && !other.extended_dynamic_state3_coverage_modulation_table_enable, 7411 extended_dynamic_state3_coverage_reduction_mode: self 7412 .extended_dynamic_state3_coverage_reduction_mode 7413 && !other.extended_dynamic_state3_coverage_reduction_mode, 7414 extended_dynamic_state3_coverage_to_color_enable: self 7415 .extended_dynamic_state3_coverage_to_color_enable 7416 && !other.extended_dynamic_state3_coverage_to_color_enable, 7417 extended_dynamic_state3_coverage_to_color_location: self 7418 .extended_dynamic_state3_coverage_to_color_location 7419 && !other.extended_dynamic_state3_coverage_to_color_location, 7420 extended_dynamic_state3_depth_clamp_enable: self 7421 .extended_dynamic_state3_depth_clamp_enable 7422 && !other.extended_dynamic_state3_depth_clamp_enable, 7423 extended_dynamic_state3_depth_clip_enable: self 7424 .extended_dynamic_state3_depth_clip_enable 7425 && !other.extended_dynamic_state3_depth_clip_enable, 7426 extended_dynamic_state3_depth_clip_negative_one_to_one: self 7427 .extended_dynamic_state3_depth_clip_negative_one_to_one 7428 && !other.extended_dynamic_state3_depth_clip_negative_one_to_one, 7429 extended_dynamic_state3_extra_primitive_overestimation_size: self 7430 .extended_dynamic_state3_extra_primitive_overestimation_size 7431 && !other.extended_dynamic_state3_extra_primitive_overestimation_size, 7432 extended_dynamic_state3_line_rasterization_mode: self 7433 .extended_dynamic_state3_line_rasterization_mode 7434 && !other.extended_dynamic_state3_line_rasterization_mode, 7435 extended_dynamic_state3_line_stipple_enable: self 7436 .extended_dynamic_state3_line_stipple_enable 7437 && !other.extended_dynamic_state3_line_stipple_enable, 7438 extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable 7439 && !other.extended_dynamic_state3_logic_op_enable, 7440 extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode 7441 && !other.extended_dynamic_state3_polygon_mode, 7442 extended_dynamic_state3_provoking_vertex_mode: self 7443 .extended_dynamic_state3_provoking_vertex_mode 7444 && !other.extended_dynamic_state3_provoking_vertex_mode, 7445 extended_dynamic_state3_rasterization_samples: self 7446 .extended_dynamic_state3_rasterization_samples 7447 && !other.extended_dynamic_state3_rasterization_samples, 7448 extended_dynamic_state3_rasterization_stream: self 7449 .extended_dynamic_state3_rasterization_stream 7450 && !other.extended_dynamic_state3_rasterization_stream, 7451 extended_dynamic_state3_representative_fragment_test_enable: self 7452 .extended_dynamic_state3_representative_fragment_test_enable 7453 && !other.extended_dynamic_state3_representative_fragment_test_enable, 7454 extended_dynamic_state3_sample_locations_enable: self 7455 .extended_dynamic_state3_sample_locations_enable 7456 && !other.extended_dynamic_state3_sample_locations_enable, 7457 extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask 7458 && !other.extended_dynamic_state3_sample_mask, 7459 extended_dynamic_state3_shading_rate_image_enable: self 7460 .extended_dynamic_state3_shading_rate_image_enable 7461 && !other.extended_dynamic_state3_shading_rate_image_enable, 7462 extended_dynamic_state3_tessellation_domain_origin: self 7463 .extended_dynamic_state3_tessellation_domain_origin 7464 && !other.extended_dynamic_state3_tessellation_domain_origin, 7465 extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle 7466 && !other.extended_dynamic_state3_viewport_swizzle, 7467 extended_dynamic_state3_viewport_w_scaling_enable: self 7468 .extended_dynamic_state3_viewport_w_scaling_enable 7469 && !other.extended_dynamic_state3_viewport_w_scaling_enable, 7470 external_memory_rdma: self.external_memory_rdma && !other.external_memory_rdma, 7471 fill_mode_non_solid: self.fill_mode_non_solid && !other.fill_mode_non_solid, 7472 format_a4b4g4r4: self.format_a4b4g4r4 && !other.format_a4b4g4r4, 7473 format_a4r4g4b4: self.format_a4r4g4b4 && !other.format_a4r4g4b4, 7474 format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler 7475 && !other.format_rgba10x6_without_y_cb_cr_sampler, 7476 fragment_density_map: self.fragment_density_map && !other.fragment_density_map, 7477 fragment_density_map_deferred: self.fragment_density_map_deferred 7478 && !other.fragment_density_map_deferred, 7479 fragment_density_map_dynamic: self.fragment_density_map_dynamic 7480 && !other.fragment_density_map_dynamic, 7481 fragment_density_map_non_subsampled_images: self 7482 .fragment_density_map_non_subsampled_images 7483 && !other.fragment_density_map_non_subsampled_images, 7484 fragment_density_map_offset: self.fragment_density_map_offset 7485 && !other.fragment_density_map_offset, 7486 fragment_shader_barycentric: self.fragment_shader_barycentric 7487 && !other.fragment_shader_barycentric, 7488 fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock 7489 && !other.fragment_shader_pixel_interlock, 7490 fragment_shader_sample_interlock: self.fragment_shader_sample_interlock 7491 && !other.fragment_shader_sample_interlock, 7492 fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock 7493 && !other.fragment_shader_shading_rate_interlock, 7494 fragment_shading_rate_enums: self.fragment_shading_rate_enums 7495 && !other.fragment_shading_rate_enums, 7496 fragment_stores_and_atomics: self.fragment_stores_and_atomics 7497 && !other.fragment_stores_and_atomics, 7498 full_draw_index_uint32: self.full_draw_index_uint32 && !other.full_draw_index_uint32, 7499 geometry_shader: self.geometry_shader && !other.geometry_shader, 7500 geometry_streams: self.geometry_streams && !other.geometry_streams, 7501 global_priority_query: self.global_priority_query && !other.global_priority_query, 7502 graphics_pipeline_library: self.graphics_pipeline_library 7503 && !other.graphics_pipeline_library, 7504 host_query_reset: self.host_query_reset && !other.host_query_reset, 7505 image2_d_view_of3_d: self.image2_d_view_of3_d && !other.image2_d_view_of3_d, 7506 image_compression_control: self.image_compression_control 7507 && !other.image_compression_control, 7508 image_compression_control_swapchain: self.image_compression_control_swapchain 7509 && !other.image_compression_control_swapchain, 7510 image_cube_array: self.image_cube_array && !other.image_cube_array, 7511 image_footprint: self.image_footprint && !other.image_footprint, 7512 image_view2_d_on3_d_image: self.image_view2_d_on3_d_image 7513 && !other.image_view2_d_on3_d_image, 7514 image_view_format_reinterpretation: self.image_view_format_reinterpretation 7515 && !other.image_view_format_reinterpretation, 7516 image_view_format_swizzle: self.image_view_format_swizzle 7517 && !other.image_view_format_swizzle, 7518 imageless_framebuffer: self.imageless_framebuffer && !other.imageless_framebuffer, 7519 independent_blend: self.independent_blend && !other.independent_blend, 7520 index_type_uint8: self.index_type_uint8 && !other.index_type_uint8, 7521 indirect_copy: self.indirect_copy && !other.indirect_copy, 7522 inherited_conditional_rendering: self.inherited_conditional_rendering 7523 && !other.inherited_conditional_rendering, 7524 inherited_queries: self.inherited_queries && !other.inherited_queries, 7525 inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d 7526 && !other.inherited_viewport_scissor2_d, 7527 inline_uniform_block: self.inline_uniform_block && !other.inline_uniform_block, 7528 invocation_mask: self.invocation_mask && !other.invocation_mask, 7529 large_points: self.large_points && !other.large_points, 7530 legacy_dithering: self.legacy_dithering && !other.legacy_dithering, 7531 linear_color_attachment: self.linear_color_attachment && !other.linear_color_attachment, 7532 logic_op: self.logic_op && !other.logic_op, 7533 maintenance4: self.maintenance4 && !other.maintenance4, 7534 memory_decompression: self.memory_decompression && !other.memory_decompression, 7535 memory_priority: self.memory_priority && !other.memory_priority, 7536 mesh_shader: self.mesh_shader && !other.mesh_shader, 7537 mesh_shader_queries: self.mesh_shader_queries && !other.mesh_shader_queries, 7538 micromap: self.micromap && !other.micromap, 7539 micromap_capture_replay: self.micromap_capture_replay && !other.micromap_capture_replay, 7540 micromap_host_commands: self.micromap_host_commands && !other.micromap_host_commands, 7541 min_lod: self.min_lod && !other.min_lod, 7542 multi_draw: self.multi_draw && !other.multi_draw, 7543 multi_draw_indirect: self.multi_draw_indirect && !other.multi_draw_indirect, 7544 multi_viewport: self.multi_viewport && !other.multi_viewport, 7545 multisample_array_image: self.multisample_array_image && !other.multisample_array_image, 7546 multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled 7547 && !other.multisampled_render_to_single_sampled, 7548 multiview: self.multiview && !other.multiview, 7549 multiview_geometry_shader: self.multiview_geometry_shader 7550 && !other.multiview_geometry_shader, 7551 multiview_mesh_shader: self.multiview_mesh_shader && !other.multiview_mesh_shader, 7552 multiview_per_view_viewports: self.multiview_per_view_viewports 7553 && !other.multiview_per_view_viewports, 7554 multiview_tessellation_shader: self.multiview_tessellation_shader 7555 && !other.multiview_tessellation_shader, 7556 mutable_comparison_samplers: self.mutable_comparison_samplers 7557 && !other.mutable_comparison_samplers, 7558 mutable_descriptor_type: self.mutable_descriptor_type && !other.mutable_descriptor_type, 7559 no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates 7560 && !other.no_invocation_fragment_shading_rates, 7561 non_seamless_cube_map: self.non_seamless_cube_map && !other.non_seamless_cube_map, 7562 null_descriptor: self.null_descriptor && !other.null_descriptor, 7563 occlusion_query_precise: self.occlusion_query_precise && !other.occlusion_query_precise, 7564 optical_flow: self.optical_flow && !other.optical_flow, 7565 pageable_device_local_memory: self.pageable_device_local_memory 7566 && !other.pageable_device_local_memory, 7567 performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools 7568 && !other.performance_counter_multiple_query_pools, 7569 performance_counter_query_pools: self.performance_counter_query_pools 7570 && !other.performance_counter_query_pools, 7571 pipeline_creation_cache_control: self.pipeline_creation_cache_control 7572 && !other.pipeline_creation_cache_control, 7573 pipeline_executable_info: self.pipeline_executable_info 7574 && !other.pipeline_executable_info, 7575 pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate 7576 && !other.pipeline_fragment_shading_rate, 7577 pipeline_properties_identifier: self.pipeline_properties_identifier 7578 && !other.pipeline_properties_identifier, 7579 pipeline_protected_access: self.pipeline_protected_access 7580 && !other.pipeline_protected_access, 7581 pipeline_robustness: self.pipeline_robustness && !other.pipeline_robustness, 7582 pipeline_statistics_query: self.pipeline_statistics_query 7583 && !other.pipeline_statistics_query, 7584 point_polygons: self.point_polygons && !other.point_polygons, 7585 present_barrier: self.present_barrier && !other.present_barrier, 7586 present_id: self.present_id && !other.present_id, 7587 present_wait: self.present_wait && !other.present_wait, 7588 primitive_fragment_shading_rate: self.primitive_fragment_shading_rate 7589 && !other.primitive_fragment_shading_rate, 7590 primitive_fragment_shading_rate_mesh_shader: self 7591 .primitive_fragment_shading_rate_mesh_shader 7592 && !other.primitive_fragment_shading_rate_mesh_shader, 7593 primitive_topology_list_restart: self.primitive_topology_list_restart 7594 && !other.primitive_topology_list_restart, 7595 primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart 7596 && !other.primitive_topology_patch_list_restart, 7597 primitives_generated_query: self.primitives_generated_query 7598 && !other.primitives_generated_query, 7599 primitives_generated_query_with_non_zero_streams: self 7600 .primitives_generated_query_with_non_zero_streams 7601 && !other.primitives_generated_query_with_non_zero_streams, 7602 primitives_generated_query_with_rasterizer_discard: self 7603 .primitives_generated_query_with_rasterizer_discard 7604 && !other.primitives_generated_query_with_rasterizer_discard, 7605 private_data: self.private_data && !other.private_data, 7606 protected_memory: self.protected_memory && !other.protected_memory, 7607 provoking_vertex_last: self.provoking_vertex_last && !other.provoking_vertex_last, 7608 rasterization_order_color_attachment_access: self 7609 .rasterization_order_color_attachment_access 7610 && !other.rasterization_order_color_attachment_access, 7611 rasterization_order_depth_attachment_access: self 7612 .rasterization_order_depth_attachment_access 7613 && !other.rasterization_order_depth_attachment_access, 7614 rasterization_order_stencil_attachment_access: self 7615 .rasterization_order_stencil_attachment_access 7616 && !other.rasterization_order_stencil_attachment_access, 7617 ray_query: self.ray_query && !other.ray_query, 7618 ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder 7619 && !other.ray_tracing_invocation_reorder, 7620 ray_tracing_maintenance1: self.ray_tracing_maintenance1 7621 && !other.ray_tracing_maintenance1, 7622 ray_tracing_motion_blur: self.ray_tracing_motion_blur && !other.ray_tracing_motion_blur, 7623 ray_tracing_motion_blur_pipeline_trace_rays_indirect: self 7624 .ray_tracing_motion_blur_pipeline_trace_rays_indirect 7625 && !other.ray_tracing_motion_blur_pipeline_trace_rays_indirect, 7626 ray_tracing_pipeline: self.ray_tracing_pipeline && !other.ray_tracing_pipeline, 7627 ray_tracing_pipeline_shader_group_handle_capture_replay: self 7628 .ray_tracing_pipeline_shader_group_handle_capture_replay 7629 && !other.ray_tracing_pipeline_shader_group_handle_capture_replay, 7630 ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self 7631 .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed 7632 && !other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed, 7633 ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect 7634 && !other.ray_tracing_pipeline_trace_rays_indirect, 7635 ray_tracing_pipeline_trace_rays_indirect2: self 7636 .ray_tracing_pipeline_trace_rays_indirect2 7637 && !other.ray_tracing_pipeline_trace_rays_indirect2, 7638 ray_traversal_primitive_culling: self.ray_traversal_primitive_culling 7639 && !other.ray_traversal_primitive_culling, 7640 rectangular_lines: self.rectangular_lines && !other.rectangular_lines, 7641 report_address_binding: self.report_address_binding && !other.report_address_binding, 7642 representative_fragment_test: self.representative_fragment_test 7643 && !other.representative_fragment_test, 7644 robust_buffer_access: self.robust_buffer_access && !other.robust_buffer_access, 7645 robust_buffer_access2: self.robust_buffer_access2 && !other.robust_buffer_access2, 7646 robust_image_access: self.robust_image_access && !other.robust_image_access, 7647 robust_image_access2: self.robust_image_access2 && !other.robust_image_access2, 7648 runtime_descriptor_array: self.runtime_descriptor_array 7649 && !other.runtime_descriptor_array, 7650 sample_rate_shading: self.sample_rate_shading && !other.sample_rate_shading, 7651 sampler2_d_view_of3_d: self.sampler2_d_view_of3_d && !other.sampler2_d_view_of3_d, 7652 sampler_anisotropy: self.sampler_anisotropy && !other.sampler_anisotropy, 7653 sampler_filter_minmax: self.sampler_filter_minmax && !other.sampler_filter_minmax, 7654 sampler_mip_lod_bias: self.sampler_mip_lod_bias && !other.sampler_mip_lod_bias, 7655 sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge 7656 && !other.sampler_mirror_clamp_to_edge, 7657 sampler_ycbcr_conversion: self.sampler_ycbcr_conversion 7658 && !other.sampler_ycbcr_conversion, 7659 scalar_block_layout: self.scalar_block_layout && !other.scalar_block_layout, 7660 separate_depth_stencil_layouts: self.separate_depth_stencil_layouts 7661 && !other.separate_depth_stencil_layouts, 7662 separate_stencil_mask_ref: self.separate_stencil_mask_ref 7663 && !other.separate_stencil_mask_ref, 7664 shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add 7665 && !other.shader_buffer_float16_atomic_add, 7666 shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max 7667 && !other.shader_buffer_float16_atomic_min_max, 7668 shader_buffer_float16_atomics: self.shader_buffer_float16_atomics 7669 && !other.shader_buffer_float16_atomics, 7670 shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add 7671 && !other.shader_buffer_float32_atomic_add, 7672 shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max 7673 && !other.shader_buffer_float32_atomic_min_max, 7674 shader_buffer_float32_atomics: self.shader_buffer_float32_atomics 7675 && !other.shader_buffer_float32_atomics, 7676 shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add 7677 && !other.shader_buffer_float64_atomic_add, 7678 shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max 7679 && !other.shader_buffer_float64_atomic_min_max, 7680 shader_buffer_float64_atomics: self.shader_buffer_float64_atomics 7681 && !other.shader_buffer_float64_atomics, 7682 shader_buffer_int64_atomics: self.shader_buffer_int64_atomics 7683 && !other.shader_buffer_int64_atomics, 7684 shader_clip_distance: self.shader_clip_distance && !other.shader_clip_distance, 7685 shader_core_builtins: self.shader_core_builtins && !other.shader_core_builtins, 7686 shader_cull_distance: self.shader_cull_distance && !other.shader_cull_distance, 7687 shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation 7688 && !other.shader_demote_to_helper_invocation, 7689 shader_device_clock: self.shader_device_clock && !other.shader_device_clock, 7690 shader_draw_parameters: self.shader_draw_parameters && !other.shader_draw_parameters, 7691 shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests 7692 && !other.shader_early_and_late_fragment_tests, 7693 shader_float16: self.shader_float16 && !other.shader_float16, 7694 shader_float64: self.shader_float64 && !other.shader_float64, 7695 shader_image_float32_atomic_add: self.shader_image_float32_atomic_add 7696 && !other.shader_image_float32_atomic_add, 7697 shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max 7698 && !other.shader_image_float32_atomic_min_max, 7699 shader_image_float32_atomics: self.shader_image_float32_atomics 7700 && !other.shader_image_float32_atomics, 7701 shader_image_gather_extended: self.shader_image_gather_extended 7702 && !other.shader_image_gather_extended, 7703 shader_image_int64_atomics: self.shader_image_int64_atomics 7704 && !other.shader_image_int64_atomics, 7705 shader_input_attachment_array_dynamic_indexing: self 7706 .shader_input_attachment_array_dynamic_indexing 7707 && !other.shader_input_attachment_array_dynamic_indexing, 7708 shader_input_attachment_array_non_uniform_indexing: self 7709 .shader_input_attachment_array_non_uniform_indexing 7710 && !other.shader_input_attachment_array_non_uniform_indexing, 7711 shader_int16: self.shader_int16 && !other.shader_int16, 7712 shader_int64: self.shader_int64 && !other.shader_int64, 7713 shader_int8: self.shader_int8 && !other.shader_int8, 7714 shader_integer_dot_product: self.shader_integer_dot_product 7715 && !other.shader_integer_dot_product, 7716 shader_integer_functions2: self.shader_integer_functions2 7717 && !other.shader_integer_functions2, 7718 shader_module_identifier: self.shader_module_identifier 7719 && !other.shader_module_identifier, 7720 shader_output_layer: self.shader_output_layer && !other.shader_output_layer, 7721 shader_output_viewport_index: self.shader_output_viewport_index 7722 && !other.shader_output_viewport_index, 7723 shader_resource_min_lod: self.shader_resource_min_lod && !other.shader_resource_min_lod, 7724 shader_resource_residency: self.shader_resource_residency 7725 && !other.shader_resource_residency, 7726 shader_sample_rate_interpolation_functions: self 7727 .shader_sample_rate_interpolation_functions 7728 && !other.shader_sample_rate_interpolation_functions, 7729 shader_sampled_image_array_dynamic_indexing: self 7730 .shader_sampled_image_array_dynamic_indexing 7731 && !other.shader_sampled_image_array_dynamic_indexing, 7732 shader_sampled_image_array_non_uniform_indexing: self 7733 .shader_sampled_image_array_non_uniform_indexing 7734 && !other.shader_sampled_image_array_non_uniform_indexing, 7735 shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add 7736 && !other.shader_shared_float16_atomic_add, 7737 shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max 7738 && !other.shader_shared_float16_atomic_min_max, 7739 shader_shared_float16_atomics: self.shader_shared_float16_atomics 7740 && !other.shader_shared_float16_atomics, 7741 shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add 7742 && !other.shader_shared_float32_atomic_add, 7743 shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max 7744 && !other.shader_shared_float32_atomic_min_max, 7745 shader_shared_float32_atomics: self.shader_shared_float32_atomics 7746 && !other.shader_shared_float32_atomics, 7747 shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add 7748 && !other.shader_shared_float64_atomic_add, 7749 shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max 7750 && !other.shader_shared_float64_atomic_min_max, 7751 shader_shared_float64_atomics: self.shader_shared_float64_atomics 7752 && !other.shader_shared_float64_atomics, 7753 shader_shared_int64_atomics: self.shader_shared_int64_atomics 7754 && !other.shader_shared_int64_atomics, 7755 shader_sm_builtins: self.shader_sm_builtins && !other.shader_sm_builtins, 7756 shader_storage_buffer_array_dynamic_indexing: self 7757 .shader_storage_buffer_array_dynamic_indexing 7758 && !other.shader_storage_buffer_array_dynamic_indexing, 7759 shader_storage_buffer_array_non_uniform_indexing: self 7760 .shader_storage_buffer_array_non_uniform_indexing 7761 && !other.shader_storage_buffer_array_non_uniform_indexing, 7762 shader_storage_image_array_dynamic_indexing: self 7763 .shader_storage_image_array_dynamic_indexing 7764 && !other.shader_storage_image_array_dynamic_indexing, 7765 shader_storage_image_array_non_uniform_indexing: self 7766 .shader_storage_image_array_non_uniform_indexing 7767 && !other.shader_storage_image_array_non_uniform_indexing, 7768 shader_storage_image_extended_formats: self.shader_storage_image_extended_formats 7769 && !other.shader_storage_image_extended_formats, 7770 shader_storage_image_multisample: self.shader_storage_image_multisample 7771 && !other.shader_storage_image_multisample, 7772 shader_storage_image_read_without_format: self.shader_storage_image_read_without_format 7773 && !other.shader_storage_image_read_without_format, 7774 shader_storage_image_write_without_format: self 7775 .shader_storage_image_write_without_format 7776 && !other.shader_storage_image_write_without_format, 7777 shader_storage_texel_buffer_array_dynamic_indexing: self 7778 .shader_storage_texel_buffer_array_dynamic_indexing 7779 && !other.shader_storage_texel_buffer_array_dynamic_indexing, 7780 shader_storage_texel_buffer_array_non_uniform_indexing: self 7781 .shader_storage_texel_buffer_array_non_uniform_indexing 7782 && !other.shader_storage_texel_buffer_array_non_uniform_indexing, 7783 shader_subgroup_clock: self.shader_subgroup_clock && !other.shader_subgroup_clock, 7784 shader_subgroup_extended_types: self.shader_subgroup_extended_types 7785 && !other.shader_subgroup_extended_types, 7786 shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow 7787 && !other.shader_subgroup_uniform_control_flow, 7788 shader_terminate_invocation: self.shader_terminate_invocation 7789 && !other.shader_terminate_invocation, 7790 shader_tessellation_and_geometry_point_size: self 7791 .shader_tessellation_and_geometry_point_size 7792 && !other.shader_tessellation_and_geometry_point_size, 7793 shader_uniform_buffer_array_dynamic_indexing: self 7794 .shader_uniform_buffer_array_dynamic_indexing 7795 && !other.shader_uniform_buffer_array_dynamic_indexing, 7796 shader_uniform_buffer_array_non_uniform_indexing: self 7797 .shader_uniform_buffer_array_non_uniform_indexing 7798 && !other.shader_uniform_buffer_array_non_uniform_indexing, 7799 shader_uniform_texel_buffer_array_dynamic_indexing: self 7800 .shader_uniform_texel_buffer_array_dynamic_indexing 7801 && !other.shader_uniform_texel_buffer_array_dynamic_indexing, 7802 shader_uniform_texel_buffer_array_non_uniform_indexing: self 7803 .shader_uniform_texel_buffer_array_non_uniform_indexing 7804 && !other.shader_uniform_texel_buffer_array_non_uniform_indexing, 7805 shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory 7806 && !other.shader_zero_initialize_workgroup_memory, 7807 shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order 7808 && !other.shading_rate_coarse_sample_order, 7809 shading_rate_image: self.shading_rate_image && !other.shading_rate_image, 7810 smooth_lines: self.smooth_lines && !other.smooth_lines, 7811 sparse_binding: self.sparse_binding && !other.sparse_binding, 7812 sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add 7813 && !other.sparse_image_float32_atomic_add, 7814 sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max 7815 && !other.sparse_image_float32_atomic_min_max, 7816 sparse_image_float32_atomics: self.sparse_image_float32_atomics 7817 && !other.sparse_image_float32_atomics, 7818 sparse_image_int64_atomics: self.sparse_image_int64_atomics 7819 && !other.sparse_image_int64_atomics, 7820 sparse_residency16_samples: self.sparse_residency16_samples 7821 && !other.sparse_residency16_samples, 7822 sparse_residency2_samples: self.sparse_residency2_samples 7823 && !other.sparse_residency2_samples, 7824 sparse_residency4_samples: self.sparse_residency4_samples 7825 && !other.sparse_residency4_samples, 7826 sparse_residency8_samples: self.sparse_residency8_samples 7827 && !other.sparse_residency8_samples, 7828 sparse_residency_aliased: self.sparse_residency_aliased 7829 && !other.sparse_residency_aliased, 7830 sparse_residency_buffer: self.sparse_residency_buffer && !other.sparse_residency_buffer, 7831 sparse_residency_image2_d: self.sparse_residency_image2_d 7832 && !other.sparse_residency_image2_d, 7833 sparse_residency_image3_d: self.sparse_residency_image3_d 7834 && !other.sparse_residency_image3_d, 7835 stippled_bresenham_lines: self.stippled_bresenham_lines 7836 && !other.stippled_bresenham_lines, 7837 stippled_rectangular_lines: self.stippled_rectangular_lines 7838 && !other.stippled_rectangular_lines, 7839 stippled_smooth_lines: self.stippled_smooth_lines && !other.stippled_smooth_lines, 7840 storage_buffer16_bit_access: self.storage_buffer16_bit_access 7841 && !other.storage_buffer16_bit_access, 7842 storage_buffer8_bit_access: self.storage_buffer8_bit_access 7843 && !other.storage_buffer8_bit_access, 7844 storage_input_output16: self.storage_input_output16 && !other.storage_input_output16, 7845 storage_push_constant16: self.storage_push_constant16 && !other.storage_push_constant16, 7846 storage_push_constant8: self.storage_push_constant8 && !other.storage_push_constant8, 7847 subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id 7848 && !other.subgroup_broadcast_dynamic_id, 7849 subgroup_size_control: self.subgroup_size_control && !other.subgroup_size_control, 7850 subpass_merge_feedback: self.subpass_merge_feedback && !other.subpass_merge_feedback, 7851 subpass_shading: self.subpass_shading && !other.subpass_shading, 7852 supersample_fragment_shading_rates: self.supersample_fragment_shading_rates 7853 && !other.supersample_fragment_shading_rates, 7854 swapchain_maintenance1: self.swapchain_maintenance1 && !other.swapchain_maintenance1, 7855 synchronization2: self.synchronization2 && !other.synchronization2, 7856 task_shader: self.task_shader && !other.task_shader, 7857 tessellation_isolines: self.tessellation_isolines && !other.tessellation_isolines, 7858 tessellation_point_mode: self.tessellation_point_mode && !other.tessellation_point_mode, 7859 tessellation_shader: self.tessellation_shader && !other.tessellation_shader, 7860 texel_buffer_alignment: self.texel_buffer_alignment && !other.texel_buffer_alignment, 7861 texture_block_match: self.texture_block_match && !other.texture_block_match, 7862 texture_box_filter: self.texture_box_filter && !other.texture_box_filter, 7863 texture_compression_astc_hdr: self.texture_compression_astc_hdr 7864 && !other.texture_compression_astc_hdr, 7865 texture_compression_astc_ldr: self.texture_compression_astc_ldr 7866 && !other.texture_compression_astc_ldr, 7867 texture_compression_bc: self.texture_compression_bc && !other.texture_compression_bc, 7868 texture_compression_etc2: self.texture_compression_etc2 7869 && !other.texture_compression_etc2, 7870 texture_sample_weighted: self.texture_sample_weighted && !other.texture_sample_weighted, 7871 tile_properties: self.tile_properties && !other.tile_properties, 7872 timeline_semaphore: self.timeline_semaphore && !other.timeline_semaphore, 7873 transform_feedback: self.transform_feedback && !other.transform_feedback, 7874 transform_feedback_preserves_provoking_vertex: self 7875 .transform_feedback_preserves_provoking_vertex 7876 && !other.transform_feedback_preserves_provoking_vertex, 7877 triangle_fans: self.triangle_fans && !other.triangle_fans, 7878 uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access 7879 && !other.uniform_and_storage_buffer16_bit_access, 7880 uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access 7881 && !other.uniform_and_storage_buffer8_bit_access, 7882 uniform_buffer_standard_layout: self.uniform_buffer_standard_layout 7883 && !other.uniform_buffer_standard_layout, 7884 variable_multisample_rate: self.variable_multisample_rate 7885 && !other.variable_multisample_rate, 7886 variable_pointers: self.variable_pointers && !other.variable_pointers, 7887 variable_pointers_storage_buffer: self.variable_pointers_storage_buffer 7888 && !other.variable_pointers_storage_buffer, 7889 vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride 7890 && !other.vertex_attribute_access_beyond_stride, 7891 vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor 7892 && !other.vertex_attribute_instance_rate_divisor, 7893 vertex_attribute_instance_rate_zero_divisor: self 7894 .vertex_attribute_instance_rate_zero_divisor 7895 && !other.vertex_attribute_instance_rate_zero_divisor, 7896 vertex_input_dynamic_state: self.vertex_input_dynamic_state 7897 && !other.vertex_input_dynamic_state, 7898 vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics 7899 && !other.vertex_pipeline_stores_and_atomics, 7900 vulkan_memory_model: self.vulkan_memory_model && !other.vulkan_memory_model, 7901 vulkan_memory_model_availability_visibility_chains: self 7902 .vulkan_memory_model_availability_visibility_chains 7903 && !other.vulkan_memory_model_availability_visibility_chains, 7904 vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope 7905 && !other.vulkan_memory_model_device_scope, 7906 wide_lines: self.wide_lines && !other.wide_lines, 7907 workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout 7908 && !other.workgroup_memory_explicit_layout, 7909 workgroup_memory_explicit_layout16_bit_access: self 7910 .workgroup_memory_explicit_layout16_bit_access 7911 && !other.workgroup_memory_explicit_layout16_bit_access, 7912 workgroup_memory_explicit_layout8_bit_access: self 7913 .workgroup_memory_explicit_layout8_bit_access 7914 && !other.workgroup_memory_explicit_layout8_bit_access, 7915 workgroup_memory_explicit_layout_scalar_block_layout: self 7916 .workgroup_memory_explicit_layout_scalar_block_layout 7917 && !other.workgroup_memory_explicit_layout_scalar_block_layout, 7918 ycbcr2plane444_formats: self.ycbcr2plane444_formats && !other.ycbcr2plane444_formats, 7919 ycbcr_image_arrays: self.ycbcr_image_arrays && !other.ycbcr_image_arrays, 7920 _ne: crate::NonExhaustive(()), 7921 } 7922 } 7923 #[doc = r" Returns the members set in `self` or `other`, but not both."] 7924 #[inline] symmetric_difference(&self, other: &Self) -> Self7925 pub const fn symmetric_difference(&self, other: &Self) -> Self { 7926 Self { 7927 acceleration_structure: self.acceleration_structure ^ other.acceleration_structure, 7928 acceleration_structure_capture_replay: self.acceleration_structure_capture_replay 7929 ^ other.acceleration_structure_capture_replay, 7930 acceleration_structure_host_commands: self.acceleration_structure_host_commands 7931 ^ other.acceleration_structure_host_commands, 7932 acceleration_structure_indirect_build: self.acceleration_structure_indirect_build 7933 ^ other.acceleration_structure_indirect_build, 7934 advanced_blend_coherent_operations: self.advanced_blend_coherent_operations 7935 ^ other.advanced_blend_coherent_operations, 7936 alpha_to_one: self.alpha_to_one ^ other.alpha_to_one, 7937 amigo_profiling: self.amigo_profiling ^ other.amigo_profiling, 7938 attachment_feedback_loop_layout: self.attachment_feedback_loop_layout 7939 ^ other.attachment_feedback_loop_layout, 7940 attachment_fragment_shading_rate: self.attachment_fragment_shading_rate 7941 ^ other.attachment_fragment_shading_rate, 7942 border_color_swizzle: self.border_color_swizzle ^ other.border_color_swizzle, 7943 border_color_swizzle_from_image: self.border_color_swizzle_from_image 7944 ^ other.border_color_swizzle_from_image, 7945 bresenham_lines: self.bresenham_lines ^ other.bresenham_lines, 7946 buffer_device_address: self.buffer_device_address ^ other.buffer_device_address, 7947 buffer_device_address_capture_replay: self.buffer_device_address_capture_replay 7948 ^ other.buffer_device_address_capture_replay, 7949 buffer_device_address_multi_device: self.buffer_device_address_multi_device 7950 ^ other.buffer_device_address_multi_device, 7951 color_write_enable: self.color_write_enable ^ other.color_write_enable, 7952 compute_derivative_group_linear: self.compute_derivative_group_linear 7953 ^ other.compute_derivative_group_linear, 7954 compute_derivative_group_quads: self.compute_derivative_group_quads 7955 ^ other.compute_derivative_group_quads, 7956 compute_full_subgroups: self.compute_full_subgroups ^ other.compute_full_subgroups, 7957 conditional_rendering: self.conditional_rendering ^ other.conditional_rendering, 7958 constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors 7959 ^ other.constant_alpha_color_blend_factors, 7960 cooperative_matrix: self.cooperative_matrix ^ other.cooperative_matrix, 7961 cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access 7962 ^ other.cooperative_matrix_robust_buffer_access, 7963 corner_sampled_image: self.corner_sampled_image ^ other.corner_sampled_image, 7964 coverage_reduction_mode: self.coverage_reduction_mode ^ other.coverage_reduction_mode, 7965 custom_border_color_without_format: self.custom_border_color_without_format 7966 ^ other.custom_border_color_without_format, 7967 custom_border_colors: self.custom_border_colors ^ other.custom_border_colors, 7968 decode_mode_shared_exponent: self.decode_mode_shared_exponent 7969 ^ other.decode_mode_shared_exponent, 7970 dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing 7971 ^ other.dedicated_allocation_image_aliasing, 7972 depth_bias_clamp: self.depth_bias_clamp ^ other.depth_bias_clamp, 7973 depth_bounds: self.depth_bounds ^ other.depth_bounds, 7974 depth_clamp: self.depth_clamp ^ other.depth_clamp, 7975 depth_clamp_zero_one: self.depth_clamp_zero_one ^ other.depth_clamp_zero_one, 7976 depth_clip_control: self.depth_clip_control ^ other.depth_clip_control, 7977 depth_clip_enable: self.depth_clip_enable ^ other.depth_clip_enable, 7978 descriptor_binding_acceleration_structure_update_after_bind: self 7979 .descriptor_binding_acceleration_structure_update_after_bind 7980 ^ other.descriptor_binding_acceleration_structure_update_after_bind, 7981 descriptor_binding_inline_uniform_block_update_after_bind: self 7982 .descriptor_binding_inline_uniform_block_update_after_bind 7983 ^ other.descriptor_binding_inline_uniform_block_update_after_bind, 7984 descriptor_binding_partially_bound: self.descriptor_binding_partially_bound 7985 ^ other.descriptor_binding_partially_bound, 7986 descriptor_binding_sampled_image_update_after_bind: self 7987 .descriptor_binding_sampled_image_update_after_bind 7988 ^ other.descriptor_binding_sampled_image_update_after_bind, 7989 descriptor_binding_storage_buffer_update_after_bind: self 7990 .descriptor_binding_storage_buffer_update_after_bind 7991 ^ other.descriptor_binding_storage_buffer_update_after_bind, 7992 descriptor_binding_storage_image_update_after_bind: self 7993 .descriptor_binding_storage_image_update_after_bind 7994 ^ other.descriptor_binding_storage_image_update_after_bind, 7995 descriptor_binding_storage_texel_buffer_update_after_bind: self 7996 .descriptor_binding_storage_texel_buffer_update_after_bind 7997 ^ other.descriptor_binding_storage_texel_buffer_update_after_bind, 7998 descriptor_binding_uniform_buffer_update_after_bind: self 7999 .descriptor_binding_uniform_buffer_update_after_bind 8000 ^ other.descriptor_binding_uniform_buffer_update_after_bind, 8001 descriptor_binding_uniform_texel_buffer_update_after_bind: self 8002 .descriptor_binding_uniform_texel_buffer_update_after_bind 8003 ^ other.descriptor_binding_uniform_texel_buffer_update_after_bind, 8004 descriptor_binding_update_unused_while_pending: self 8005 .descriptor_binding_update_unused_while_pending 8006 ^ other.descriptor_binding_update_unused_while_pending, 8007 descriptor_binding_variable_descriptor_count: self 8008 .descriptor_binding_variable_descriptor_count 8009 ^ other.descriptor_binding_variable_descriptor_count, 8010 descriptor_buffer: self.descriptor_buffer ^ other.descriptor_buffer, 8011 descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay 8012 ^ other.descriptor_buffer_capture_replay, 8013 descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored 8014 ^ other.descriptor_buffer_image_layout_ignored, 8015 descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors 8016 ^ other.descriptor_buffer_push_descriptors, 8017 descriptor_indexing: self.descriptor_indexing ^ other.descriptor_indexing, 8018 descriptor_set_host_mapping: self.descriptor_set_host_mapping 8019 ^ other.descriptor_set_host_mapping, 8020 device_coherent_memory: self.device_coherent_memory ^ other.device_coherent_memory, 8021 device_fault: self.device_fault ^ other.device_fault, 8022 device_fault_vendor_binary: self.device_fault_vendor_binary 8023 ^ other.device_fault_vendor_binary, 8024 device_generated_commands: self.device_generated_commands 8025 ^ other.device_generated_commands, 8026 device_memory_report: self.device_memory_report ^ other.device_memory_report, 8027 diagnostics_config: self.diagnostics_config ^ other.diagnostics_config, 8028 draw_indirect_count: self.draw_indirect_count ^ other.draw_indirect_count, 8029 draw_indirect_first_instance: self.draw_indirect_first_instance 8030 ^ other.draw_indirect_first_instance, 8031 dual_src_blend: self.dual_src_blend ^ other.dual_src_blend, 8032 dynamic_rendering: self.dynamic_rendering ^ other.dynamic_rendering, 8033 events: self.events ^ other.events, 8034 exclusive_scissor: self.exclusive_scissor ^ other.exclusive_scissor, 8035 extended_dynamic_state: self.extended_dynamic_state ^ other.extended_dynamic_state, 8036 extended_dynamic_state2: self.extended_dynamic_state2 ^ other.extended_dynamic_state2, 8037 extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op 8038 ^ other.extended_dynamic_state2_logic_op, 8039 extended_dynamic_state2_patch_control_points: self 8040 .extended_dynamic_state2_patch_control_points 8041 ^ other.extended_dynamic_state2_patch_control_points, 8042 extended_dynamic_state3_alpha_to_coverage_enable: self 8043 .extended_dynamic_state3_alpha_to_coverage_enable 8044 ^ other.extended_dynamic_state3_alpha_to_coverage_enable, 8045 extended_dynamic_state3_alpha_to_one_enable: self 8046 .extended_dynamic_state3_alpha_to_one_enable 8047 ^ other.extended_dynamic_state3_alpha_to_one_enable, 8048 extended_dynamic_state3_color_blend_advanced: self 8049 .extended_dynamic_state3_color_blend_advanced 8050 ^ other.extended_dynamic_state3_color_blend_advanced, 8051 extended_dynamic_state3_color_blend_enable: self 8052 .extended_dynamic_state3_color_blend_enable 8053 ^ other.extended_dynamic_state3_color_blend_enable, 8054 extended_dynamic_state3_color_blend_equation: self 8055 .extended_dynamic_state3_color_blend_equation 8056 ^ other.extended_dynamic_state3_color_blend_equation, 8057 extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask 8058 ^ other.extended_dynamic_state3_color_write_mask, 8059 extended_dynamic_state3_conservative_rasterization_mode: self 8060 .extended_dynamic_state3_conservative_rasterization_mode 8061 ^ other.extended_dynamic_state3_conservative_rasterization_mode, 8062 extended_dynamic_state3_coverage_modulation_mode: self 8063 .extended_dynamic_state3_coverage_modulation_mode 8064 ^ other.extended_dynamic_state3_coverage_modulation_mode, 8065 extended_dynamic_state3_coverage_modulation_table: self 8066 .extended_dynamic_state3_coverage_modulation_table 8067 ^ other.extended_dynamic_state3_coverage_modulation_table, 8068 extended_dynamic_state3_coverage_modulation_table_enable: self 8069 .extended_dynamic_state3_coverage_modulation_table_enable 8070 ^ other.extended_dynamic_state3_coverage_modulation_table_enable, 8071 extended_dynamic_state3_coverage_reduction_mode: self 8072 .extended_dynamic_state3_coverage_reduction_mode 8073 ^ other.extended_dynamic_state3_coverage_reduction_mode, 8074 extended_dynamic_state3_coverage_to_color_enable: self 8075 .extended_dynamic_state3_coverage_to_color_enable 8076 ^ other.extended_dynamic_state3_coverage_to_color_enable, 8077 extended_dynamic_state3_coverage_to_color_location: self 8078 .extended_dynamic_state3_coverage_to_color_location 8079 ^ other.extended_dynamic_state3_coverage_to_color_location, 8080 extended_dynamic_state3_depth_clamp_enable: self 8081 .extended_dynamic_state3_depth_clamp_enable 8082 ^ other.extended_dynamic_state3_depth_clamp_enable, 8083 extended_dynamic_state3_depth_clip_enable: self 8084 .extended_dynamic_state3_depth_clip_enable 8085 ^ other.extended_dynamic_state3_depth_clip_enable, 8086 extended_dynamic_state3_depth_clip_negative_one_to_one: self 8087 .extended_dynamic_state3_depth_clip_negative_one_to_one 8088 ^ other.extended_dynamic_state3_depth_clip_negative_one_to_one, 8089 extended_dynamic_state3_extra_primitive_overestimation_size: self 8090 .extended_dynamic_state3_extra_primitive_overestimation_size 8091 ^ other.extended_dynamic_state3_extra_primitive_overestimation_size, 8092 extended_dynamic_state3_line_rasterization_mode: self 8093 .extended_dynamic_state3_line_rasterization_mode 8094 ^ other.extended_dynamic_state3_line_rasterization_mode, 8095 extended_dynamic_state3_line_stipple_enable: self 8096 .extended_dynamic_state3_line_stipple_enable 8097 ^ other.extended_dynamic_state3_line_stipple_enable, 8098 extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable 8099 ^ other.extended_dynamic_state3_logic_op_enable, 8100 extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode 8101 ^ other.extended_dynamic_state3_polygon_mode, 8102 extended_dynamic_state3_provoking_vertex_mode: self 8103 .extended_dynamic_state3_provoking_vertex_mode 8104 ^ other.extended_dynamic_state3_provoking_vertex_mode, 8105 extended_dynamic_state3_rasterization_samples: self 8106 .extended_dynamic_state3_rasterization_samples 8107 ^ other.extended_dynamic_state3_rasterization_samples, 8108 extended_dynamic_state3_rasterization_stream: self 8109 .extended_dynamic_state3_rasterization_stream 8110 ^ other.extended_dynamic_state3_rasterization_stream, 8111 extended_dynamic_state3_representative_fragment_test_enable: self 8112 .extended_dynamic_state3_representative_fragment_test_enable 8113 ^ other.extended_dynamic_state3_representative_fragment_test_enable, 8114 extended_dynamic_state3_sample_locations_enable: self 8115 .extended_dynamic_state3_sample_locations_enable 8116 ^ other.extended_dynamic_state3_sample_locations_enable, 8117 extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask 8118 ^ other.extended_dynamic_state3_sample_mask, 8119 extended_dynamic_state3_shading_rate_image_enable: self 8120 .extended_dynamic_state3_shading_rate_image_enable 8121 ^ other.extended_dynamic_state3_shading_rate_image_enable, 8122 extended_dynamic_state3_tessellation_domain_origin: self 8123 .extended_dynamic_state3_tessellation_domain_origin 8124 ^ other.extended_dynamic_state3_tessellation_domain_origin, 8125 extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle 8126 ^ other.extended_dynamic_state3_viewport_swizzle, 8127 extended_dynamic_state3_viewport_w_scaling_enable: self 8128 .extended_dynamic_state3_viewport_w_scaling_enable 8129 ^ other.extended_dynamic_state3_viewport_w_scaling_enable, 8130 external_memory_rdma: self.external_memory_rdma ^ other.external_memory_rdma, 8131 fill_mode_non_solid: self.fill_mode_non_solid ^ other.fill_mode_non_solid, 8132 format_a4b4g4r4: self.format_a4b4g4r4 ^ other.format_a4b4g4r4, 8133 format_a4r4g4b4: self.format_a4r4g4b4 ^ other.format_a4r4g4b4, 8134 format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler 8135 ^ other.format_rgba10x6_without_y_cb_cr_sampler, 8136 fragment_density_map: self.fragment_density_map ^ other.fragment_density_map, 8137 fragment_density_map_deferred: self.fragment_density_map_deferred 8138 ^ other.fragment_density_map_deferred, 8139 fragment_density_map_dynamic: self.fragment_density_map_dynamic 8140 ^ other.fragment_density_map_dynamic, 8141 fragment_density_map_non_subsampled_images: self 8142 .fragment_density_map_non_subsampled_images 8143 ^ other.fragment_density_map_non_subsampled_images, 8144 fragment_density_map_offset: self.fragment_density_map_offset 8145 ^ other.fragment_density_map_offset, 8146 fragment_shader_barycentric: self.fragment_shader_barycentric 8147 ^ other.fragment_shader_barycentric, 8148 fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock 8149 ^ other.fragment_shader_pixel_interlock, 8150 fragment_shader_sample_interlock: self.fragment_shader_sample_interlock 8151 ^ other.fragment_shader_sample_interlock, 8152 fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock 8153 ^ other.fragment_shader_shading_rate_interlock, 8154 fragment_shading_rate_enums: self.fragment_shading_rate_enums 8155 ^ other.fragment_shading_rate_enums, 8156 fragment_stores_and_atomics: self.fragment_stores_and_atomics 8157 ^ other.fragment_stores_and_atomics, 8158 full_draw_index_uint32: self.full_draw_index_uint32 ^ other.full_draw_index_uint32, 8159 geometry_shader: self.geometry_shader ^ other.geometry_shader, 8160 geometry_streams: self.geometry_streams ^ other.geometry_streams, 8161 global_priority_query: self.global_priority_query ^ other.global_priority_query, 8162 graphics_pipeline_library: self.graphics_pipeline_library 8163 ^ other.graphics_pipeline_library, 8164 host_query_reset: self.host_query_reset ^ other.host_query_reset, 8165 image2_d_view_of3_d: self.image2_d_view_of3_d ^ other.image2_d_view_of3_d, 8166 image_compression_control: self.image_compression_control 8167 ^ other.image_compression_control, 8168 image_compression_control_swapchain: self.image_compression_control_swapchain 8169 ^ other.image_compression_control_swapchain, 8170 image_cube_array: self.image_cube_array ^ other.image_cube_array, 8171 image_footprint: self.image_footprint ^ other.image_footprint, 8172 image_view2_d_on3_d_image: self.image_view2_d_on3_d_image 8173 ^ other.image_view2_d_on3_d_image, 8174 image_view_format_reinterpretation: self.image_view_format_reinterpretation 8175 ^ other.image_view_format_reinterpretation, 8176 image_view_format_swizzle: self.image_view_format_swizzle 8177 ^ other.image_view_format_swizzle, 8178 imageless_framebuffer: self.imageless_framebuffer ^ other.imageless_framebuffer, 8179 independent_blend: self.independent_blend ^ other.independent_blend, 8180 index_type_uint8: self.index_type_uint8 ^ other.index_type_uint8, 8181 indirect_copy: self.indirect_copy ^ other.indirect_copy, 8182 inherited_conditional_rendering: self.inherited_conditional_rendering 8183 ^ other.inherited_conditional_rendering, 8184 inherited_queries: self.inherited_queries ^ other.inherited_queries, 8185 inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d 8186 ^ other.inherited_viewport_scissor2_d, 8187 inline_uniform_block: self.inline_uniform_block ^ other.inline_uniform_block, 8188 invocation_mask: self.invocation_mask ^ other.invocation_mask, 8189 large_points: self.large_points ^ other.large_points, 8190 legacy_dithering: self.legacy_dithering ^ other.legacy_dithering, 8191 linear_color_attachment: self.linear_color_attachment ^ other.linear_color_attachment, 8192 logic_op: self.logic_op ^ other.logic_op, 8193 maintenance4: self.maintenance4 ^ other.maintenance4, 8194 memory_decompression: self.memory_decompression ^ other.memory_decompression, 8195 memory_priority: self.memory_priority ^ other.memory_priority, 8196 mesh_shader: self.mesh_shader ^ other.mesh_shader, 8197 mesh_shader_queries: self.mesh_shader_queries ^ other.mesh_shader_queries, 8198 micromap: self.micromap ^ other.micromap, 8199 micromap_capture_replay: self.micromap_capture_replay ^ other.micromap_capture_replay, 8200 micromap_host_commands: self.micromap_host_commands ^ other.micromap_host_commands, 8201 min_lod: self.min_lod ^ other.min_lod, 8202 multi_draw: self.multi_draw ^ other.multi_draw, 8203 multi_draw_indirect: self.multi_draw_indirect ^ other.multi_draw_indirect, 8204 multi_viewport: self.multi_viewport ^ other.multi_viewport, 8205 multisample_array_image: self.multisample_array_image ^ other.multisample_array_image, 8206 multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled 8207 ^ other.multisampled_render_to_single_sampled, 8208 multiview: self.multiview ^ other.multiview, 8209 multiview_geometry_shader: self.multiview_geometry_shader 8210 ^ other.multiview_geometry_shader, 8211 multiview_mesh_shader: self.multiview_mesh_shader ^ other.multiview_mesh_shader, 8212 multiview_per_view_viewports: self.multiview_per_view_viewports 8213 ^ other.multiview_per_view_viewports, 8214 multiview_tessellation_shader: self.multiview_tessellation_shader 8215 ^ other.multiview_tessellation_shader, 8216 mutable_comparison_samplers: self.mutable_comparison_samplers 8217 ^ other.mutable_comparison_samplers, 8218 mutable_descriptor_type: self.mutable_descriptor_type ^ other.mutable_descriptor_type, 8219 no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates 8220 ^ other.no_invocation_fragment_shading_rates, 8221 non_seamless_cube_map: self.non_seamless_cube_map ^ other.non_seamless_cube_map, 8222 null_descriptor: self.null_descriptor ^ other.null_descriptor, 8223 occlusion_query_precise: self.occlusion_query_precise ^ other.occlusion_query_precise, 8224 optical_flow: self.optical_flow ^ other.optical_flow, 8225 pageable_device_local_memory: self.pageable_device_local_memory 8226 ^ other.pageable_device_local_memory, 8227 performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools 8228 ^ other.performance_counter_multiple_query_pools, 8229 performance_counter_query_pools: self.performance_counter_query_pools 8230 ^ other.performance_counter_query_pools, 8231 pipeline_creation_cache_control: self.pipeline_creation_cache_control 8232 ^ other.pipeline_creation_cache_control, 8233 pipeline_executable_info: self.pipeline_executable_info 8234 ^ other.pipeline_executable_info, 8235 pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate 8236 ^ other.pipeline_fragment_shading_rate, 8237 pipeline_properties_identifier: self.pipeline_properties_identifier 8238 ^ other.pipeline_properties_identifier, 8239 pipeline_protected_access: self.pipeline_protected_access 8240 ^ other.pipeline_protected_access, 8241 pipeline_robustness: self.pipeline_robustness ^ other.pipeline_robustness, 8242 pipeline_statistics_query: self.pipeline_statistics_query 8243 ^ other.pipeline_statistics_query, 8244 point_polygons: self.point_polygons ^ other.point_polygons, 8245 present_barrier: self.present_barrier ^ other.present_barrier, 8246 present_id: self.present_id ^ other.present_id, 8247 present_wait: self.present_wait ^ other.present_wait, 8248 primitive_fragment_shading_rate: self.primitive_fragment_shading_rate 8249 ^ other.primitive_fragment_shading_rate, 8250 primitive_fragment_shading_rate_mesh_shader: self 8251 .primitive_fragment_shading_rate_mesh_shader 8252 ^ other.primitive_fragment_shading_rate_mesh_shader, 8253 primitive_topology_list_restart: self.primitive_topology_list_restart 8254 ^ other.primitive_topology_list_restart, 8255 primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart 8256 ^ other.primitive_topology_patch_list_restart, 8257 primitives_generated_query: self.primitives_generated_query 8258 ^ other.primitives_generated_query, 8259 primitives_generated_query_with_non_zero_streams: self 8260 .primitives_generated_query_with_non_zero_streams 8261 ^ other.primitives_generated_query_with_non_zero_streams, 8262 primitives_generated_query_with_rasterizer_discard: self 8263 .primitives_generated_query_with_rasterizer_discard 8264 ^ other.primitives_generated_query_with_rasterizer_discard, 8265 private_data: self.private_data ^ other.private_data, 8266 protected_memory: self.protected_memory ^ other.protected_memory, 8267 provoking_vertex_last: self.provoking_vertex_last ^ other.provoking_vertex_last, 8268 rasterization_order_color_attachment_access: self 8269 .rasterization_order_color_attachment_access 8270 ^ other.rasterization_order_color_attachment_access, 8271 rasterization_order_depth_attachment_access: self 8272 .rasterization_order_depth_attachment_access 8273 ^ other.rasterization_order_depth_attachment_access, 8274 rasterization_order_stencil_attachment_access: self 8275 .rasterization_order_stencil_attachment_access 8276 ^ other.rasterization_order_stencil_attachment_access, 8277 ray_query: self.ray_query ^ other.ray_query, 8278 ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder 8279 ^ other.ray_tracing_invocation_reorder, 8280 ray_tracing_maintenance1: self.ray_tracing_maintenance1 8281 ^ other.ray_tracing_maintenance1, 8282 ray_tracing_motion_blur: self.ray_tracing_motion_blur ^ other.ray_tracing_motion_blur, 8283 ray_tracing_motion_blur_pipeline_trace_rays_indirect: self 8284 .ray_tracing_motion_blur_pipeline_trace_rays_indirect 8285 ^ other.ray_tracing_motion_blur_pipeline_trace_rays_indirect, 8286 ray_tracing_pipeline: self.ray_tracing_pipeline ^ other.ray_tracing_pipeline, 8287 ray_tracing_pipeline_shader_group_handle_capture_replay: self 8288 .ray_tracing_pipeline_shader_group_handle_capture_replay 8289 ^ other.ray_tracing_pipeline_shader_group_handle_capture_replay, 8290 ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self 8291 .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed 8292 ^ other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed, 8293 ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect 8294 ^ other.ray_tracing_pipeline_trace_rays_indirect, 8295 ray_tracing_pipeline_trace_rays_indirect2: self 8296 .ray_tracing_pipeline_trace_rays_indirect2 8297 ^ other.ray_tracing_pipeline_trace_rays_indirect2, 8298 ray_traversal_primitive_culling: self.ray_traversal_primitive_culling 8299 ^ other.ray_traversal_primitive_culling, 8300 rectangular_lines: self.rectangular_lines ^ other.rectangular_lines, 8301 report_address_binding: self.report_address_binding ^ other.report_address_binding, 8302 representative_fragment_test: self.representative_fragment_test 8303 ^ other.representative_fragment_test, 8304 robust_buffer_access: self.robust_buffer_access ^ other.robust_buffer_access, 8305 robust_buffer_access2: self.robust_buffer_access2 ^ other.robust_buffer_access2, 8306 robust_image_access: self.robust_image_access ^ other.robust_image_access, 8307 robust_image_access2: self.robust_image_access2 ^ other.robust_image_access2, 8308 runtime_descriptor_array: self.runtime_descriptor_array 8309 ^ other.runtime_descriptor_array, 8310 sample_rate_shading: self.sample_rate_shading ^ other.sample_rate_shading, 8311 sampler2_d_view_of3_d: self.sampler2_d_view_of3_d ^ other.sampler2_d_view_of3_d, 8312 sampler_anisotropy: self.sampler_anisotropy ^ other.sampler_anisotropy, 8313 sampler_filter_minmax: self.sampler_filter_minmax ^ other.sampler_filter_minmax, 8314 sampler_mip_lod_bias: self.sampler_mip_lod_bias ^ other.sampler_mip_lod_bias, 8315 sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge 8316 ^ other.sampler_mirror_clamp_to_edge, 8317 sampler_ycbcr_conversion: self.sampler_ycbcr_conversion 8318 ^ other.sampler_ycbcr_conversion, 8319 scalar_block_layout: self.scalar_block_layout ^ other.scalar_block_layout, 8320 separate_depth_stencil_layouts: self.separate_depth_stencil_layouts 8321 ^ other.separate_depth_stencil_layouts, 8322 separate_stencil_mask_ref: self.separate_stencil_mask_ref 8323 ^ other.separate_stencil_mask_ref, 8324 shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add 8325 ^ other.shader_buffer_float16_atomic_add, 8326 shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max 8327 ^ other.shader_buffer_float16_atomic_min_max, 8328 shader_buffer_float16_atomics: self.shader_buffer_float16_atomics 8329 ^ other.shader_buffer_float16_atomics, 8330 shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add 8331 ^ other.shader_buffer_float32_atomic_add, 8332 shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max 8333 ^ other.shader_buffer_float32_atomic_min_max, 8334 shader_buffer_float32_atomics: self.shader_buffer_float32_atomics 8335 ^ other.shader_buffer_float32_atomics, 8336 shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add 8337 ^ other.shader_buffer_float64_atomic_add, 8338 shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max 8339 ^ other.shader_buffer_float64_atomic_min_max, 8340 shader_buffer_float64_atomics: self.shader_buffer_float64_atomics 8341 ^ other.shader_buffer_float64_atomics, 8342 shader_buffer_int64_atomics: self.shader_buffer_int64_atomics 8343 ^ other.shader_buffer_int64_atomics, 8344 shader_clip_distance: self.shader_clip_distance ^ other.shader_clip_distance, 8345 shader_core_builtins: self.shader_core_builtins ^ other.shader_core_builtins, 8346 shader_cull_distance: self.shader_cull_distance ^ other.shader_cull_distance, 8347 shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation 8348 ^ other.shader_demote_to_helper_invocation, 8349 shader_device_clock: self.shader_device_clock ^ other.shader_device_clock, 8350 shader_draw_parameters: self.shader_draw_parameters ^ other.shader_draw_parameters, 8351 shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests 8352 ^ other.shader_early_and_late_fragment_tests, 8353 shader_float16: self.shader_float16 ^ other.shader_float16, 8354 shader_float64: self.shader_float64 ^ other.shader_float64, 8355 shader_image_float32_atomic_add: self.shader_image_float32_atomic_add 8356 ^ other.shader_image_float32_atomic_add, 8357 shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max 8358 ^ other.shader_image_float32_atomic_min_max, 8359 shader_image_float32_atomics: self.shader_image_float32_atomics 8360 ^ other.shader_image_float32_atomics, 8361 shader_image_gather_extended: self.shader_image_gather_extended 8362 ^ other.shader_image_gather_extended, 8363 shader_image_int64_atomics: self.shader_image_int64_atomics 8364 ^ other.shader_image_int64_atomics, 8365 shader_input_attachment_array_dynamic_indexing: self 8366 .shader_input_attachment_array_dynamic_indexing 8367 ^ other.shader_input_attachment_array_dynamic_indexing, 8368 shader_input_attachment_array_non_uniform_indexing: self 8369 .shader_input_attachment_array_non_uniform_indexing 8370 ^ other.shader_input_attachment_array_non_uniform_indexing, 8371 shader_int16: self.shader_int16 ^ other.shader_int16, 8372 shader_int64: self.shader_int64 ^ other.shader_int64, 8373 shader_int8: self.shader_int8 ^ other.shader_int8, 8374 shader_integer_dot_product: self.shader_integer_dot_product 8375 ^ other.shader_integer_dot_product, 8376 shader_integer_functions2: self.shader_integer_functions2 8377 ^ other.shader_integer_functions2, 8378 shader_module_identifier: self.shader_module_identifier 8379 ^ other.shader_module_identifier, 8380 shader_output_layer: self.shader_output_layer ^ other.shader_output_layer, 8381 shader_output_viewport_index: self.shader_output_viewport_index 8382 ^ other.shader_output_viewport_index, 8383 shader_resource_min_lod: self.shader_resource_min_lod ^ other.shader_resource_min_lod, 8384 shader_resource_residency: self.shader_resource_residency 8385 ^ other.shader_resource_residency, 8386 shader_sample_rate_interpolation_functions: self 8387 .shader_sample_rate_interpolation_functions 8388 ^ other.shader_sample_rate_interpolation_functions, 8389 shader_sampled_image_array_dynamic_indexing: self 8390 .shader_sampled_image_array_dynamic_indexing 8391 ^ other.shader_sampled_image_array_dynamic_indexing, 8392 shader_sampled_image_array_non_uniform_indexing: self 8393 .shader_sampled_image_array_non_uniform_indexing 8394 ^ other.shader_sampled_image_array_non_uniform_indexing, 8395 shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add 8396 ^ other.shader_shared_float16_atomic_add, 8397 shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max 8398 ^ other.shader_shared_float16_atomic_min_max, 8399 shader_shared_float16_atomics: self.shader_shared_float16_atomics 8400 ^ other.shader_shared_float16_atomics, 8401 shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add 8402 ^ other.shader_shared_float32_atomic_add, 8403 shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max 8404 ^ other.shader_shared_float32_atomic_min_max, 8405 shader_shared_float32_atomics: self.shader_shared_float32_atomics 8406 ^ other.shader_shared_float32_atomics, 8407 shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add 8408 ^ other.shader_shared_float64_atomic_add, 8409 shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max 8410 ^ other.shader_shared_float64_atomic_min_max, 8411 shader_shared_float64_atomics: self.shader_shared_float64_atomics 8412 ^ other.shader_shared_float64_atomics, 8413 shader_shared_int64_atomics: self.shader_shared_int64_atomics 8414 ^ other.shader_shared_int64_atomics, 8415 shader_sm_builtins: self.shader_sm_builtins ^ other.shader_sm_builtins, 8416 shader_storage_buffer_array_dynamic_indexing: self 8417 .shader_storage_buffer_array_dynamic_indexing 8418 ^ other.shader_storage_buffer_array_dynamic_indexing, 8419 shader_storage_buffer_array_non_uniform_indexing: self 8420 .shader_storage_buffer_array_non_uniform_indexing 8421 ^ other.shader_storage_buffer_array_non_uniform_indexing, 8422 shader_storage_image_array_dynamic_indexing: self 8423 .shader_storage_image_array_dynamic_indexing 8424 ^ other.shader_storage_image_array_dynamic_indexing, 8425 shader_storage_image_array_non_uniform_indexing: self 8426 .shader_storage_image_array_non_uniform_indexing 8427 ^ other.shader_storage_image_array_non_uniform_indexing, 8428 shader_storage_image_extended_formats: self.shader_storage_image_extended_formats 8429 ^ other.shader_storage_image_extended_formats, 8430 shader_storage_image_multisample: self.shader_storage_image_multisample 8431 ^ other.shader_storage_image_multisample, 8432 shader_storage_image_read_without_format: self.shader_storage_image_read_without_format 8433 ^ other.shader_storage_image_read_without_format, 8434 shader_storage_image_write_without_format: self 8435 .shader_storage_image_write_without_format 8436 ^ other.shader_storage_image_write_without_format, 8437 shader_storage_texel_buffer_array_dynamic_indexing: self 8438 .shader_storage_texel_buffer_array_dynamic_indexing 8439 ^ other.shader_storage_texel_buffer_array_dynamic_indexing, 8440 shader_storage_texel_buffer_array_non_uniform_indexing: self 8441 .shader_storage_texel_buffer_array_non_uniform_indexing 8442 ^ other.shader_storage_texel_buffer_array_non_uniform_indexing, 8443 shader_subgroup_clock: self.shader_subgroup_clock ^ other.shader_subgroup_clock, 8444 shader_subgroup_extended_types: self.shader_subgroup_extended_types 8445 ^ other.shader_subgroup_extended_types, 8446 shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow 8447 ^ other.shader_subgroup_uniform_control_flow, 8448 shader_terminate_invocation: self.shader_terminate_invocation 8449 ^ other.shader_terminate_invocation, 8450 shader_tessellation_and_geometry_point_size: self 8451 .shader_tessellation_and_geometry_point_size 8452 ^ other.shader_tessellation_and_geometry_point_size, 8453 shader_uniform_buffer_array_dynamic_indexing: self 8454 .shader_uniform_buffer_array_dynamic_indexing 8455 ^ other.shader_uniform_buffer_array_dynamic_indexing, 8456 shader_uniform_buffer_array_non_uniform_indexing: self 8457 .shader_uniform_buffer_array_non_uniform_indexing 8458 ^ other.shader_uniform_buffer_array_non_uniform_indexing, 8459 shader_uniform_texel_buffer_array_dynamic_indexing: self 8460 .shader_uniform_texel_buffer_array_dynamic_indexing 8461 ^ other.shader_uniform_texel_buffer_array_dynamic_indexing, 8462 shader_uniform_texel_buffer_array_non_uniform_indexing: self 8463 .shader_uniform_texel_buffer_array_non_uniform_indexing 8464 ^ other.shader_uniform_texel_buffer_array_non_uniform_indexing, 8465 shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory 8466 ^ other.shader_zero_initialize_workgroup_memory, 8467 shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order 8468 ^ other.shading_rate_coarse_sample_order, 8469 shading_rate_image: self.shading_rate_image ^ other.shading_rate_image, 8470 smooth_lines: self.smooth_lines ^ other.smooth_lines, 8471 sparse_binding: self.sparse_binding ^ other.sparse_binding, 8472 sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add 8473 ^ other.sparse_image_float32_atomic_add, 8474 sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max 8475 ^ other.sparse_image_float32_atomic_min_max, 8476 sparse_image_float32_atomics: self.sparse_image_float32_atomics 8477 ^ other.sparse_image_float32_atomics, 8478 sparse_image_int64_atomics: self.sparse_image_int64_atomics 8479 ^ other.sparse_image_int64_atomics, 8480 sparse_residency16_samples: self.sparse_residency16_samples 8481 ^ other.sparse_residency16_samples, 8482 sparse_residency2_samples: self.sparse_residency2_samples 8483 ^ other.sparse_residency2_samples, 8484 sparse_residency4_samples: self.sparse_residency4_samples 8485 ^ other.sparse_residency4_samples, 8486 sparse_residency8_samples: self.sparse_residency8_samples 8487 ^ other.sparse_residency8_samples, 8488 sparse_residency_aliased: self.sparse_residency_aliased 8489 ^ other.sparse_residency_aliased, 8490 sparse_residency_buffer: self.sparse_residency_buffer ^ other.sparse_residency_buffer, 8491 sparse_residency_image2_d: self.sparse_residency_image2_d 8492 ^ other.sparse_residency_image2_d, 8493 sparse_residency_image3_d: self.sparse_residency_image3_d 8494 ^ other.sparse_residency_image3_d, 8495 stippled_bresenham_lines: self.stippled_bresenham_lines 8496 ^ other.stippled_bresenham_lines, 8497 stippled_rectangular_lines: self.stippled_rectangular_lines 8498 ^ other.stippled_rectangular_lines, 8499 stippled_smooth_lines: self.stippled_smooth_lines ^ other.stippled_smooth_lines, 8500 storage_buffer16_bit_access: self.storage_buffer16_bit_access 8501 ^ other.storage_buffer16_bit_access, 8502 storage_buffer8_bit_access: self.storage_buffer8_bit_access 8503 ^ other.storage_buffer8_bit_access, 8504 storage_input_output16: self.storage_input_output16 ^ other.storage_input_output16, 8505 storage_push_constant16: self.storage_push_constant16 ^ other.storage_push_constant16, 8506 storage_push_constant8: self.storage_push_constant8 ^ other.storage_push_constant8, 8507 subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id 8508 ^ other.subgroup_broadcast_dynamic_id, 8509 subgroup_size_control: self.subgroup_size_control ^ other.subgroup_size_control, 8510 subpass_merge_feedback: self.subpass_merge_feedback ^ other.subpass_merge_feedback, 8511 subpass_shading: self.subpass_shading ^ other.subpass_shading, 8512 supersample_fragment_shading_rates: self.supersample_fragment_shading_rates 8513 ^ other.supersample_fragment_shading_rates, 8514 swapchain_maintenance1: self.swapchain_maintenance1 ^ other.swapchain_maintenance1, 8515 synchronization2: self.synchronization2 ^ other.synchronization2, 8516 task_shader: self.task_shader ^ other.task_shader, 8517 tessellation_isolines: self.tessellation_isolines ^ other.tessellation_isolines, 8518 tessellation_point_mode: self.tessellation_point_mode ^ other.tessellation_point_mode, 8519 tessellation_shader: self.tessellation_shader ^ other.tessellation_shader, 8520 texel_buffer_alignment: self.texel_buffer_alignment ^ other.texel_buffer_alignment, 8521 texture_block_match: self.texture_block_match ^ other.texture_block_match, 8522 texture_box_filter: self.texture_box_filter ^ other.texture_box_filter, 8523 texture_compression_astc_hdr: self.texture_compression_astc_hdr 8524 ^ other.texture_compression_astc_hdr, 8525 texture_compression_astc_ldr: self.texture_compression_astc_ldr 8526 ^ other.texture_compression_astc_ldr, 8527 texture_compression_bc: self.texture_compression_bc ^ other.texture_compression_bc, 8528 texture_compression_etc2: self.texture_compression_etc2 8529 ^ other.texture_compression_etc2, 8530 texture_sample_weighted: self.texture_sample_weighted ^ other.texture_sample_weighted, 8531 tile_properties: self.tile_properties ^ other.tile_properties, 8532 timeline_semaphore: self.timeline_semaphore ^ other.timeline_semaphore, 8533 transform_feedback: self.transform_feedback ^ other.transform_feedback, 8534 transform_feedback_preserves_provoking_vertex: self 8535 .transform_feedback_preserves_provoking_vertex 8536 ^ other.transform_feedback_preserves_provoking_vertex, 8537 triangle_fans: self.triangle_fans ^ other.triangle_fans, 8538 uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access 8539 ^ other.uniform_and_storage_buffer16_bit_access, 8540 uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access 8541 ^ other.uniform_and_storage_buffer8_bit_access, 8542 uniform_buffer_standard_layout: self.uniform_buffer_standard_layout 8543 ^ other.uniform_buffer_standard_layout, 8544 variable_multisample_rate: self.variable_multisample_rate 8545 ^ other.variable_multisample_rate, 8546 variable_pointers: self.variable_pointers ^ other.variable_pointers, 8547 variable_pointers_storage_buffer: self.variable_pointers_storage_buffer 8548 ^ other.variable_pointers_storage_buffer, 8549 vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride 8550 ^ other.vertex_attribute_access_beyond_stride, 8551 vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor 8552 ^ other.vertex_attribute_instance_rate_divisor, 8553 vertex_attribute_instance_rate_zero_divisor: self 8554 .vertex_attribute_instance_rate_zero_divisor 8555 ^ other.vertex_attribute_instance_rate_zero_divisor, 8556 vertex_input_dynamic_state: self.vertex_input_dynamic_state 8557 ^ other.vertex_input_dynamic_state, 8558 vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics 8559 ^ other.vertex_pipeline_stores_and_atomics, 8560 vulkan_memory_model: self.vulkan_memory_model ^ other.vulkan_memory_model, 8561 vulkan_memory_model_availability_visibility_chains: self 8562 .vulkan_memory_model_availability_visibility_chains 8563 ^ other.vulkan_memory_model_availability_visibility_chains, 8564 vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope 8565 ^ other.vulkan_memory_model_device_scope, 8566 wide_lines: self.wide_lines ^ other.wide_lines, 8567 workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout 8568 ^ other.workgroup_memory_explicit_layout, 8569 workgroup_memory_explicit_layout16_bit_access: self 8570 .workgroup_memory_explicit_layout16_bit_access 8571 ^ other.workgroup_memory_explicit_layout16_bit_access, 8572 workgroup_memory_explicit_layout8_bit_access: self 8573 .workgroup_memory_explicit_layout8_bit_access 8574 ^ other.workgroup_memory_explicit_layout8_bit_access, 8575 workgroup_memory_explicit_layout_scalar_block_layout: self 8576 .workgroup_memory_explicit_layout_scalar_block_layout 8577 ^ other.workgroup_memory_explicit_layout_scalar_block_layout, 8578 ycbcr2plane444_formats: self.ycbcr2plane444_formats ^ other.ycbcr2plane444_formats, 8579 ycbcr_image_arrays: self.ycbcr_image_arrays ^ other.ycbcr_image_arrays, 8580 _ne: crate::NonExhaustive(()), 8581 } 8582 } 8583 } 8584 impl std::ops::BitAnd for Features { 8585 type Output = Features; 8586 #[inline] bitand(self, rhs: Self) -> Self::Output8587 fn bitand(self, rhs: Self) -> Self::Output { 8588 self.intersection(&rhs) 8589 } 8590 } 8591 impl std::ops::BitAndAssign for Features { 8592 #[inline] bitand_assign(&mut self, rhs: Self)8593 fn bitand_assign(&mut self, rhs: Self) { 8594 *self = self.intersection(&rhs); 8595 } 8596 } 8597 impl std::ops::BitOr for Features { 8598 type Output = Features; 8599 #[inline] bitor(self, rhs: Self) -> Self::Output8600 fn bitor(self, rhs: Self) -> Self::Output { 8601 self.union(&rhs) 8602 } 8603 } 8604 impl std::ops::BitOrAssign for Features { 8605 #[inline] bitor_assign(&mut self, rhs: Self)8606 fn bitor_assign(&mut self, rhs: Self) { 8607 *self = self.union(&rhs); 8608 } 8609 } 8610 impl std::ops::BitXor for Features { 8611 type Output = Features; 8612 #[inline] bitxor(self, rhs: Self) -> Self::Output8613 fn bitxor(self, rhs: Self) -> Self::Output { 8614 self.symmetric_difference(&rhs) 8615 } 8616 } 8617 impl std::ops::BitXorAssign for Features { 8618 #[inline] bitxor_assign(&mut self, rhs: Self)8619 fn bitxor_assign(&mut self, rhs: Self) { 8620 *self = self.symmetric_difference(&rhs); 8621 } 8622 } 8623 impl std::ops::Sub for Features { 8624 type Output = Features; 8625 #[inline] sub(self, rhs: Self) -> Self::Output8626 fn sub(self, rhs: Self) -> Self::Output { 8627 self.difference(&rhs) 8628 } 8629 } 8630 impl std::ops::SubAssign for Features { 8631 #[inline] sub_assign(&mut self, rhs: Self)8632 fn sub_assign(&mut self, rhs: Self) { 8633 *self = self.difference(&rhs); 8634 } 8635 } 8636 impl std::fmt::Debug for Features { 8637 #[allow(unused_assignments)] fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error>8638 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { 8639 write!(f, "[")?; 8640 let mut first = true; 8641 if self.acceleration_structure { 8642 if !first { 8643 write!(f, ", ")? 8644 } else { 8645 first = false; 8646 } 8647 f.write_str("accelerationStructure")?; 8648 } 8649 if self.acceleration_structure_capture_replay { 8650 if !first { 8651 write!(f, ", ")? 8652 } else { 8653 first = false; 8654 } 8655 f.write_str("accelerationStructureCaptureReplay")?; 8656 } 8657 if self.acceleration_structure_host_commands { 8658 if !first { 8659 write!(f, ", ")? 8660 } else { 8661 first = false; 8662 } 8663 f.write_str("accelerationStructureHostCommands")?; 8664 } 8665 if self.acceleration_structure_indirect_build { 8666 if !first { 8667 write!(f, ", ")? 8668 } else { 8669 first = false; 8670 } 8671 f.write_str("accelerationStructureIndirectBuild")?; 8672 } 8673 if self.advanced_blend_coherent_operations { 8674 if !first { 8675 write!(f, ", ")? 8676 } else { 8677 first = false; 8678 } 8679 f.write_str("advancedBlendCoherentOperations")?; 8680 } 8681 if self.alpha_to_one { 8682 if !first { 8683 write!(f, ", ")? 8684 } else { 8685 first = false; 8686 } 8687 f.write_str("alphaToOne")?; 8688 } 8689 if self.amigo_profiling { 8690 if !first { 8691 write!(f, ", ")? 8692 } else { 8693 first = false; 8694 } 8695 f.write_str("amigoProfiling")?; 8696 } 8697 if self.attachment_feedback_loop_layout { 8698 if !first { 8699 write!(f, ", ")? 8700 } else { 8701 first = false; 8702 } 8703 f.write_str("attachmentFeedbackLoopLayout")?; 8704 } 8705 if self.attachment_fragment_shading_rate { 8706 if !first { 8707 write!(f, ", ")? 8708 } else { 8709 first = false; 8710 } 8711 f.write_str("attachmentFragmentShadingRate")?; 8712 } 8713 if self.border_color_swizzle { 8714 if !first { 8715 write!(f, ", ")? 8716 } else { 8717 first = false; 8718 } 8719 f.write_str("borderColorSwizzle")?; 8720 } 8721 if self.border_color_swizzle_from_image { 8722 if !first { 8723 write!(f, ", ")? 8724 } else { 8725 first = false; 8726 } 8727 f.write_str("borderColorSwizzleFromImage")?; 8728 } 8729 if self.bresenham_lines { 8730 if !first { 8731 write!(f, ", ")? 8732 } else { 8733 first = false; 8734 } 8735 f.write_str("bresenhamLines")?; 8736 } 8737 if self.buffer_device_address { 8738 if !first { 8739 write!(f, ", ")? 8740 } else { 8741 first = false; 8742 } 8743 f.write_str("bufferDeviceAddress")?; 8744 } 8745 if self.buffer_device_address_capture_replay { 8746 if !first { 8747 write!(f, ", ")? 8748 } else { 8749 first = false; 8750 } 8751 f.write_str("bufferDeviceAddressCaptureReplay")?; 8752 } 8753 if self.buffer_device_address_multi_device { 8754 if !first { 8755 write!(f, ", ")? 8756 } else { 8757 first = false; 8758 } 8759 f.write_str("bufferDeviceAddressMultiDevice")?; 8760 } 8761 if self.color_write_enable { 8762 if !first { 8763 write!(f, ", ")? 8764 } else { 8765 first = false; 8766 } 8767 f.write_str("colorWriteEnable")?; 8768 } 8769 if self.compute_derivative_group_linear { 8770 if !first { 8771 write!(f, ", ")? 8772 } else { 8773 first = false; 8774 } 8775 f.write_str("computeDerivativeGroupLinear")?; 8776 } 8777 if self.compute_derivative_group_quads { 8778 if !first { 8779 write!(f, ", ")? 8780 } else { 8781 first = false; 8782 } 8783 f.write_str("computeDerivativeGroupQuads")?; 8784 } 8785 if self.compute_full_subgroups { 8786 if !first { 8787 write!(f, ", ")? 8788 } else { 8789 first = false; 8790 } 8791 f.write_str("computeFullSubgroups")?; 8792 } 8793 if self.conditional_rendering { 8794 if !first { 8795 write!(f, ", ")? 8796 } else { 8797 first = false; 8798 } 8799 f.write_str("conditionalRendering")?; 8800 } 8801 if self.constant_alpha_color_blend_factors { 8802 if !first { 8803 write!(f, ", ")? 8804 } else { 8805 first = false; 8806 } 8807 f.write_str("constantAlphaColorBlendFactors")?; 8808 } 8809 if self.cooperative_matrix { 8810 if !first { 8811 write!(f, ", ")? 8812 } else { 8813 first = false; 8814 } 8815 f.write_str("cooperativeMatrix")?; 8816 } 8817 if self.cooperative_matrix_robust_buffer_access { 8818 if !first { 8819 write!(f, ", ")? 8820 } else { 8821 first = false; 8822 } 8823 f.write_str("cooperativeMatrixRobustBufferAccess")?; 8824 } 8825 if self.corner_sampled_image { 8826 if !first { 8827 write!(f, ", ")? 8828 } else { 8829 first = false; 8830 } 8831 f.write_str("cornerSampledImage")?; 8832 } 8833 if self.coverage_reduction_mode { 8834 if !first { 8835 write!(f, ", ")? 8836 } else { 8837 first = false; 8838 } 8839 f.write_str("coverageReductionMode")?; 8840 } 8841 if self.custom_border_color_without_format { 8842 if !first { 8843 write!(f, ", ")? 8844 } else { 8845 first = false; 8846 } 8847 f.write_str("customBorderColorWithoutFormat")?; 8848 } 8849 if self.custom_border_colors { 8850 if !first { 8851 write!(f, ", ")? 8852 } else { 8853 first = false; 8854 } 8855 f.write_str("customBorderColors")?; 8856 } 8857 if self.decode_mode_shared_exponent { 8858 if !first { 8859 write!(f, ", ")? 8860 } else { 8861 first = false; 8862 } 8863 f.write_str("decodeModeSharedExponent")?; 8864 } 8865 if self.dedicated_allocation_image_aliasing { 8866 if !first { 8867 write!(f, ", ")? 8868 } else { 8869 first = false; 8870 } 8871 f.write_str("dedicatedAllocationImageAliasing")?; 8872 } 8873 if self.depth_bias_clamp { 8874 if !first { 8875 write!(f, ", ")? 8876 } else { 8877 first = false; 8878 } 8879 f.write_str("depthBiasClamp")?; 8880 } 8881 if self.depth_bounds { 8882 if !first { 8883 write!(f, ", ")? 8884 } else { 8885 first = false; 8886 } 8887 f.write_str("depthBounds")?; 8888 } 8889 if self.depth_clamp { 8890 if !first { 8891 write!(f, ", ")? 8892 } else { 8893 first = false; 8894 } 8895 f.write_str("depthClamp")?; 8896 } 8897 if self.depth_clamp_zero_one { 8898 if !first { 8899 write!(f, ", ")? 8900 } else { 8901 first = false; 8902 } 8903 f.write_str("depthClampZeroOne")?; 8904 } 8905 if self.depth_clip_control { 8906 if !first { 8907 write!(f, ", ")? 8908 } else { 8909 first = false; 8910 } 8911 f.write_str("depthClipControl")?; 8912 } 8913 if self.depth_clip_enable { 8914 if !first { 8915 write!(f, ", ")? 8916 } else { 8917 first = false; 8918 } 8919 f.write_str("depthClipEnable")?; 8920 } 8921 if self.descriptor_binding_acceleration_structure_update_after_bind { 8922 if !first { 8923 write!(f, ", ")? 8924 } else { 8925 first = false; 8926 } 8927 f.write_str("descriptorBindingAccelerationStructureUpdateAfterBind")?; 8928 } 8929 if self.descriptor_binding_inline_uniform_block_update_after_bind { 8930 if !first { 8931 write!(f, ", ")? 8932 } else { 8933 first = false; 8934 } 8935 f.write_str("descriptorBindingInlineUniformBlockUpdateAfterBind")?; 8936 } 8937 if self.descriptor_binding_partially_bound { 8938 if !first { 8939 write!(f, ", ")? 8940 } else { 8941 first = false; 8942 } 8943 f.write_str("descriptorBindingPartiallyBound")?; 8944 } 8945 if self.descriptor_binding_sampled_image_update_after_bind { 8946 if !first { 8947 write!(f, ", ")? 8948 } else { 8949 first = false; 8950 } 8951 f.write_str("descriptorBindingSampledImageUpdateAfterBind")?; 8952 } 8953 if self.descriptor_binding_storage_buffer_update_after_bind { 8954 if !first { 8955 write!(f, ", ")? 8956 } else { 8957 first = false; 8958 } 8959 f.write_str("descriptorBindingStorageBufferUpdateAfterBind")?; 8960 } 8961 if self.descriptor_binding_storage_image_update_after_bind { 8962 if !first { 8963 write!(f, ", ")? 8964 } else { 8965 first = false; 8966 } 8967 f.write_str("descriptorBindingStorageImageUpdateAfterBind")?; 8968 } 8969 if self.descriptor_binding_storage_texel_buffer_update_after_bind { 8970 if !first { 8971 write!(f, ", ")? 8972 } else { 8973 first = false; 8974 } 8975 f.write_str("descriptorBindingStorageTexelBufferUpdateAfterBind")?; 8976 } 8977 if self.descriptor_binding_uniform_buffer_update_after_bind { 8978 if !first { 8979 write!(f, ", ")? 8980 } else { 8981 first = false; 8982 } 8983 f.write_str("descriptorBindingUniformBufferUpdateAfterBind")?; 8984 } 8985 if self.descriptor_binding_uniform_texel_buffer_update_after_bind { 8986 if !first { 8987 write!(f, ", ")? 8988 } else { 8989 first = false; 8990 } 8991 f.write_str("descriptorBindingUniformTexelBufferUpdateAfterBind")?; 8992 } 8993 if self.descriptor_binding_update_unused_while_pending { 8994 if !first { 8995 write!(f, ", ")? 8996 } else { 8997 first = false; 8998 } 8999 f.write_str("descriptorBindingUpdateUnusedWhilePending")?; 9000 } 9001 if self.descriptor_binding_variable_descriptor_count { 9002 if !first { 9003 write!(f, ", ")? 9004 } else { 9005 first = false; 9006 } 9007 f.write_str("descriptorBindingVariableDescriptorCount")?; 9008 } 9009 if self.descriptor_buffer { 9010 if !first { 9011 write!(f, ", ")? 9012 } else { 9013 first = false; 9014 } 9015 f.write_str("descriptorBuffer")?; 9016 } 9017 if self.descriptor_buffer_capture_replay { 9018 if !first { 9019 write!(f, ", ")? 9020 } else { 9021 first = false; 9022 } 9023 f.write_str("descriptorBufferCaptureReplay")?; 9024 } 9025 if self.descriptor_buffer_image_layout_ignored { 9026 if !first { 9027 write!(f, ", ")? 9028 } else { 9029 first = false; 9030 } 9031 f.write_str("descriptorBufferImageLayoutIgnored")?; 9032 } 9033 if self.descriptor_buffer_push_descriptors { 9034 if !first { 9035 write!(f, ", ")? 9036 } else { 9037 first = false; 9038 } 9039 f.write_str("descriptorBufferPushDescriptors")?; 9040 } 9041 if self.descriptor_indexing { 9042 if !first { 9043 write!(f, ", ")? 9044 } else { 9045 first = false; 9046 } 9047 f.write_str("descriptorIndexing")?; 9048 } 9049 if self.descriptor_set_host_mapping { 9050 if !first { 9051 write!(f, ", ")? 9052 } else { 9053 first = false; 9054 } 9055 f.write_str("descriptorSetHostMapping")?; 9056 } 9057 if self.device_coherent_memory { 9058 if !first { 9059 write!(f, ", ")? 9060 } else { 9061 first = false; 9062 } 9063 f.write_str("deviceCoherentMemory")?; 9064 } 9065 if self.device_fault { 9066 if !first { 9067 write!(f, ", ")? 9068 } else { 9069 first = false; 9070 } 9071 f.write_str("deviceFault")?; 9072 } 9073 if self.device_fault_vendor_binary { 9074 if !first { 9075 write!(f, ", ")? 9076 } else { 9077 first = false; 9078 } 9079 f.write_str("deviceFaultVendorBinary")?; 9080 } 9081 if self.device_generated_commands { 9082 if !first { 9083 write!(f, ", ")? 9084 } else { 9085 first = false; 9086 } 9087 f.write_str("deviceGeneratedCommands")?; 9088 } 9089 if self.device_memory_report { 9090 if !first { 9091 write!(f, ", ")? 9092 } else { 9093 first = false; 9094 } 9095 f.write_str("deviceMemoryReport")?; 9096 } 9097 if self.diagnostics_config { 9098 if !first { 9099 write!(f, ", ")? 9100 } else { 9101 first = false; 9102 } 9103 f.write_str("diagnosticsConfig")?; 9104 } 9105 if self.draw_indirect_count { 9106 if !first { 9107 write!(f, ", ")? 9108 } else { 9109 first = false; 9110 } 9111 f.write_str("drawIndirectCount")?; 9112 } 9113 if self.draw_indirect_first_instance { 9114 if !first { 9115 write!(f, ", ")? 9116 } else { 9117 first = false; 9118 } 9119 f.write_str("drawIndirectFirstInstance")?; 9120 } 9121 if self.dual_src_blend { 9122 if !first { 9123 write!(f, ", ")? 9124 } else { 9125 first = false; 9126 } 9127 f.write_str("dualSrcBlend")?; 9128 } 9129 if self.dynamic_rendering { 9130 if !first { 9131 write!(f, ", ")? 9132 } else { 9133 first = false; 9134 } 9135 f.write_str("dynamicRendering")?; 9136 } 9137 if self.events { 9138 if !first { 9139 write!(f, ", ")? 9140 } else { 9141 first = false; 9142 } 9143 f.write_str("events")?; 9144 } 9145 if self.exclusive_scissor { 9146 if !first { 9147 write!(f, ", ")? 9148 } else { 9149 first = false; 9150 } 9151 f.write_str("exclusiveScissor")?; 9152 } 9153 if self.extended_dynamic_state { 9154 if !first { 9155 write!(f, ", ")? 9156 } else { 9157 first = false; 9158 } 9159 f.write_str("extendedDynamicState")?; 9160 } 9161 if self.extended_dynamic_state2 { 9162 if !first { 9163 write!(f, ", ")? 9164 } else { 9165 first = false; 9166 } 9167 f.write_str("extendedDynamicState2")?; 9168 } 9169 if self.extended_dynamic_state2_logic_op { 9170 if !first { 9171 write!(f, ", ")? 9172 } else { 9173 first = false; 9174 } 9175 f.write_str("extendedDynamicState2LogicOp")?; 9176 } 9177 if self.extended_dynamic_state2_patch_control_points { 9178 if !first { 9179 write!(f, ", ")? 9180 } else { 9181 first = false; 9182 } 9183 f.write_str("extendedDynamicState2PatchControlPoints")?; 9184 } 9185 if self.extended_dynamic_state3_alpha_to_coverage_enable { 9186 if !first { 9187 write!(f, ", ")? 9188 } else { 9189 first = false; 9190 } 9191 f.write_str("extendedDynamicState3AlphaToCoverageEnable")?; 9192 } 9193 if self.extended_dynamic_state3_alpha_to_one_enable { 9194 if !first { 9195 write!(f, ", ")? 9196 } else { 9197 first = false; 9198 } 9199 f.write_str("extendedDynamicState3AlphaToOneEnable")?; 9200 } 9201 if self.extended_dynamic_state3_color_blend_advanced { 9202 if !first { 9203 write!(f, ", ")? 9204 } else { 9205 first = false; 9206 } 9207 f.write_str("extendedDynamicState3ColorBlendAdvanced")?; 9208 } 9209 if self.extended_dynamic_state3_color_blend_enable { 9210 if !first { 9211 write!(f, ", ")? 9212 } else { 9213 first = false; 9214 } 9215 f.write_str("extendedDynamicState3ColorBlendEnable")?; 9216 } 9217 if self.extended_dynamic_state3_color_blend_equation { 9218 if !first { 9219 write!(f, ", ")? 9220 } else { 9221 first = false; 9222 } 9223 f.write_str("extendedDynamicState3ColorBlendEquation")?; 9224 } 9225 if self.extended_dynamic_state3_color_write_mask { 9226 if !first { 9227 write!(f, ", ")? 9228 } else { 9229 first = false; 9230 } 9231 f.write_str("extendedDynamicState3ColorWriteMask")?; 9232 } 9233 if self.extended_dynamic_state3_conservative_rasterization_mode { 9234 if !first { 9235 write!(f, ", ")? 9236 } else { 9237 first = false; 9238 } 9239 f.write_str("extendedDynamicState3ConservativeRasterizationMode")?; 9240 } 9241 if self.extended_dynamic_state3_coverage_modulation_mode { 9242 if !first { 9243 write!(f, ", ")? 9244 } else { 9245 first = false; 9246 } 9247 f.write_str("extendedDynamicState3CoverageModulationMode")?; 9248 } 9249 if self.extended_dynamic_state3_coverage_modulation_table { 9250 if !first { 9251 write!(f, ", ")? 9252 } else { 9253 first = false; 9254 } 9255 f.write_str("extendedDynamicState3CoverageModulationTable")?; 9256 } 9257 if self.extended_dynamic_state3_coverage_modulation_table_enable { 9258 if !first { 9259 write!(f, ", ")? 9260 } else { 9261 first = false; 9262 } 9263 f.write_str("extendedDynamicState3CoverageModulationTableEnable")?; 9264 } 9265 if self.extended_dynamic_state3_coverage_reduction_mode { 9266 if !first { 9267 write!(f, ", ")? 9268 } else { 9269 first = false; 9270 } 9271 f.write_str("extendedDynamicState3CoverageReductionMode")?; 9272 } 9273 if self.extended_dynamic_state3_coverage_to_color_enable { 9274 if !first { 9275 write!(f, ", ")? 9276 } else { 9277 first = false; 9278 } 9279 f.write_str("extendedDynamicState3CoverageToColorEnable")?; 9280 } 9281 if self.extended_dynamic_state3_coverage_to_color_location { 9282 if !first { 9283 write!(f, ", ")? 9284 } else { 9285 first = false; 9286 } 9287 f.write_str("extendedDynamicState3CoverageToColorLocation")?; 9288 } 9289 if self.extended_dynamic_state3_depth_clamp_enable { 9290 if !first { 9291 write!(f, ", ")? 9292 } else { 9293 first = false; 9294 } 9295 f.write_str("extendedDynamicState3DepthClampEnable")?; 9296 } 9297 if self.extended_dynamic_state3_depth_clip_enable { 9298 if !first { 9299 write!(f, ", ")? 9300 } else { 9301 first = false; 9302 } 9303 f.write_str("extendedDynamicState3DepthClipEnable")?; 9304 } 9305 if self.extended_dynamic_state3_depth_clip_negative_one_to_one { 9306 if !first { 9307 write!(f, ", ")? 9308 } else { 9309 first = false; 9310 } 9311 f.write_str("extendedDynamicState3DepthClipNegativeOneToOne")?; 9312 } 9313 if self.extended_dynamic_state3_extra_primitive_overestimation_size { 9314 if !first { 9315 write!(f, ", ")? 9316 } else { 9317 first = false; 9318 } 9319 f.write_str("extendedDynamicState3ExtraPrimitiveOverestimationSize")?; 9320 } 9321 if self.extended_dynamic_state3_line_rasterization_mode { 9322 if !first { 9323 write!(f, ", ")? 9324 } else { 9325 first = false; 9326 } 9327 f.write_str("extendedDynamicState3LineRasterizationMode")?; 9328 } 9329 if self.extended_dynamic_state3_line_stipple_enable { 9330 if !first { 9331 write!(f, ", ")? 9332 } else { 9333 first = false; 9334 } 9335 f.write_str("extendedDynamicState3LineStippleEnable")?; 9336 } 9337 if self.extended_dynamic_state3_logic_op_enable { 9338 if !first { 9339 write!(f, ", ")? 9340 } else { 9341 first = false; 9342 } 9343 f.write_str("extendedDynamicState3LogicOpEnable")?; 9344 } 9345 if self.extended_dynamic_state3_polygon_mode { 9346 if !first { 9347 write!(f, ", ")? 9348 } else { 9349 first = false; 9350 } 9351 f.write_str("extendedDynamicState3PolygonMode")?; 9352 } 9353 if self.extended_dynamic_state3_provoking_vertex_mode { 9354 if !first { 9355 write!(f, ", ")? 9356 } else { 9357 first = false; 9358 } 9359 f.write_str("extendedDynamicState3ProvokingVertexMode")?; 9360 } 9361 if self.extended_dynamic_state3_rasterization_samples { 9362 if !first { 9363 write!(f, ", ")? 9364 } else { 9365 first = false; 9366 } 9367 f.write_str("extendedDynamicState3RasterizationSamples")?; 9368 } 9369 if self.extended_dynamic_state3_rasterization_stream { 9370 if !first { 9371 write!(f, ", ")? 9372 } else { 9373 first = false; 9374 } 9375 f.write_str("extendedDynamicState3RasterizationStream")?; 9376 } 9377 if self.extended_dynamic_state3_representative_fragment_test_enable { 9378 if !first { 9379 write!(f, ", ")? 9380 } else { 9381 first = false; 9382 } 9383 f.write_str("extendedDynamicState3RepresentativeFragmentTestEnable")?; 9384 } 9385 if self.extended_dynamic_state3_sample_locations_enable { 9386 if !first { 9387 write!(f, ", ")? 9388 } else { 9389 first = false; 9390 } 9391 f.write_str("extendedDynamicState3SampleLocationsEnable")?; 9392 } 9393 if self.extended_dynamic_state3_sample_mask { 9394 if !first { 9395 write!(f, ", ")? 9396 } else { 9397 first = false; 9398 } 9399 f.write_str("extendedDynamicState3SampleMask")?; 9400 } 9401 if self.extended_dynamic_state3_shading_rate_image_enable { 9402 if !first { 9403 write!(f, ", ")? 9404 } else { 9405 first = false; 9406 } 9407 f.write_str("extendedDynamicState3ShadingRateImageEnable")?; 9408 } 9409 if self.extended_dynamic_state3_tessellation_domain_origin { 9410 if !first { 9411 write!(f, ", ")? 9412 } else { 9413 first = false; 9414 } 9415 f.write_str("extendedDynamicState3TessellationDomainOrigin")?; 9416 } 9417 if self.extended_dynamic_state3_viewport_swizzle { 9418 if !first { 9419 write!(f, ", ")? 9420 } else { 9421 first = false; 9422 } 9423 f.write_str("extendedDynamicState3ViewportSwizzle")?; 9424 } 9425 if self.extended_dynamic_state3_viewport_w_scaling_enable { 9426 if !first { 9427 write!(f, ", ")? 9428 } else { 9429 first = false; 9430 } 9431 f.write_str("extendedDynamicState3ViewportWScalingEnable")?; 9432 } 9433 if self.external_memory_rdma { 9434 if !first { 9435 write!(f, ", ")? 9436 } else { 9437 first = false; 9438 } 9439 f.write_str("externalMemoryRDMA")?; 9440 } 9441 if self.fill_mode_non_solid { 9442 if !first { 9443 write!(f, ", ")? 9444 } else { 9445 first = false; 9446 } 9447 f.write_str("fillModeNonSolid")?; 9448 } 9449 if self.format_a4b4g4r4 { 9450 if !first { 9451 write!(f, ", ")? 9452 } else { 9453 first = false; 9454 } 9455 f.write_str("formatA4B4G4R4")?; 9456 } 9457 if self.format_a4r4g4b4 { 9458 if !first { 9459 write!(f, ", ")? 9460 } else { 9461 first = false; 9462 } 9463 f.write_str("formatA4R4G4B4")?; 9464 } 9465 if self.format_rgba10x6_without_y_cb_cr_sampler { 9466 if !first { 9467 write!(f, ", ")? 9468 } else { 9469 first = false; 9470 } 9471 f.write_str("formatRgba10x6WithoutYCbCrSampler")?; 9472 } 9473 if self.fragment_density_map { 9474 if !first { 9475 write!(f, ", ")? 9476 } else { 9477 first = false; 9478 } 9479 f.write_str("fragmentDensityMap")?; 9480 } 9481 if self.fragment_density_map_deferred { 9482 if !first { 9483 write!(f, ", ")? 9484 } else { 9485 first = false; 9486 } 9487 f.write_str("fragmentDensityMapDeferred")?; 9488 } 9489 if self.fragment_density_map_dynamic { 9490 if !first { 9491 write!(f, ", ")? 9492 } else { 9493 first = false; 9494 } 9495 f.write_str("fragmentDensityMapDynamic")?; 9496 } 9497 if self.fragment_density_map_non_subsampled_images { 9498 if !first { 9499 write!(f, ", ")? 9500 } else { 9501 first = false; 9502 } 9503 f.write_str("fragmentDensityMapNonSubsampledImages")?; 9504 } 9505 if self.fragment_density_map_offset { 9506 if !first { 9507 write!(f, ", ")? 9508 } else { 9509 first = false; 9510 } 9511 f.write_str("fragmentDensityMapOffset")?; 9512 } 9513 if self.fragment_shader_barycentric { 9514 if !first { 9515 write!(f, ", ")? 9516 } else { 9517 first = false; 9518 } 9519 f.write_str("fragmentShaderBarycentric")?; 9520 } 9521 if self.fragment_shader_pixel_interlock { 9522 if !first { 9523 write!(f, ", ")? 9524 } else { 9525 first = false; 9526 } 9527 f.write_str("fragmentShaderPixelInterlock")?; 9528 } 9529 if self.fragment_shader_sample_interlock { 9530 if !first { 9531 write!(f, ", ")? 9532 } else { 9533 first = false; 9534 } 9535 f.write_str("fragmentShaderSampleInterlock")?; 9536 } 9537 if self.fragment_shader_shading_rate_interlock { 9538 if !first { 9539 write!(f, ", ")? 9540 } else { 9541 first = false; 9542 } 9543 f.write_str("fragmentShaderShadingRateInterlock")?; 9544 } 9545 if self.fragment_shading_rate_enums { 9546 if !first { 9547 write!(f, ", ")? 9548 } else { 9549 first = false; 9550 } 9551 f.write_str("fragmentShadingRateEnums")?; 9552 } 9553 if self.fragment_stores_and_atomics { 9554 if !first { 9555 write!(f, ", ")? 9556 } else { 9557 first = false; 9558 } 9559 f.write_str("fragmentStoresAndAtomics")?; 9560 } 9561 if self.full_draw_index_uint32 { 9562 if !first { 9563 write!(f, ", ")? 9564 } else { 9565 first = false; 9566 } 9567 f.write_str("fullDrawIndexUint32")?; 9568 } 9569 if self.geometry_shader { 9570 if !first { 9571 write!(f, ", ")? 9572 } else { 9573 first = false; 9574 } 9575 f.write_str("geometryShader")?; 9576 } 9577 if self.geometry_streams { 9578 if !first { 9579 write!(f, ", ")? 9580 } else { 9581 first = false; 9582 } 9583 f.write_str("geometryStreams")?; 9584 } 9585 if self.global_priority_query { 9586 if !first { 9587 write!(f, ", ")? 9588 } else { 9589 first = false; 9590 } 9591 f.write_str("globalPriorityQuery")?; 9592 } 9593 if self.graphics_pipeline_library { 9594 if !first { 9595 write!(f, ", ")? 9596 } else { 9597 first = false; 9598 } 9599 f.write_str("graphicsPipelineLibrary")?; 9600 } 9601 if self.host_query_reset { 9602 if !first { 9603 write!(f, ", ")? 9604 } else { 9605 first = false; 9606 } 9607 f.write_str("hostQueryReset")?; 9608 } 9609 if self.image2_d_view_of3_d { 9610 if !first { 9611 write!(f, ", ")? 9612 } else { 9613 first = false; 9614 } 9615 f.write_str("image2DViewOf3D")?; 9616 } 9617 if self.image_compression_control { 9618 if !first { 9619 write!(f, ", ")? 9620 } else { 9621 first = false; 9622 } 9623 f.write_str("imageCompressionControl")?; 9624 } 9625 if self.image_compression_control_swapchain { 9626 if !first { 9627 write!(f, ", ")? 9628 } else { 9629 first = false; 9630 } 9631 f.write_str("imageCompressionControlSwapchain")?; 9632 } 9633 if self.image_cube_array { 9634 if !first { 9635 write!(f, ", ")? 9636 } else { 9637 first = false; 9638 } 9639 f.write_str("imageCubeArray")?; 9640 } 9641 if self.image_footprint { 9642 if !first { 9643 write!(f, ", ")? 9644 } else { 9645 first = false; 9646 } 9647 f.write_str("imageFootprint")?; 9648 } 9649 if self.image_view2_d_on3_d_image { 9650 if !first { 9651 write!(f, ", ")? 9652 } else { 9653 first = false; 9654 } 9655 f.write_str("imageView2DOn3DImage")?; 9656 } 9657 if self.image_view_format_reinterpretation { 9658 if !first { 9659 write!(f, ", ")? 9660 } else { 9661 first = false; 9662 } 9663 f.write_str("imageViewFormatReinterpretation")?; 9664 } 9665 if self.image_view_format_swizzle { 9666 if !first { 9667 write!(f, ", ")? 9668 } else { 9669 first = false; 9670 } 9671 f.write_str("imageViewFormatSwizzle")?; 9672 } 9673 if self.imageless_framebuffer { 9674 if !first { 9675 write!(f, ", ")? 9676 } else { 9677 first = false; 9678 } 9679 f.write_str("imagelessFramebuffer")?; 9680 } 9681 if self.independent_blend { 9682 if !first { 9683 write!(f, ", ")? 9684 } else { 9685 first = false; 9686 } 9687 f.write_str("independentBlend")?; 9688 } 9689 if self.index_type_uint8 { 9690 if !first { 9691 write!(f, ", ")? 9692 } else { 9693 first = false; 9694 } 9695 f.write_str("indexTypeUint8")?; 9696 } 9697 if self.indirect_copy { 9698 if !first { 9699 write!(f, ", ")? 9700 } else { 9701 first = false; 9702 } 9703 f.write_str("indirectCopy")?; 9704 } 9705 if self.inherited_conditional_rendering { 9706 if !first { 9707 write!(f, ", ")? 9708 } else { 9709 first = false; 9710 } 9711 f.write_str("inheritedConditionalRendering")?; 9712 } 9713 if self.inherited_queries { 9714 if !first { 9715 write!(f, ", ")? 9716 } else { 9717 first = false; 9718 } 9719 f.write_str("inheritedQueries")?; 9720 } 9721 if self.inherited_viewport_scissor2_d { 9722 if !first { 9723 write!(f, ", ")? 9724 } else { 9725 first = false; 9726 } 9727 f.write_str("inheritedViewportScissor2D")?; 9728 } 9729 if self.inline_uniform_block { 9730 if !first { 9731 write!(f, ", ")? 9732 } else { 9733 first = false; 9734 } 9735 f.write_str("inlineUniformBlock")?; 9736 } 9737 if self.invocation_mask { 9738 if !first { 9739 write!(f, ", ")? 9740 } else { 9741 first = false; 9742 } 9743 f.write_str("invocationMask")?; 9744 } 9745 if self.large_points { 9746 if !first { 9747 write!(f, ", ")? 9748 } else { 9749 first = false; 9750 } 9751 f.write_str("largePoints")?; 9752 } 9753 if self.legacy_dithering { 9754 if !first { 9755 write!(f, ", ")? 9756 } else { 9757 first = false; 9758 } 9759 f.write_str("legacyDithering")?; 9760 } 9761 if self.linear_color_attachment { 9762 if !first { 9763 write!(f, ", ")? 9764 } else { 9765 first = false; 9766 } 9767 f.write_str("linearColorAttachment")?; 9768 } 9769 if self.logic_op { 9770 if !first { 9771 write!(f, ", ")? 9772 } else { 9773 first = false; 9774 } 9775 f.write_str("logicOp")?; 9776 } 9777 if self.maintenance4 { 9778 if !first { 9779 write!(f, ", ")? 9780 } else { 9781 first = false; 9782 } 9783 f.write_str("maintenance4")?; 9784 } 9785 if self.memory_decompression { 9786 if !first { 9787 write!(f, ", ")? 9788 } else { 9789 first = false; 9790 } 9791 f.write_str("memoryDecompression")?; 9792 } 9793 if self.memory_priority { 9794 if !first { 9795 write!(f, ", ")? 9796 } else { 9797 first = false; 9798 } 9799 f.write_str("memoryPriority")?; 9800 } 9801 if self.mesh_shader { 9802 if !first { 9803 write!(f, ", ")? 9804 } else { 9805 first = false; 9806 } 9807 f.write_str("meshShader")?; 9808 } 9809 if self.mesh_shader_queries { 9810 if !first { 9811 write!(f, ", ")? 9812 } else { 9813 first = false; 9814 } 9815 f.write_str("meshShaderQueries")?; 9816 } 9817 if self.micromap { 9818 if !first { 9819 write!(f, ", ")? 9820 } else { 9821 first = false; 9822 } 9823 f.write_str("micromap")?; 9824 } 9825 if self.micromap_capture_replay { 9826 if !first { 9827 write!(f, ", ")? 9828 } else { 9829 first = false; 9830 } 9831 f.write_str("micromapCaptureReplay")?; 9832 } 9833 if self.micromap_host_commands { 9834 if !first { 9835 write!(f, ", ")? 9836 } else { 9837 first = false; 9838 } 9839 f.write_str("micromapHostCommands")?; 9840 } 9841 if self.min_lod { 9842 if !first { 9843 write!(f, ", ")? 9844 } else { 9845 first = false; 9846 } 9847 f.write_str("minLod")?; 9848 } 9849 if self.multi_draw { 9850 if !first { 9851 write!(f, ", ")? 9852 } else { 9853 first = false; 9854 } 9855 f.write_str("multiDraw")?; 9856 } 9857 if self.multi_draw_indirect { 9858 if !first { 9859 write!(f, ", ")? 9860 } else { 9861 first = false; 9862 } 9863 f.write_str("multiDrawIndirect")?; 9864 } 9865 if self.multi_viewport { 9866 if !first { 9867 write!(f, ", ")? 9868 } else { 9869 first = false; 9870 } 9871 f.write_str("multiViewport")?; 9872 } 9873 if self.multisample_array_image { 9874 if !first { 9875 write!(f, ", ")? 9876 } else { 9877 first = false; 9878 } 9879 f.write_str("multisampleArrayImage")?; 9880 } 9881 if self.multisampled_render_to_single_sampled { 9882 if !first { 9883 write!(f, ", ")? 9884 } else { 9885 first = false; 9886 } 9887 f.write_str("multisampledRenderToSingleSampled")?; 9888 } 9889 if self.multiview { 9890 if !first { 9891 write!(f, ", ")? 9892 } else { 9893 first = false; 9894 } 9895 f.write_str("multiview")?; 9896 } 9897 if self.multiview_geometry_shader { 9898 if !first { 9899 write!(f, ", ")? 9900 } else { 9901 first = false; 9902 } 9903 f.write_str("multiviewGeometryShader")?; 9904 } 9905 if self.multiview_mesh_shader { 9906 if !first { 9907 write!(f, ", ")? 9908 } else { 9909 first = false; 9910 } 9911 f.write_str("multiviewMeshShader")?; 9912 } 9913 if self.multiview_per_view_viewports { 9914 if !first { 9915 write!(f, ", ")? 9916 } else { 9917 first = false; 9918 } 9919 f.write_str("multiviewPerViewViewports")?; 9920 } 9921 if self.multiview_tessellation_shader { 9922 if !first { 9923 write!(f, ", ")? 9924 } else { 9925 first = false; 9926 } 9927 f.write_str("multiviewTessellationShader")?; 9928 } 9929 if self.mutable_comparison_samplers { 9930 if !first { 9931 write!(f, ", ")? 9932 } else { 9933 first = false; 9934 } 9935 f.write_str("mutableComparisonSamplers")?; 9936 } 9937 if self.mutable_descriptor_type { 9938 if !first { 9939 write!(f, ", ")? 9940 } else { 9941 first = false; 9942 } 9943 f.write_str("mutableDescriptorType")?; 9944 } 9945 if self.no_invocation_fragment_shading_rates { 9946 if !first { 9947 write!(f, ", ")? 9948 } else { 9949 first = false; 9950 } 9951 f.write_str("noInvocationFragmentShadingRates")?; 9952 } 9953 if self.non_seamless_cube_map { 9954 if !first { 9955 write!(f, ", ")? 9956 } else { 9957 first = false; 9958 } 9959 f.write_str("nonSeamlessCubeMap")?; 9960 } 9961 if self.null_descriptor { 9962 if !first { 9963 write!(f, ", ")? 9964 } else { 9965 first = false; 9966 } 9967 f.write_str("nullDescriptor")?; 9968 } 9969 if self.occlusion_query_precise { 9970 if !first { 9971 write!(f, ", ")? 9972 } else { 9973 first = false; 9974 } 9975 f.write_str("occlusionQueryPrecise")?; 9976 } 9977 if self.optical_flow { 9978 if !first { 9979 write!(f, ", ")? 9980 } else { 9981 first = false; 9982 } 9983 f.write_str("opticalFlow")?; 9984 } 9985 if self.pageable_device_local_memory { 9986 if !first { 9987 write!(f, ", ")? 9988 } else { 9989 first = false; 9990 } 9991 f.write_str("pageableDeviceLocalMemory")?; 9992 } 9993 if self.performance_counter_multiple_query_pools { 9994 if !first { 9995 write!(f, ", ")? 9996 } else { 9997 first = false; 9998 } 9999 f.write_str("performanceCounterMultipleQueryPools")?; 10000 } 10001 if self.performance_counter_query_pools { 10002 if !first { 10003 write!(f, ", ")? 10004 } else { 10005 first = false; 10006 } 10007 f.write_str("performanceCounterQueryPools")?; 10008 } 10009 if self.pipeline_creation_cache_control { 10010 if !first { 10011 write!(f, ", ")? 10012 } else { 10013 first = false; 10014 } 10015 f.write_str("pipelineCreationCacheControl")?; 10016 } 10017 if self.pipeline_executable_info { 10018 if !first { 10019 write!(f, ", ")? 10020 } else { 10021 first = false; 10022 } 10023 f.write_str("pipelineExecutableInfo")?; 10024 } 10025 if self.pipeline_fragment_shading_rate { 10026 if !first { 10027 write!(f, ", ")? 10028 } else { 10029 first = false; 10030 } 10031 f.write_str("pipelineFragmentShadingRate")?; 10032 } 10033 if self.pipeline_properties_identifier { 10034 if !first { 10035 write!(f, ", ")? 10036 } else { 10037 first = false; 10038 } 10039 f.write_str("pipelinePropertiesIdentifier")?; 10040 } 10041 if self.pipeline_protected_access { 10042 if !first { 10043 write!(f, ", ")? 10044 } else { 10045 first = false; 10046 } 10047 f.write_str("pipelineProtectedAccess")?; 10048 } 10049 if self.pipeline_robustness { 10050 if !first { 10051 write!(f, ", ")? 10052 } else { 10053 first = false; 10054 } 10055 f.write_str("pipelineRobustness")?; 10056 } 10057 if self.pipeline_statistics_query { 10058 if !first { 10059 write!(f, ", ")? 10060 } else { 10061 first = false; 10062 } 10063 f.write_str("pipelineStatisticsQuery")?; 10064 } 10065 if self.point_polygons { 10066 if !first { 10067 write!(f, ", ")? 10068 } else { 10069 first = false; 10070 } 10071 f.write_str("pointPolygons")?; 10072 } 10073 if self.present_barrier { 10074 if !first { 10075 write!(f, ", ")? 10076 } else { 10077 first = false; 10078 } 10079 f.write_str("presentBarrier")?; 10080 } 10081 if self.present_id { 10082 if !first { 10083 write!(f, ", ")? 10084 } else { 10085 first = false; 10086 } 10087 f.write_str("presentId")?; 10088 } 10089 if self.present_wait { 10090 if !first { 10091 write!(f, ", ")? 10092 } else { 10093 first = false; 10094 } 10095 f.write_str("presentWait")?; 10096 } 10097 if self.primitive_fragment_shading_rate { 10098 if !first { 10099 write!(f, ", ")? 10100 } else { 10101 first = false; 10102 } 10103 f.write_str("primitiveFragmentShadingRate")?; 10104 } 10105 if self.primitive_fragment_shading_rate_mesh_shader { 10106 if !first { 10107 write!(f, ", ")? 10108 } else { 10109 first = false; 10110 } 10111 f.write_str("primitiveFragmentShadingRateMeshShader")?; 10112 } 10113 if self.primitive_topology_list_restart { 10114 if !first { 10115 write!(f, ", ")? 10116 } else { 10117 first = false; 10118 } 10119 f.write_str("primitiveTopologyListRestart")?; 10120 } 10121 if self.primitive_topology_patch_list_restart { 10122 if !first { 10123 write!(f, ", ")? 10124 } else { 10125 first = false; 10126 } 10127 f.write_str("primitiveTopologyPatchListRestart")?; 10128 } 10129 if self.primitives_generated_query { 10130 if !first { 10131 write!(f, ", ")? 10132 } else { 10133 first = false; 10134 } 10135 f.write_str("primitivesGeneratedQuery")?; 10136 } 10137 if self.primitives_generated_query_with_non_zero_streams { 10138 if !first { 10139 write!(f, ", ")? 10140 } else { 10141 first = false; 10142 } 10143 f.write_str("primitivesGeneratedQueryWithNonZeroStreams")?; 10144 } 10145 if self.primitives_generated_query_with_rasterizer_discard { 10146 if !first { 10147 write!(f, ", ")? 10148 } else { 10149 first = false; 10150 } 10151 f.write_str("primitivesGeneratedQueryWithRasterizerDiscard")?; 10152 } 10153 if self.private_data { 10154 if !first { 10155 write!(f, ", ")? 10156 } else { 10157 first = false; 10158 } 10159 f.write_str("privateData")?; 10160 } 10161 if self.protected_memory { 10162 if !first { 10163 write!(f, ", ")? 10164 } else { 10165 first = false; 10166 } 10167 f.write_str("protectedMemory")?; 10168 } 10169 if self.provoking_vertex_last { 10170 if !first { 10171 write!(f, ", ")? 10172 } else { 10173 first = false; 10174 } 10175 f.write_str("provokingVertexLast")?; 10176 } 10177 if self.rasterization_order_color_attachment_access { 10178 if !first { 10179 write!(f, ", ")? 10180 } else { 10181 first = false; 10182 } 10183 f.write_str("rasterizationOrderColorAttachmentAccess")?; 10184 } 10185 if self.rasterization_order_depth_attachment_access { 10186 if !first { 10187 write!(f, ", ")? 10188 } else { 10189 first = false; 10190 } 10191 f.write_str("rasterizationOrderDepthAttachmentAccess")?; 10192 } 10193 if self.rasterization_order_stencil_attachment_access { 10194 if !first { 10195 write!(f, ", ")? 10196 } else { 10197 first = false; 10198 } 10199 f.write_str("rasterizationOrderStencilAttachmentAccess")?; 10200 } 10201 if self.ray_query { 10202 if !first { 10203 write!(f, ", ")? 10204 } else { 10205 first = false; 10206 } 10207 f.write_str("rayQuery")?; 10208 } 10209 if self.ray_tracing_invocation_reorder { 10210 if !first { 10211 write!(f, ", ")? 10212 } else { 10213 first = false; 10214 } 10215 f.write_str("rayTracingInvocationReorder")?; 10216 } 10217 if self.ray_tracing_maintenance1 { 10218 if !first { 10219 write!(f, ", ")? 10220 } else { 10221 first = false; 10222 } 10223 f.write_str("rayTracingMaintenance1")?; 10224 } 10225 if self.ray_tracing_motion_blur { 10226 if !first { 10227 write!(f, ", ")? 10228 } else { 10229 first = false; 10230 } 10231 f.write_str("rayTracingMotionBlur")?; 10232 } 10233 if self.ray_tracing_motion_blur_pipeline_trace_rays_indirect { 10234 if !first { 10235 write!(f, ", ")? 10236 } else { 10237 first = false; 10238 } 10239 f.write_str("rayTracingMotionBlurPipelineTraceRaysIndirect")?; 10240 } 10241 if self.ray_tracing_pipeline { 10242 if !first { 10243 write!(f, ", ")? 10244 } else { 10245 first = false; 10246 } 10247 f.write_str("rayTracingPipeline")?; 10248 } 10249 if self.ray_tracing_pipeline_shader_group_handle_capture_replay { 10250 if !first { 10251 write!(f, ", ")? 10252 } else { 10253 first = false; 10254 } 10255 f.write_str("rayTracingPipelineShaderGroupHandleCaptureReplay")?; 10256 } 10257 if self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed { 10258 if !first { 10259 write!(f, ", ")? 10260 } else { 10261 first = false; 10262 } 10263 f.write_str("rayTracingPipelineShaderGroupHandleCaptureReplayMixed")?; 10264 } 10265 if self.ray_tracing_pipeline_trace_rays_indirect { 10266 if !first { 10267 write!(f, ", ")? 10268 } else { 10269 first = false; 10270 } 10271 f.write_str("rayTracingPipelineTraceRaysIndirect")?; 10272 } 10273 if self.ray_tracing_pipeline_trace_rays_indirect2 { 10274 if !first { 10275 write!(f, ", ")? 10276 } else { 10277 first = false; 10278 } 10279 f.write_str("rayTracingPipelineTraceRaysIndirect2")?; 10280 } 10281 if self.ray_traversal_primitive_culling { 10282 if !first { 10283 write!(f, ", ")? 10284 } else { 10285 first = false; 10286 } 10287 f.write_str("rayTraversalPrimitiveCulling")?; 10288 } 10289 if self.rectangular_lines { 10290 if !first { 10291 write!(f, ", ")? 10292 } else { 10293 first = false; 10294 } 10295 f.write_str("rectangularLines")?; 10296 } 10297 if self.report_address_binding { 10298 if !first { 10299 write!(f, ", ")? 10300 } else { 10301 first = false; 10302 } 10303 f.write_str("reportAddressBinding")?; 10304 } 10305 if self.representative_fragment_test { 10306 if !first { 10307 write!(f, ", ")? 10308 } else { 10309 first = false; 10310 } 10311 f.write_str("representativeFragmentTest")?; 10312 } 10313 if self.robust_buffer_access { 10314 if !first { 10315 write!(f, ", ")? 10316 } else { 10317 first = false; 10318 } 10319 f.write_str("robustBufferAccess")?; 10320 } 10321 if self.robust_buffer_access2 { 10322 if !first { 10323 write!(f, ", ")? 10324 } else { 10325 first = false; 10326 } 10327 f.write_str("robustBufferAccess2")?; 10328 } 10329 if self.robust_image_access { 10330 if !first { 10331 write!(f, ", ")? 10332 } else { 10333 first = false; 10334 } 10335 f.write_str("robustImageAccess")?; 10336 } 10337 if self.robust_image_access2 { 10338 if !first { 10339 write!(f, ", ")? 10340 } else { 10341 first = false; 10342 } 10343 f.write_str("robustImageAccess2")?; 10344 } 10345 if self.runtime_descriptor_array { 10346 if !first { 10347 write!(f, ", ")? 10348 } else { 10349 first = false; 10350 } 10351 f.write_str("runtimeDescriptorArray")?; 10352 } 10353 if self.sample_rate_shading { 10354 if !first { 10355 write!(f, ", ")? 10356 } else { 10357 first = false; 10358 } 10359 f.write_str("sampleRateShading")?; 10360 } 10361 if self.sampler2_d_view_of3_d { 10362 if !first { 10363 write!(f, ", ")? 10364 } else { 10365 first = false; 10366 } 10367 f.write_str("sampler2DViewOf3D")?; 10368 } 10369 if self.sampler_anisotropy { 10370 if !first { 10371 write!(f, ", ")? 10372 } else { 10373 first = false; 10374 } 10375 f.write_str("samplerAnisotropy")?; 10376 } 10377 if self.sampler_filter_minmax { 10378 if !first { 10379 write!(f, ", ")? 10380 } else { 10381 first = false; 10382 } 10383 f.write_str("samplerFilterMinmax")?; 10384 } 10385 if self.sampler_mip_lod_bias { 10386 if !first { 10387 write!(f, ", ")? 10388 } else { 10389 first = false; 10390 } 10391 f.write_str("samplerMipLodBias")?; 10392 } 10393 if self.sampler_mirror_clamp_to_edge { 10394 if !first { 10395 write!(f, ", ")? 10396 } else { 10397 first = false; 10398 } 10399 f.write_str("samplerMirrorClampToEdge")?; 10400 } 10401 if self.sampler_ycbcr_conversion { 10402 if !first { 10403 write!(f, ", ")? 10404 } else { 10405 first = false; 10406 } 10407 f.write_str("samplerYcbcrConversion")?; 10408 } 10409 if self.scalar_block_layout { 10410 if !first { 10411 write!(f, ", ")? 10412 } else { 10413 first = false; 10414 } 10415 f.write_str("scalarBlockLayout")?; 10416 } 10417 if self.separate_depth_stencil_layouts { 10418 if !first { 10419 write!(f, ", ")? 10420 } else { 10421 first = false; 10422 } 10423 f.write_str("separateDepthStencilLayouts")?; 10424 } 10425 if self.separate_stencil_mask_ref { 10426 if !first { 10427 write!(f, ", ")? 10428 } else { 10429 first = false; 10430 } 10431 f.write_str("separateStencilMaskRef")?; 10432 } 10433 if self.shader_buffer_float16_atomic_add { 10434 if !first { 10435 write!(f, ", ")? 10436 } else { 10437 first = false; 10438 } 10439 f.write_str("shaderBufferFloat16AtomicAdd")?; 10440 } 10441 if self.shader_buffer_float16_atomic_min_max { 10442 if !first { 10443 write!(f, ", ")? 10444 } else { 10445 first = false; 10446 } 10447 f.write_str("shaderBufferFloat16AtomicMinMax")?; 10448 } 10449 if self.shader_buffer_float16_atomics { 10450 if !first { 10451 write!(f, ", ")? 10452 } else { 10453 first = false; 10454 } 10455 f.write_str("shaderBufferFloat16Atomics")?; 10456 } 10457 if self.shader_buffer_float32_atomic_add { 10458 if !first { 10459 write!(f, ", ")? 10460 } else { 10461 first = false; 10462 } 10463 f.write_str("shaderBufferFloat32AtomicAdd")?; 10464 } 10465 if self.shader_buffer_float32_atomic_min_max { 10466 if !first { 10467 write!(f, ", ")? 10468 } else { 10469 first = false; 10470 } 10471 f.write_str("shaderBufferFloat32AtomicMinMax")?; 10472 } 10473 if self.shader_buffer_float32_atomics { 10474 if !first { 10475 write!(f, ", ")? 10476 } else { 10477 first = false; 10478 } 10479 f.write_str("shaderBufferFloat32Atomics")?; 10480 } 10481 if self.shader_buffer_float64_atomic_add { 10482 if !first { 10483 write!(f, ", ")? 10484 } else { 10485 first = false; 10486 } 10487 f.write_str("shaderBufferFloat64AtomicAdd")?; 10488 } 10489 if self.shader_buffer_float64_atomic_min_max { 10490 if !first { 10491 write!(f, ", ")? 10492 } else { 10493 first = false; 10494 } 10495 f.write_str("shaderBufferFloat64AtomicMinMax")?; 10496 } 10497 if self.shader_buffer_float64_atomics { 10498 if !first { 10499 write!(f, ", ")? 10500 } else { 10501 first = false; 10502 } 10503 f.write_str("shaderBufferFloat64Atomics")?; 10504 } 10505 if self.shader_buffer_int64_atomics { 10506 if !first { 10507 write!(f, ", ")? 10508 } else { 10509 first = false; 10510 } 10511 f.write_str("shaderBufferInt64Atomics")?; 10512 } 10513 if self.shader_clip_distance { 10514 if !first { 10515 write!(f, ", ")? 10516 } else { 10517 first = false; 10518 } 10519 f.write_str("shaderClipDistance")?; 10520 } 10521 if self.shader_core_builtins { 10522 if !first { 10523 write!(f, ", ")? 10524 } else { 10525 first = false; 10526 } 10527 f.write_str("shaderCoreBuiltins")?; 10528 } 10529 if self.shader_cull_distance { 10530 if !first { 10531 write!(f, ", ")? 10532 } else { 10533 first = false; 10534 } 10535 f.write_str("shaderCullDistance")?; 10536 } 10537 if self.shader_demote_to_helper_invocation { 10538 if !first { 10539 write!(f, ", ")? 10540 } else { 10541 first = false; 10542 } 10543 f.write_str("shaderDemoteToHelperInvocation")?; 10544 } 10545 if self.shader_device_clock { 10546 if !first { 10547 write!(f, ", ")? 10548 } else { 10549 first = false; 10550 } 10551 f.write_str("shaderDeviceClock")?; 10552 } 10553 if self.shader_draw_parameters { 10554 if !first { 10555 write!(f, ", ")? 10556 } else { 10557 first = false; 10558 } 10559 f.write_str("shaderDrawParameters")?; 10560 } 10561 if self.shader_early_and_late_fragment_tests { 10562 if !first { 10563 write!(f, ", ")? 10564 } else { 10565 first = false; 10566 } 10567 f.write_str("shaderEarlyAndLateFragmentTests")?; 10568 } 10569 if self.shader_float16 { 10570 if !first { 10571 write!(f, ", ")? 10572 } else { 10573 first = false; 10574 } 10575 f.write_str("shaderFloat16")?; 10576 } 10577 if self.shader_float64 { 10578 if !first { 10579 write!(f, ", ")? 10580 } else { 10581 first = false; 10582 } 10583 f.write_str("shaderFloat64")?; 10584 } 10585 if self.shader_image_float32_atomic_add { 10586 if !first { 10587 write!(f, ", ")? 10588 } else { 10589 first = false; 10590 } 10591 f.write_str("shaderImageFloat32AtomicAdd")?; 10592 } 10593 if self.shader_image_float32_atomic_min_max { 10594 if !first { 10595 write!(f, ", ")? 10596 } else { 10597 first = false; 10598 } 10599 f.write_str("shaderImageFloat32AtomicMinMax")?; 10600 } 10601 if self.shader_image_float32_atomics { 10602 if !first { 10603 write!(f, ", ")? 10604 } else { 10605 first = false; 10606 } 10607 f.write_str("shaderImageFloat32Atomics")?; 10608 } 10609 if self.shader_image_gather_extended { 10610 if !first { 10611 write!(f, ", ")? 10612 } else { 10613 first = false; 10614 } 10615 f.write_str("shaderImageGatherExtended")?; 10616 } 10617 if self.shader_image_int64_atomics { 10618 if !first { 10619 write!(f, ", ")? 10620 } else { 10621 first = false; 10622 } 10623 f.write_str("shaderImageInt64Atomics")?; 10624 } 10625 if self.shader_input_attachment_array_dynamic_indexing { 10626 if !first { 10627 write!(f, ", ")? 10628 } else { 10629 first = false; 10630 } 10631 f.write_str("shaderInputAttachmentArrayDynamicIndexing")?; 10632 } 10633 if self.shader_input_attachment_array_non_uniform_indexing { 10634 if !first { 10635 write!(f, ", ")? 10636 } else { 10637 first = false; 10638 } 10639 f.write_str("shaderInputAttachmentArrayNonUniformIndexing")?; 10640 } 10641 if self.shader_int16 { 10642 if !first { 10643 write!(f, ", ")? 10644 } else { 10645 first = false; 10646 } 10647 f.write_str("shaderInt16")?; 10648 } 10649 if self.shader_int64 { 10650 if !first { 10651 write!(f, ", ")? 10652 } else { 10653 first = false; 10654 } 10655 f.write_str("shaderInt64")?; 10656 } 10657 if self.shader_int8 { 10658 if !first { 10659 write!(f, ", ")? 10660 } else { 10661 first = false; 10662 } 10663 f.write_str("shaderInt8")?; 10664 } 10665 if self.shader_integer_dot_product { 10666 if !first { 10667 write!(f, ", ")? 10668 } else { 10669 first = false; 10670 } 10671 f.write_str("shaderIntegerDotProduct")?; 10672 } 10673 if self.shader_integer_functions2 { 10674 if !first { 10675 write!(f, ", ")? 10676 } else { 10677 first = false; 10678 } 10679 f.write_str("shaderIntegerFunctions2")?; 10680 } 10681 if self.shader_module_identifier { 10682 if !first { 10683 write!(f, ", ")? 10684 } else { 10685 first = false; 10686 } 10687 f.write_str("shaderModuleIdentifier")?; 10688 } 10689 if self.shader_output_layer { 10690 if !first { 10691 write!(f, ", ")? 10692 } else { 10693 first = false; 10694 } 10695 f.write_str("shaderOutputLayer")?; 10696 } 10697 if self.shader_output_viewport_index { 10698 if !first { 10699 write!(f, ", ")? 10700 } else { 10701 first = false; 10702 } 10703 f.write_str("shaderOutputViewportIndex")?; 10704 } 10705 if self.shader_resource_min_lod { 10706 if !first { 10707 write!(f, ", ")? 10708 } else { 10709 first = false; 10710 } 10711 f.write_str("shaderResourceMinLod")?; 10712 } 10713 if self.shader_resource_residency { 10714 if !first { 10715 write!(f, ", ")? 10716 } else { 10717 first = false; 10718 } 10719 f.write_str("shaderResourceResidency")?; 10720 } 10721 if self.shader_sample_rate_interpolation_functions { 10722 if !first { 10723 write!(f, ", ")? 10724 } else { 10725 first = false; 10726 } 10727 f.write_str("shaderSampleRateInterpolationFunctions")?; 10728 } 10729 if self.shader_sampled_image_array_dynamic_indexing { 10730 if !first { 10731 write!(f, ", ")? 10732 } else { 10733 first = false; 10734 } 10735 f.write_str("shaderSampledImageArrayDynamicIndexing")?; 10736 } 10737 if self.shader_sampled_image_array_non_uniform_indexing { 10738 if !first { 10739 write!(f, ", ")? 10740 } else { 10741 first = false; 10742 } 10743 f.write_str("shaderSampledImageArrayNonUniformIndexing")?; 10744 } 10745 if self.shader_shared_float16_atomic_add { 10746 if !first { 10747 write!(f, ", ")? 10748 } else { 10749 first = false; 10750 } 10751 f.write_str("shaderSharedFloat16AtomicAdd")?; 10752 } 10753 if self.shader_shared_float16_atomic_min_max { 10754 if !first { 10755 write!(f, ", ")? 10756 } else { 10757 first = false; 10758 } 10759 f.write_str("shaderSharedFloat16AtomicMinMax")?; 10760 } 10761 if self.shader_shared_float16_atomics { 10762 if !first { 10763 write!(f, ", ")? 10764 } else { 10765 first = false; 10766 } 10767 f.write_str("shaderSharedFloat16Atomics")?; 10768 } 10769 if self.shader_shared_float32_atomic_add { 10770 if !first { 10771 write!(f, ", ")? 10772 } else { 10773 first = false; 10774 } 10775 f.write_str("shaderSharedFloat32AtomicAdd")?; 10776 } 10777 if self.shader_shared_float32_atomic_min_max { 10778 if !first { 10779 write!(f, ", ")? 10780 } else { 10781 first = false; 10782 } 10783 f.write_str("shaderSharedFloat32AtomicMinMax")?; 10784 } 10785 if self.shader_shared_float32_atomics { 10786 if !first { 10787 write!(f, ", ")? 10788 } else { 10789 first = false; 10790 } 10791 f.write_str("shaderSharedFloat32Atomics")?; 10792 } 10793 if self.shader_shared_float64_atomic_add { 10794 if !first { 10795 write!(f, ", ")? 10796 } else { 10797 first = false; 10798 } 10799 f.write_str("shaderSharedFloat64AtomicAdd")?; 10800 } 10801 if self.shader_shared_float64_atomic_min_max { 10802 if !first { 10803 write!(f, ", ")? 10804 } else { 10805 first = false; 10806 } 10807 f.write_str("shaderSharedFloat64AtomicMinMax")?; 10808 } 10809 if self.shader_shared_float64_atomics { 10810 if !first { 10811 write!(f, ", ")? 10812 } else { 10813 first = false; 10814 } 10815 f.write_str("shaderSharedFloat64Atomics")?; 10816 } 10817 if self.shader_shared_int64_atomics { 10818 if !first { 10819 write!(f, ", ")? 10820 } else { 10821 first = false; 10822 } 10823 f.write_str("shaderSharedInt64Atomics")?; 10824 } 10825 if self.shader_sm_builtins { 10826 if !first { 10827 write!(f, ", ")? 10828 } else { 10829 first = false; 10830 } 10831 f.write_str("shaderSMBuiltins")?; 10832 } 10833 if self.shader_storage_buffer_array_dynamic_indexing { 10834 if !first { 10835 write!(f, ", ")? 10836 } else { 10837 first = false; 10838 } 10839 f.write_str("shaderStorageBufferArrayDynamicIndexing")?; 10840 } 10841 if self.shader_storage_buffer_array_non_uniform_indexing { 10842 if !first { 10843 write!(f, ", ")? 10844 } else { 10845 first = false; 10846 } 10847 f.write_str("shaderStorageBufferArrayNonUniformIndexing")?; 10848 } 10849 if self.shader_storage_image_array_dynamic_indexing { 10850 if !first { 10851 write!(f, ", ")? 10852 } else { 10853 first = false; 10854 } 10855 f.write_str("shaderStorageImageArrayDynamicIndexing")?; 10856 } 10857 if self.shader_storage_image_array_non_uniform_indexing { 10858 if !first { 10859 write!(f, ", ")? 10860 } else { 10861 first = false; 10862 } 10863 f.write_str("shaderStorageImageArrayNonUniformIndexing")?; 10864 } 10865 if self.shader_storage_image_extended_formats { 10866 if !first { 10867 write!(f, ", ")? 10868 } else { 10869 first = false; 10870 } 10871 f.write_str("shaderStorageImageExtendedFormats")?; 10872 } 10873 if self.shader_storage_image_multisample { 10874 if !first { 10875 write!(f, ", ")? 10876 } else { 10877 first = false; 10878 } 10879 f.write_str("shaderStorageImageMultisample")?; 10880 } 10881 if self.shader_storage_image_read_without_format { 10882 if !first { 10883 write!(f, ", ")? 10884 } else { 10885 first = false; 10886 } 10887 f.write_str("shaderStorageImageReadWithoutFormat")?; 10888 } 10889 if self.shader_storage_image_write_without_format { 10890 if !first { 10891 write!(f, ", ")? 10892 } else { 10893 first = false; 10894 } 10895 f.write_str("shaderStorageImageWriteWithoutFormat")?; 10896 } 10897 if self.shader_storage_texel_buffer_array_dynamic_indexing { 10898 if !first { 10899 write!(f, ", ")? 10900 } else { 10901 first = false; 10902 } 10903 f.write_str("shaderStorageTexelBufferArrayDynamicIndexing")?; 10904 } 10905 if self.shader_storage_texel_buffer_array_non_uniform_indexing { 10906 if !first { 10907 write!(f, ", ")? 10908 } else { 10909 first = false; 10910 } 10911 f.write_str("shaderStorageTexelBufferArrayNonUniformIndexing")?; 10912 } 10913 if self.shader_subgroup_clock { 10914 if !first { 10915 write!(f, ", ")? 10916 } else { 10917 first = false; 10918 } 10919 f.write_str("shaderSubgroupClock")?; 10920 } 10921 if self.shader_subgroup_extended_types { 10922 if !first { 10923 write!(f, ", ")? 10924 } else { 10925 first = false; 10926 } 10927 f.write_str("shaderSubgroupExtendedTypes")?; 10928 } 10929 if self.shader_subgroup_uniform_control_flow { 10930 if !first { 10931 write!(f, ", ")? 10932 } else { 10933 first = false; 10934 } 10935 f.write_str("shaderSubgroupUniformControlFlow")?; 10936 } 10937 if self.shader_terminate_invocation { 10938 if !first { 10939 write!(f, ", ")? 10940 } else { 10941 first = false; 10942 } 10943 f.write_str("shaderTerminateInvocation")?; 10944 } 10945 if self.shader_tessellation_and_geometry_point_size { 10946 if !first { 10947 write!(f, ", ")? 10948 } else { 10949 first = false; 10950 } 10951 f.write_str("shaderTessellationAndGeometryPointSize")?; 10952 } 10953 if self.shader_uniform_buffer_array_dynamic_indexing { 10954 if !first { 10955 write!(f, ", ")? 10956 } else { 10957 first = false; 10958 } 10959 f.write_str("shaderUniformBufferArrayDynamicIndexing")?; 10960 } 10961 if self.shader_uniform_buffer_array_non_uniform_indexing { 10962 if !first { 10963 write!(f, ", ")? 10964 } else { 10965 first = false; 10966 } 10967 f.write_str("shaderUniformBufferArrayNonUniformIndexing")?; 10968 } 10969 if self.shader_uniform_texel_buffer_array_dynamic_indexing { 10970 if !first { 10971 write!(f, ", ")? 10972 } else { 10973 first = false; 10974 } 10975 f.write_str("shaderUniformTexelBufferArrayDynamicIndexing")?; 10976 } 10977 if self.shader_uniform_texel_buffer_array_non_uniform_indexing { 10978 if !first { 10979 write!(f, ", ")? 10980 } else { 10981 first = false; 10982 } 10983 f.write_str("shaderUniformTexelBufferArrayNonUniformIndexing")?; 10984 } 10985 if self.shader_zero_initialize_workgroup_memory { 10986 if !first { 10987 write!(f, ", ")? 10988 } else { 10989 first = false; 10990 } 10991 f.write_str("shaderZeroInitializeWorkgroupMemory")?; 10992 } 10993 if self.shading_rate_coarse_sample_order { 10994 if !first { 10995 write!(f, ", ")? 10996 } else { 10997 first = false; 10998 } 10999 f.write_str("shadingRateCoarseSampleOrder")?; 11000 } 11001 if self.shading_rate_image { 11002 if !first { 11003 write!(f, ", ")? 11004 } else { 11005 first = false; 11006 } 11007 f.write_str("shadingRateImage")?; 11008 } 11009 if self.smooth_lines { 11010 if !first { 11011 write!(f, ", ")? 11012 } else { 11013 first = false; 11014 } 11015 f.write_str("smoothLines")?; 11016 } 11017 if self.sparse_binding { 11018 if !first { 11019 write!(f, ", ")? 11020 } else { 11021 first = false; 11022 } 11023 f.write_str("sparseBinding")?; 11024 } 11025 if self.sparse_image_float32_atomic_add { 11026 if !first { 11027 write!(f, ", ")? 11028 } else { 11029 first = false; 11030 } 11031 f.write_str("sparseImageFloat32AtomicAdd")?; 11032 } 11033 if self.sparse_image_float32_atomic_min_max { 11034 if !first { 11035 write!(f, ", ")? 11036 } else { 11037 first = false; 11038 } 11039 f.write_str("sparseImageFloat32AtomicMinMax")?; 11040 } 11041 if self.sparse_image_float32_atomics { 11042 if !first { 11043 write!(f, ", ")? 11044 } else { 11045 first = false; 11046 } 11047 f.write_str("sparseImageFloat32Atomics")?; 11048 } 11049 if self.sparse_image_int64_atomics { 11050 if !first { 11051 write!(f, ", ")? 11052 } else { 11053 first = false; 11054 } 11055 f.write_str("sparseImageInt64Atomics")?; 11056 } 11057 if self.sparse_residency16_samples { 11058 if !first { 11059 write!(f, ", ")? 11060 } else { 11061 first = false; 11062 } 11063 f.write_str("sparseResidency16Samples")?; 11064 } 11065 if self.sparse_residency2_samples { 11066 if !first { 11067 write!(f, ", ")? 11068 } else { 11069 first = false; 11070 } 11071 f.write_str("sparseResidency2Samples")?; 11072 } 11073 if self.sparse_residency4_samples { 11074 if !first { 11075 write!(f, ", ")? 11076 } else { 11077 first = false; 11078 } 11079 f.write_str("sparseResidency4Samples")?; 11080 } 11081 if self.sparse_residency8_samples { 11082 if !first { 11083 write!(f, ", ")? 11084 } else { 11085 first = false; 11086 } 11087 f.write_str("sparseResidency8Samples")?; 11088 } 11089 if self.sparse_residency_aliased { 11090 if !first { 11091 write!(f, ", ")? 11092 } else { 11093 first = false; 11094 } 11095 f.write_str("sparseResidencyAliased")?; 11096 } 11097 if self.sparse_residency_buffer { 11098 if !first { 11099 write!(f, ", ")? 11100 } else { 11101 first = false; 11102 } 11103 f.write_str("sparseResidencyBuffer")?; 11104 } 11105 if self.sparse_residency_image2_d { 11106 if !first { 11107 write!(f, ", ")? 11108 } else { 11109 first = false; 11110 } 11111 f.write_str("sparseResidencyImage2D")?; 11112 } 11113 if self.sparse_residency_image3_d { 11114 if !first { 11115 write!(f, ", ")? 11116 } else { 11117 first = false; 11118 } 11119 f.write_str("sparseResidencyImage3D")?; 11120 } 11121 if self.stippled_bresenham_lines { 11122 if !first { 11123 write!(f, ", ")? 11124 } else { 11125 first = false; 11126 } 11127 f.write_str("stippledBresenhamLines")?; 11128 } 11129 if self.stippled_rectangular_lines { 11130 if !first { 11131 write!(f, ", ")? 11132 } else { 11133 first = false; 11134 } 11135 f.write_str("stippledRectangularLines")?; 11136 } 11137 if self.stippled_smooth_lines { 11138 if !first { 11139 write!(f, ", ")? 11140 } else { 11141 first = false; 11142 } 11143 f.write_str("stippledSmoothLines")?; 11144 } 11145 if self.storage_buffer16_bit_access { 11146 if !first { 11147 write!(f, ", ")? 11148 } else { 11149 first = false; 11150 } 11151 f.write_str("storageBuffer16BitAccess")?; 11152 } 11153 if self.storage_buffer8_bit_access { 11154 if !first { 11155 write!(f, ", ")? 11156 } else { 11157 first = false; 11158 } 11159 f.write_str("storageBuffer8BitAccess")?; 11160 } 11161 if self.storage_input_output16 { 11162 if !first { 11163 write!(f, ", ")? 11164 } else { 11165 first = false; 11166 } 11167 f.write_str("storageInputOutput16")?; 11168 } 11169 if self.storage_push_constant16 { 11170 if !first { 11171 write!(f, ", ")? 11172 } else { 11173 first = false; 11174 } 11175 f.write_str("storagePushConstant16")?; 11176 } 11177 if self.storage_push_constant8 { 11178 if !first { 11179 write!(f, ", ")? 11180 } else { 11181 first = false; 11182 } 11183 f.write_str("storagePushConstant8")?; 11184 } 11185 if self.subgroup_broadcast_dynamic_id { 11186 if !first { 11187 write!(f, ", ")? 11188 } else { 11189 first = false; 11190 } 11191 f.write_str("subgroupBroadcastDynamicId")?; 11192 } 11193 if self.subgroup_size_control { 11194 if !first { 11195 write!(f, ", ")? 11196 } else { 11197 first = false; 11198 } 11199 f.write_str("subgroupSizeControl")?; 11200 } 11201 if self.subpass_merge_feedback { 11202 if !first { 11203 write!(f, ", ")? 11204 } else { 11205 first = false; 11206 } 11207 f.write_str("subpassMergeFeedback")?; 11208 } 11209 if self.subpass_shading { 11210 if !first { 11211 write!(f, ", ")? 11212 } else { 11213 first = false; 11214 } 11215 f.write_str("subpassShading")?; 11216 } 11217 if self.supersample_fragment_shading_rates { 11218 if !first { 11219 write!(f, ", ")? 11220 } else { 11221 first = false; 11222 } 11223 f.write_str("supersampleFragmentShadingRates")?; 11224 } 11225 if self.swapchain_maintenance1 { 11226 if !first { 11227 write!(f, ", ")? 11228 } else { 11229 first = false; 11230 } 11231 f.write_str("swapchainMaintenance1")?; 11232 } 11233 if self.synchronization2 { 11234 if !first { 11235 write!(f, ", ")? 11236 } else { 11237 first = false; 11238 } 11239 f.write_str("synchronization2")?; 11240 } 11241 if self.task_shader { 11242 if !first { 11243 write!(f, ", ")? 11244 } else { 11245 first = false; 11246 } 11247 f.write_str("taskShader")?; 11248 } 11249 if self.tessellation_isolines { 11250 if !first { 11251 write!(f, ", ")? 11252 } else { 11253 first = false; 11254 } 11255 f.write_str("tessellationIsolines")?; 11256 } 11257 if self.tessellation_point_mode { 11258 if !first { 11259 write!(f, ", ")? 11260 } else { 11261 first = false; 11262 } 11263 f.write_str("tessellationPointMode")?; 11264 } 11265 if self.tessellation_shader { 11266 if !first { 11267 write!(f, ", ")? 11268 } else { 11269 first = false; 11270 } 11271 f.write_str("tessellationShader")?; 11272 } 11273 if self.texel_buffer_alignment { 11274 if !first { 11275 write!(f, ", ")? 11276 } else { 11277 first = false; 11278 } 11279 f.write_str("texelBufferAlignment")?; 11280 } 11281 if self.texture_block_match { 11282 if !first { 11283 write!(f, ", ")? 11284 } else { 11285 first = false; 11286 } 11287 f.write_str("textureBlockMatch")?; 11288 } 11289 if self.texture_box_filter { 11290 if !first { 11291 write!(f, ", ")? 11292 } else { 11293 first = false; 11294 } 11295 f.write_str("textureBoxFilter")?; 11296 } 11297 if self.texture_compression_astc_hdr { 11298 if !first { 11299 write!(f, ", ")? 11300 } else { 11301 first = false; 11302 } 11303 f.write_str("textureCompressionASTC_HDR")?; 11304 } 11305 if self.texture_compression_astc_ldr { 11306 if !first { 11307 write!(f, ", ")? 11308 } else { 11309 first = false; 11310 } 11311 f.write_str("textureCompressionASTC_LDR")?; 11312 } 11313 if self.texture_compression_bc { 11314 if !first { 11315 write!(f, ", ")? 11316 } else { 11317 first = false; 11318 } 11319 f.write_str("textureCompressionBC")?; 11320 } 11321 if self.texture_compression_etc2 { 11322 if !first { 11323 write!(f, ", ")? 11324 } else { 11325 first = false; 11326 } 11327 f.write_str("textureCompressionETC2")?; 11328 } 11329 if self.texture_sample_weighted { 11330 if !first { 11331 write!(f, ", ")? 11332 } else { 11333 first = false; 11334 } 11335 f.write_str("textureSampleWeighted")?; 11336 } 11337 if self.tile_properties { 11338 if !first { 11339 write!(f, ", ")? 11340 } else { 11341 first = false; 11342 } 11343 f.write_str("tileProperties")?; 11344 } 11345 if self.timeline_semaphore { 11346 if !first { 11347 write!(f, ", ")? 11348 } else { 11349 first = false; 11350 } 11351 f.write_str("timelineSemaphore")?; 11352 } 11353 if self.transform_feedback { 11354 if !first { 11355 write!(f, ", ")? 11356 } else { 11357 first = false; 11358 } 11359 f.write_str("transformFeedback")?; 11360 } 11361 if self.transform_feedback_preserves_provoking_vertex { 11362 if !first { 11363 write!(f, ", ")? 11364 } else { 11365 first = false; 11366 } 11367 f.write_str("transformFeedbackPreservesProvokingVertex")?; 11368 } 11369 if self.triangle_fans { 11370 if !first { 11371 write!(f, ", ")? 11372 } else { 11373 first = false; 11374 } 11375 f.write_str("triangleFans")?; 11376 } 11377 if self.uniform_and_storage_buffer16_bit_access { 11378 if !first { 11379 write!(f, ", ")? 11380 } else { 11381 first = false; 11382 } 11383 f.write_str("uniformAndStorageBuffer16BitAccess")?; 11384 } 11385 if self.uniform_and_storage_buffer8_bit_access { 11386 if !first { 11387 write!(f, ", ")? 11388 } else { 11389 first = false; 11390 } 11391 f.write_str("uniformAndStorageBuffer8BitAccess")?; 11392 } 11393 if self.uniform_buffer_standard_layout { 11394 if !first { 11395 write!(f, ", ")? 11396 } else { 11397 first = false; 11398 } 11399 f.write_str("uniformBufferStandardLayout")?; 11400 } 11401 if self.variable_multisample_rate { 11402 if !first { 11403 write!(f, ", ")? 11404 } else { 11405 first = false; 11406 } 11407 f.write_str("variableMultisampleRate")?; 11408 } 11409 if self.variable_pointers { 11410 if !first { 11411 write!(f, ", ")? 11412 } else { 11413 first = false; 11414 } 11415 f.write_str("variablePointers")?; 11416 } 11417 if self.variable_pointers_storage_buffer { 11418 if !first { 11419 write!(f, ", ")? 11420 } else { 11421 first = false; 11422 } 11423 f.write_str("variablePointersStorageBuffer")?; 11424 } 11425 if self.vertex_attribute_access_beyond_stride { 11426 if !first { 11427 write!(f, ", ")? 11428 } else { 11429 first = false; 11430 } 11431 f.write_str("vertexAttributeAccessBeyondStride")?; 11432 } 11433 if self.vertex_attribute_instance_rate_divisor { 11434 if !first { 11435 write!(f, ", ")? 11436 } else { 11437 first = false; 11438 } 11439 f.write_str("vertexAttributeInstanceRateDivisor")?; 11440 } 11441 if self.vertex_attribute_instance_rate_zero_divisor { 11442 if !first { 11443 write!(f, ", ")? 11444 } else { 11445 first = false; 11446 } 11447 f.write_str("vertexAttributeInstanceRateZeroDivisor")?; 11448 } 11449 if self.vertex_input_dynamic_state { 11450 if !first { 11451 write!(f, ", ")? 11452 } else { 11453 first = false; 11454 } 11455 f.write_str("vertexInputDynamicState")?; 11456 } 11457 if self.vertex_pipeline_stores_and_atomics { 11458 if !first { 11459 write!(f, ", ")? 11460 } else { 11461 first = false; 11462 } 11463 f.write_str("vertexPipelineStoresAndAtomics")?; 11464 } 11465 if self.vulkan_memory_model { 11466 if !first { 11467 write!(f, ", ")? 11468 } else { 11469 first = false; 11470 } 11471 f.write_str("vulkanMemoryModel")?; 11472 } 11473 if self.vulkan_memory_model_availability_visibility_chains { 11474 if !first { 11475 write!(f, ", ")? 11476 } else { 11477 first = false; 11478 } 11479 f.write_str("vulkanMemoryModelAvailabilityVisibilityChains")?; 11480 } 11481 if self.vulkan_memory_model_device_scope { 11482 if !first { 11483 write!(f, ", ")? 11484 } else { 11485 first = false; 11486 } 11487 f.write_str("vulkanMemoryModelDeviceScope")?; 11488 } 11489 if self.wide_lines { 11490 if !first { 11491 write!(f, ", ")? 11492 } else { 11493 first = false; 11494 } 11495 f.write_str("wideLines")?; 11496 } 11497 if self.workgroup_memory_explicit_layout { 11498 if !first { 11499 write!(f, ", ")? 11500 } else { 11501 first = false; 11502 } 11503 f.write_str("workgroupMemoryExplicitLayout")?; 11504 } 11505 if self.workgroup_memory_explicit_layout16_bit_access { 11506 if !first { 11507 write!(f, ", ")? 11508 } else { 11509 first = false; 11510 } 11511 f.write_str("workgroupMemoryExplicitLayout16BitAccess")?; 11512 } 11513 if self.workgroup_memory_explicit_layout8_bit_access { 11514 if !first { 11515 write!(f, ", ")? 11516 } else { 11517 first = false; 11518 } 11519 f.write_str("workgroupMemoryExplicitLayout8BitAccess")?; 11520 } 11521 if self.workgroup_memory_explicit_layout_scalar_block_layout { 11522 if !first { 11523 write!(f, ", ")? 11524 } else { 11525 first = false; 11526 } 11527 f.write_str("workgroupMemoryExplicitLayoutScalarBlockLayout")?; 11528 } 11529 if self.ycbcr2plane444_formats { 11530 if !first { 11531 write!(f, ", ")? 11532 } else { 11533 first = false; 11534 } 11535 f.write_str("ycbcr2plane444Formats")?; 11536 } 11537 if self.ycbcr_image_arrays { 11538 if !first { 11539 write!(f, ", ")? 11540 } else { 11541 first = false; 11542 } 11543 f.write_str("ycbcrImageArrays")?; 11544 } 11545 write!(f, "]") 11546 } 11547 } 11548 impl FeaturesFfi { write(&mut self, features: &Features)11549 pub(crate) fn write(&mut self, features: &Features) { 11550 if let Some(f) = [self 11551 .features_acceleration_structure_khr 11552 .as_mut() 11553 .map(|s| &mut s.acceleration_structure)] 11554 .into_iter() 11555 .flatten() 11556 .next() 11557 { 11558 *f = features.acceleration_structure as ash::vk::Bool32; 11559 } 11560 if let Some(f) = [self 11561 .features_acceleration_structure_khr 11562 .as_mut() 11563 .map(|s| &mut s.acceleration_structure_capture_replay)] 11564 .into_iter() 11565 .flatten() 11566 .next() 11567 { 11568 *f = features.acceleration_structure_capture_replay as ash::vk::Bool32; 11569 } 11570 if let Some(f) = [self 11571 .features_acceleration_structure_khr 11572 .as_mut() 11573 .map(|s| &mut s.acceleration_structure_host_commands)] 11574 .into_iter() 11575 .flatten() 11576 .next() 11577 { 11578 *f = features.acceleration_structure_host_commands as ash::vk::Bool32; 11579 } 11580 if let Some(f) = [self 11581 .features_acceleration_structure_khr 11582 .as_mut() 11583 .map(|s| &mut s.acceleration_structure_indirect_build)] 11584 .into_iter() 11585 .flatten() 11586 .next() 11587 { 11588 *f = features.acceleration_structure_indirect_build as ash::vk::Bool32; 11589 } 11590 if let Some(f) = [self 11591 .features_blend_operation_advanced_ext 11592 .as_mut() 11593 .map(|s| &mut s.advanced_blend_coherent_operations)] 11594 .into_iter() 11595 .flatten() 11596 .next() 11597 { 11598 *f = features.advanced_blend_coherent_operations as ash::vk::Bool32; 11599 } 11600 if let Some(f) = [&mut self.features_vulkan10.features.alpha_to_one] 11601 .into_iter() 11602 .next() 11603 { 11604 *f = features.alpha_to_one as ash::vk::Bool32; 11605 } 11606 if let Some(f) = [self 11607 .features_amigo_profiling_sec 11608 .as_mut() 11609 .map(|s| &mut s.amigo_profiling)] 11610 .into_iter() 11611 .flatten() 11612 .next() 11613 { 11614 *f = features.amigo_profiling as ash::vk::Bool32; 11615 } 11616 if let Some(f) = [self 11617 .features_attachment_feedback_loop_layout_ext 11618 .as_mut() 11619 .map(|s| &mut s.attachment_feedback_loop_layout)] 11620 .into_iter() 11621 .flatten() 11622 .next() 11623 { 11624 *f = features.attachment_feedback_loop_layout as ash::vk::Bool32; 11625 } 11626 if let Some(f) = [self 11627 .features_fragment_shading_rate_khr 11628 .as_mut() 11629 .map(|s| &mut s.attachment_fragment_shading_rate)] 11630 .into_iter() 11631 .flatten() 11632 .next() 11633 { 11634 *f = features.attachment_fragment_shading_rate as ash::vk::Bool32; 11635 } 11636 if let Some(f) = [self 11637 .features_border_color_swizzle_ext 11638 .as_mut() 11639 .map(|s| &mut s.border_color_swizzle)] 11640 .into_iter() 11641 .flatten() 11642 .next() 11643 { 11644 *f = features.border_color_swizzle as ash::vk::Bool32; 11645 } 11646 if let Some(f) = [self 11647 .features_border_color_swizzle_ext 11648 .as_mut() 11649 .map(|s| &mut s.border_color_swizzle_from_image)] 11650 .into_iter() 11651 .flatten() 11652 .next() 11653 { 11654 *f = features.border_color_swizzle_from_image as ash::vk::Bool32; 11655 } 11656 if let Some(f) = [self 11657 .features_line_rasterization_ext 11658 .as_mut() 11659 .map(|s| &mut s.bresenham_lines)] 11660 .into_iter() 11661 .flatten() 11662 .next() 11663 { 11664 *f = features.bresenham_lines as ash::vk::Bool32; 11665 } 11666 if let Some(f) = [ 11667 self.features_vulkan12 11668 .as_mut() 11669 .map(|s| &mut s.buffer_device_address), 11670 self.features_buffer_device_address 11671 .as_mut() 11672 .map(|s| &mut s.buffer_device_address), 11673 self.features_buffer_device_address_ext 11674 .as_mut() 11675 .map(|s| &mut s.buffer_device_address), 11676 ] 11677 .into_iter() 11678 .flatten() 11679 .next() 11680 { 11681 *f = features.buffer_device_address as ash::vk::Bool32; 11682 } 11683 if let Some(f) = [ 11684 self.features_vulkan12 11685 .as_mut() 11686 .map(|s| &mut s.buffer_device_address_capture_replay), 11687 self.features_buffer_device_address 11688 .as_mut() 11689 .map(|s| &mut s.buffer_device_address_capture_replay), 11690 self.features_buffer_device_address_ext 11691 .as_mut() 11692 .map(|s| &mut s.buffer_device_address_capture_replay), 11693 ] 11694 .into_iter() 11695 .flatten() 11696 .next() 11697 { 11698 *f = features.buffer_device_address_capture_replay as ash::vk::Bool32; 11699 } 11700 if let Some(f) = [ 11701 self.features_vulkan12 11702 .as_mut() 11703 .map(|s| &mut s.buffer_device_address_multi_device), 11704 self.features_buffer_device_address 11705 .as_mut() 11706 .map(|s| &mut s.buffer_device_address_multi_device), 11707 self.features_buffer_device_address_ext 11708 .as_mut() 11709 .map(|s| &mut s.buffer_device_address_multi_device), 11710 ] 11711 .into_iter() 11712 .flatten() 11713 .next() 11714 { 11715 *f = features.buffer_device_address_multi_device as ash::vk::Bool32; 11716 } 11717 if let Some(f) = [self 11718 .features_color_write_enable_ext 11719 .as_mut() 11720 .map(|s| &mut s.color_write_enable)] 11721 .into_iter() 11722 .flatten() 11723 .next() 11724 { 11725 *f = features.color_write_enable as ash::vk::Bool32; 11726 } 11727 if let Some(f) = [self 11728 .features_compute_shader_derivatives_nv 11729 .as_mut() 11730 .map(|s| &mut s.compute_derivative_group_linear)] 11731 .into_iter() 11732 .flatten() 11733 .next() 11734 { 11735 *f = features.compute_derivative_group_linear as ash::vk::Bool32; 11736 } 11737 if let Some(f) = [self 11738 .features_compute_shader_derivatives_nv 11739 .as_mut() 11740 .map(|s| &mut s.compute_derivative_group_quads)] 11741 .into_iter() 11742 .flatten() 11743 .next() 11744 { 11745 *f = features.compute_derivative_group_quads as ash::vk::Bool32; 11746 } 11747 if let Some(f) = [ 11748 self.features_vulkan13 11749 .as_mut() 11750 .map(|s| &mut s.compute_full_subgroups), 11751 self.features_subgroup_size_control 11752 .as_mut() 11753 .map(|s| &mut s.compute_full_subgroups), 11754 ] 11755 .into_iter() 11756 .flatten() 11757 .next() 11758 { 11759 *f = features.compute_full_subgroups as ash::vk::Bool32; 11760 } 11761 if let Some(f) = [self 11762 .features_conditional_rendering_ext 11763 .as_mut() 11764 .map(|s| &mut s.conditional_rendering)] 11765 .into_iter() 11766 .flatten() 11767 .next() 11768 { 11769 *f = features.conditional_rendering as ash::vk::Bool32; 11770 } 11771 if let Some(f) = [self 11772 .features_portability_subset_khr 11773 .as_mut() 11774 .map(|s| &mut s.constant_alpha_color_blend_factors)] 11775 .into_iter() 11776 .flatten() 11777 .next() 11778 { 11779 *f = features.constant_alpha_color_blend_factors as ash::vk::Bool32; 11780 } 11781 if let Some(f) = [self 11782 .features_cooperative_matrix_nv 11783 .as_mut() 11784 .map(|s| &mut s.cooperative_matrix)] 11785 .into_iter() 11786 .flatten() 11787 .next() 11788 { 11789 *f = features.cooperative_matrix as ash::vk::Bool32; 11790 } 11791 if let Some(f) = [self 11792 .features_cooperative_matrix_nv 11793 .as_mut() 11794 .map(|s| &mut s.cooperative_matrix_robust_buffer_access)] 11795 .into_iter() 11796 .flatten() 11797 .next() 11798 { 11799 *f = features.cooperative_matrix_robust_buffer_access as ash::vk::Bool32; 11800 } 11801 if let Some(f) = [self 11802 .features_corner_sampled_image_nv 11803 .as_mut() 11804 .map(|s| &mut s.corner_sampled_image)] 11805 .into_iter() 11806 .flatten() 11807 .next() 11808 { 11809 *f = features.corner_sampled_image as ash::vk::Bool32; 11810 } 11811 if let Some(f) = [self 11812 .features_coverage_reduction_mode_nv 11813 .as_mut() 11814 .map(|s| &mut s.coverage_reduction_mode)] 11815 .into_iter() 11816 .flatten() 11817 .next() 11818 { 11819 *f = features.coverage_reduction_mode as ash::vk::Bool32; 11820 } 11821 if let Some(f) = [self 11822 .features_custom_border_color_ext 11823 .as_mut() 11824 .map(|s| &mut s.custom_border_color_without_format)] 11825 .into_iter() 11826 .flatten() 11827 .next() 11828 { 11829 *f = features.custom_border_color_without_format as ash::vk::Bool32; 11830 } 11831 if let Some(f) = [self 11832 .features_custom_border_color_ext 11833 .as_mut() 11834 .map(|s| &mut s.custom_border_colors)] 11835 .into_iter() 11836 .flatten() 11837 .next() 11838 { 11839 *f = features.custom_border_colors as ash::vk::Bool32; 11840 } 11841 if let Some(f) = [self 11842 .features_astc_decode_ext 11843 .as_mut() 11844 .map(|s| &mut s.decode_mode_shared_exponent)] 11845 .into_iter() 11846 .flatten() 11847 .next() 11848 { 11849 *f = features.decode_mode_shared_exponent as ash::vk::Bool32; 11850 } 11851 if let Some(f) = [self 11852 .features_dedicated_allocation_image_aliasing_nv 11853 .as_mut() 11854 .map(|s| &mut s.dedicated_allocation_image_aliasing)] 11855 .into_iter() 11856 .flatten() 11857 .next() 11858 { 11859 *f = features.dedicated_allocation_image_aliasing as ash::vk::Bool32; 11860 } 11861 if let Some(f) = [&mut self.features_vulkan10.features.depth_bias_clamp] 11862 .into_iter() 11863 .next() 11864 { 11865 *f = features.depth_bias_clamp as ash::vk::Bool32; 11866 } 11867 if let Some(f) = [&mut self.features_vulkan10.features.depth_bounds] 11868 .into_iter() 11869 .next() 11870 { 11871 *f = features.depth_bounds as ash::vk::Bool32; 11872 } 11873 if let Some(f) = [&mut self.features_vulkan10.features.depth_clamp] 11874 .into_iter() 11875 .next() 11876 { 11877 *f = features.depth_clamp as ash::vk::Bool32; 11878 } 11879 if let Some(f) = [self 11880 .features_depth_clamp_zero_one_ext 11881 .as_mut() 11882 .map(|s| &mut s.depth_clamp_zero_one)] 11883 .into_iter() 11884 .flatten() 11885 .next() 11886 { 11887 *f = features.depth_clamp_zero_one as ash::vk::Bool32; 11888 } 11889 if let Some(f) = [self 11890 .features_depth_clip_control_ext 11891 .as_mut() 11892 .map(|s| &mut s.depth_clip_control)] 11893 .into_iter() 11894 .flatten() 11895 .next() 11896 { 11897 *f = features.depth_clip_control as ash::vk::Bool32; 11898 } 11899 if let Some(f) = [self 11900 .features_depth_clip_enable_ext 11901 .as_mut() 11902 .map(|s| &mut s.depth_clip_enable)] 11903 .into_iter() 11904 .flatten() 11905 .next() 11906 { 11907 *f = features.depth_clip_enable as ash::vk::Bool32; 11908 } 11909 if let Some(f) = [self 11910 .features_acceleration_structure_khr 11911 .as_mut() 11912 .map(|s| &mut s.descriptor_binding_acceleration_structure_update_after_bind)] 11913 .into_iter() 11914 .flatten() 11915 .next() 11916 { 11917 *f = features.descriptor_binding_acceleration_structure_update_after_bind 11918 as ash::vk::Bool32; 11919 } 11920 if let Some(f) = [ 11921 self.features_vulkan13 11922 .as_mut() 11923 .map(|s| &mut s.descriptor_binding_inline_uniform_block_update_after_bind), 11924 self.features_inline_uniform_block 11925 .as_mut() 11926 .map(|s| &mut s.descriptor_binding_inline_uniform_block_update_after_bind), 11927 ] 11928 .into_iter() 11929 .flatten() 11930 .next() 11931 { 11932 *f = features.descriptor_binding_inline_uniform_block_update_after_bind 11933 as ash::vk::Bool32; 11934 } 11935 if let Some(f) = [ 11936 self.features_vulkan12 11937 .as_mut() 11938 .map(|s| &mut s.descriptor_binding_partially_bound), 11939 self.features_descriptor_indexing 11940 .as_mut() 11941 .map(|s| &mut s.descriptor_binding_partially_bound), 11942 ] 11943 .into_iter() 11944 .flatten() 11945 .next() 11946 { 11947 *f = features.descriptor_binding_partially_bound as ash::vk::Bool32; 11948 } 11949 if let Some(f) = [ 11950 self.features_vulkan12 11951 .as_mut() 11952 .map(|s| &mut s.descriptor_binding_sampled_image_update_after_bind), 11953 self.features_descriptor_indexing 11954 .as_mut() 11955 .map(|s| &mut s.descriptor_binding_sampled_image_update_after_bind), 11956 ] 11957 .into_iter() 11958 .flatten() 11959 .next() 11960 { 11961 *f = features.descriptor_binding_sampled_image_update_after_bind as ash::vk::Bool32; 11962 } 11963 if let Some(f) = [ 11964 self.features_vulkan12 11965 .as_mut() 11966 .map(|s| &mut s.descriptor_binding_storage_buffer_update_after_bind), 11967 self.features_descriptor_indexing 11968 .as_mut() 11969 .map(|s| &mut s.descriptor_binding_storage_buffer_update_after_bind), 11970 ] 11971 .into_iter() 11972 .flatten() 11973 .next() 11974 { 11975 *f = features.descriptor_binding_storage_buffer_update_after_bind as ash::vk::Bool32; 11976 } 11977 if let Some(f) = [ 11978 self.features_vulkan12 11979 .as_mut() 11980 .map(|s| &mut s.descriptor_binding_storage_image_update_after_bind), 11981 self.features_descriptor_indexing 11982 .as_mut() 11983 .map(|s| &mut s.descriptor_binding_storage_image_update_after_bind), 11984 ] 11985 .into_iter() 11986 .flatten() 11987 .next() 11988 { 11989 *f = features.descriptor_binding_storage_image_update_after_bind as ash::vk::Bool32; 11990 } 11991 if let Some(f) = [ 11992 self.features_vulkan12 11993 .as_mut() 11994 .map(|s| &mut s.descriptor_binding_storage_texel_buffer_update_after_bind), 11995 self.features_descriptor_indexing 11996 .as_mut() 11997 .map(|s| &mut s.descriptor_binding_storage_texel_buffer_update_after_bind), 11998 ] 11999 .into_iter() 12000 .flatten() 12001 .next() 12002 { 12003 *f = features.descriptor_binding_storage_texel_buffer_update_after_bind 12004 as ash::vk::Bool32; 12005 } 12006 if let Some(f) = [ 12007 self.features_vulkan12 12008 .as_mut() 12009 .map(|s| &mut s.descriptor_binding_uniform_buffer_update_after_bind), 12010 self.features_descriptor_indexing 12011 .as_mut() 12012 .map(|s| &mut s.descriptor_binding_uniform_buffer_update_after_bind), 12013 ] 12014 .into_iter() 12015 .flatten() 12016 .next() 12017 { 12018 *f = features.descriptor_binding_uniform_buffer_update_after_bind as ash::vk::Bool32; 12019 } 12020 if let Some(f) = [ 12021 self.features_vulkan12 12022 .as_mut() 12023 .map(|s| &mut s.descriptor_binding_uniform_texel_buffer_update_after_bind), 12024 self.features_descriptor_indexing 12025 .as_mut() 12026 .map(|s| &mut s.descriptor_binding_uniform_texel_buffer_update_after_bind), 12027 ] 12028 .into_iter() 12029 .flatten() 12030 .next() 12031 { 12032 *f = features.descriptor_binding_uniform_texel_buffer_update_after_bind 12033 as ash::vk::Bool32; 12034 } 12035 if let Some(f) = [ 12036 self.features_vulkan12 12037 .as_mut() 12038 .map(|s| &mut s.descriptor_binding_update_unused_while_pending), 12039 self.features_descriptor_indexing 12040 .as_mut() 12041 .map(|s| &mut s.descriptor_binding_update_unused_while_pending), 12042 ] 12043 .into_iter() 12044 .flatten() 12045 .next() 12046 { 12047 *f = features.descriptor_binding_update_unused_while_pending as ash::vk::Bool32; 12048 } 12049 if let Some(f) = [ 12050 self.features_vulkan12 12051 .as_mut() 12052 .map(|s| &mut s.descriptor_binding_variable_descriptor_count), 12053 self.features_descriptor_indexing 12054 .as_mut() 12055 .map(|s| &mut s.descriptor_binding_variable_descriptor_count), 12056 ] 12057 .into_iter() 12058 .flatten() 12059 .next() 12060 { 12061 *f = features.descriptor_binding_variable_descriptor_count as ash::vk::Bool32; 12062 } 12063 if let Some(f) = [self 12064 .features_descriptor_buffer_ext 12065 .as_mut() 12066 .map(|s| &mut s.descriptor_buffer)] 12067 .into_iter() 12068 .flatten() 12069 .next() 12070 { 12071 *f = features.descriptor_buffer as ash::vk::Bool32; 12072 } 12073 if let Some(f) = [self 12074 .features_descriptor_buffer_ext 12075 .as_mut() 12076 .map(|s| &mut s.descriptor_buffer_capture_replay)] 12077 .into_iter() 12078 .flatten() 12079 .next() 12080 { 12081 *f = features.descriptor_buffer_capture_replay as ash::vk::Bool32; 12082 } 12083 if let Some(f) = [self 12084 .features_descriptor_buffer_ext 12085 .as_mut() 12086 .map(|s| &mut s.descriptor_buffer_image_layout_ignored)] 12087 .into_iter() 12088 .flatten() 12089 .next() 12090 { 12091 *f = features.descriptor_buffer_image_layout_ignored as ash::vk::Bool32; 12092 } 12093 if let Some(f) = [self 12094 .features_descriptor_buffer_ext 12095 .as_mut() 12096 .map(|s| &mut s.descriptor_buffer_push_descriptors)] 12097 .into_iter() 12098 .flatten() 12099 .next() 12100 { 12101 *f = features.descriptor_buffer_push_descriptors as ash::vk::Bool32; 12102 } 12103 if let Some(f) = [self 12104 .features_vulkan12 12105 .as_mut() 12106 .map(|s| &mut s.descriptor_indexing)] 12107 .into_iter() 12108 .flatten() 12109 .next() 12110 { 12111 *f = features.descriptor_indexing as ash::vk::Bool32; 12112 } 12113 if let Some(f) = [self 12114 .features_descriptor_set_host_mapping_valve 12115 .as_mut() 12116 .map(|s| &mut s.descriptor_set_host_mapping)] 12117 .into_iter() 12118 .flatten() 12119 .next() 12120 { 12121 *f = features.descriptor_set_host_mapping as ash::vk::Bool32; 12122 } 12123 if let Some(f) = [self 12124 .features_coherent_memory_amd 12125 .as_mut() 12126 .map(|s| &mut s.device_coherent_memory)] 12127 .into_iter() 12128 .flatten() 12129 .next() 12130 { 12131 *f = features.device_coherent_memory as ash::vk::Bool32; 12132 } 12133 if let Some(f) = [self 12134 .features_fault_ext 12135 .as_mut() 12136 .map(|s| &mut s.device_fault)] 12137 .into_iter() 12138 .flatten() 12139 .next() 12140 { 12141 *f = features.device_fault as ash::vk::Bool32; 12142 } 12143 if let Some(f) = [self 12144 .features_fault_ext 12145 .as_mut() 12146 .map(|s| &mut s.device_fault_vendor_binary)] 12147 .into_iter() 12148 .flatten() 12149 .next() 12150 { 12151 *f = features.device_fault_vendor_binary as ash::vk::Bool32; 12152 } 12153 if let Some(f) = [self 12154 .features_device_generated_commands_nv 12155 .as_mut() 12156 .map(|s| &mut s.device_generated_commands)] 12157 .into_iter() 12158 .flatten() 12159 .next() 12160 { 12161 *f = features.device_generated_commands as ash::vk::Bool32; 12162 } 12163 if let Some(f) = [self 12164 .features_device_memory_report_ext 12165 .as_mut() 12166 .map(|s| &mut s.device_memory_report)] 12167 .into_iter() 12168 .flatten() 12169 .next() 12170 { 12171 *f = features.device_memory_report as ash::vk::Bool32; 12172 } 12173 if let Some(f) = [self 12174 .features_diagnostics_config_nv 12175 .as_mut() 12176 .map(|s| &mut s.diagnostics_config)] 12177 .into_iter() 12178 .flatten() 12179 .next() 12180 { 12181 *f = features.diagnostics_config as ash::vk::Bool32; 12182 } 12183 if let Some(f) = [self 12184 .features_vulkan12 12185 .as_mut() 12186 .map(|s| &mut s.draw_indirect_count)] 12187 .into_iter() 12188 .flatten() 12189 .next() 12190 { 12191 *f = features.draw_indirect_count as ash::vk::Bool32; 12192 } 12193 if let Some(f) = [&mut self.features_vulkan10.features.draw_indirect_first_instance] 12194 .into_iter() 12195 .next() 12196 { 12197 *f = features.draw_indirect_first_instance as ash::vk::Bool32; 12198 } 12199 if let Some(f) = [&mut self.features_vulkan10.features.dual_src_blend] 12200 .into_iter() 12201 .next() 12202 { 12203 *f = features.dual_src_blend as ash::vk::Bool32; 12204 } 12205 if let Some(f) = [ 12206 self.features_vulkan13 12207 .as_mut() 12208 .map(|s| &mut s.dynamic_rendering), 12209 self.features_dynamic_rendering 12210 .as_mut() 12211 .map(|s| &mut s.dynamic_rendering), 12212 ] 12213 .into_iter() 12214 .flatten() 12215 .next() 12216 { 12217 *f = features.dynamic_rendering as ash::vk::Bool32; 12218 } 12219 if let Some(f) = [self 12220 .features_portability_subset_khr 12221 .as_mut() 12222 .map(|s| &mut s.events)] 12223 .into_iter() 12224 .flatten() 12225 .next() 12226 { 12227 *f = features.events as ash::vk::Bool32; 12228 } 12229 if let Some(f) = [self 12230 .features_exclusive_scissor_nv 12231 .as_mut() 12232 .map(|s| &mut s.exclusive_scissor)] 12233 .into_iter() 12234 .flatten() 12235 .next() 12236 { 12237 *f = features.exclusive_scissor as ash::vk::Bool32; 12238 } 12239 if let Some(f) = [self 12240 .features_extended_dynamic_state_ext 12241 .as_mut() 12242 .map(|s| &mut s.extended_dynamic_state)] 12243 .into_iter() 12244 .flatten() 12245 .next() 12246 { 12247 *f = features.extended_dynamic_state as ash::vk::Bool32; 12248 } 12249 if let Some(f) = [self 12250 .features_extended_dynamic_state2_ext 12251 .as_mut() 12252 .map(|s| &mut s.extended_dynamic_state2)] 12253 .into_iter() 12254 .flatten() 12255 .next() 12256 { 12257 *f = features.extended_dynamic_state2 as ash::vk::Bool32; 12258 } 12259 if let Some(f) = [self 12260 .features_extended_dynamic_state2_ext 12261 .as_mut() 12262 .map(|s| &mut s.extended_dynamic_state2_logic_op)] 12263 .into_iter() 12264 .flatten() 12265 .next() 12266 { 12267 *f = features.extended_dynamic_state2_logic_op as ash::vk::Bool32; 12268 } 12269 if let Some(f) = [self 12270 .features_extended_dynamic_state2_ext 12271 .as_mut() 12272 .map(|s| &mut s.extended_dynamic_state2_patch_control_points)] 12273 .into_iter() 12274 .flatten() 12275 .next() 12276 { 12277 *f = features.extended_dynamic_state2_patch_control_points as ash::vk::Bool32; 12278 } 12279 if let Some(f) = [self 12280 .features_extended_dynamic_state3_ext 12281 .as_mut() 12282 .map(|s| &mut s.extended_dynamic_state3_alpha_to_coverage_enable)] 12283 .into_iter() 12284 .flatten() 12285 .next() 12286 { 12287 *f = features.extended_dynamic_state3_alpha_to_coverage_enable as ash::vk::Bool32; 12288 } 12289 if let Some(f) = [self 12290 .features_extended_dynamic_state3_ext 12291 .as_mut() 12292 .map(|s| &mut s.extended_dynamic_state3_alpha_to_one_enable)] 12293 .into_iter() 12294 .flatten() 12295 .next() 12296 { 12297 *f = features.extended_dynamic_state3_alpha_to_one_enable as ash::vk::Bool32; 12298 } 12299 if let Some(f) = [self 12300 .features_extended_dynamic_state3_ext 12301 .as_mut() 12302 .map(|s| &mut s.extended_dynamic_state3_color_blend_advanced)] 12303 .into_iter() 12304 .flatten() 12305 .next() 12306 { 12307 *f = features.extended_dynamic_state3_color_blend_advanced as ash::vk::Bool32; 12308 } 12309 if let Some(f) = [self 12310 .features_extended_dynamic_state3_ext 12311 .as_mut() 12312 .map(|s| &mut s.extended_dynamic_state3_color_blend_enable)] 12313 .into_iter() 12314 .flatten() 12315 .next() 12316 { 12317 *f = features.extended_dynamic_state3_color_blend_enable as ash::vk::Bool32; 12318 } 12319 if let Some(f) = [self 12320 .features_extended_dynamic_state3_ext 12321 .as_mut() 12322 .map(|s| &mut s.extended_dynamic_state3_color_blend_equation)] 12323 .into_iter() 12324 .flatten() 12325 .next() 12326 { 12327 *f = features.extended_dynamic_state3_color_blend_equation as ash::vk::Bool32; 12328 } 12329 if let Some(f) = [self 12330 .features_extended_dynamic_state3_ext 12331 .as_mut() 12332 .map(|s| &mut s.extended_dynamic_state3_color_write_mask)] 12333 .into_iter() 12334 .flatten() 12335 .next() 12336 { 12337 *f = features.extended_dynamic_state3_color_write_mask as ash::vk::Bool32; 12338 } 12339 if let Some(f) = [self 12340 .features_extended_dynamic_state3_ext 12341 .as_mut() 12342 .map(|s| &mut s.extended_dynamic_state3_conservative_rasterization_mode)] 12343 .into_iter() 12344 .flatten() 12345 .next() 12346 { 12347 *f = 12348 features.extended_dynamic_state3_conservative_rasterization_mode as ash::vk::Bool32; 12349 } 12350 if let Some(f) = [self 12351 .features_extended_dynamic_state3_ext 12352 .as_mut() 12353 .map(|s| &mut s.extended_dynamic_state3_coverage_modulation_mode)] 12354 .into_iter() 12355 .flatten() 12356 .next() 12357 { 12358 *f = features.extended_dynamic_state3_coverage_modulation_mode as ash::vk::Bool32; 12359 } 12360 if let Some(f) = [self 12361 .features_extended_dynamic_state3_ext 12362 .as_mut() 12363 .map(|s| &mut s.extended_dynamic_state3_coverage_modulation_table)] 12364 .into_iter() 12365 .flatten() 12366 .next() 12367 { 12368 *f = features.extended_dynamic_state3_coverage_modulation_table as ash::vk::Bool32; 12369 } 12370 if let Some(f) = [self 12371 .features_extended_dynamic_state3_ext 12372 .as_mut() 12373 .map(|s| &mut s.extended_dynamic_state3_coverage_modulation_table_enable)] 12374 .into_iter() 12375 .flatten() 12376 .next() 12377 { 12378 *f = features.extended_dynamic_state3_coverage_modulation_table_enable 12379 as ash::vk::Bool32; 12380 } 12381 if let Some(f) = [self 12382 .features_extended_dynamic_state3_ext 12383 .as_mut() 12384 .map(|s| &mut s.extended_dynamic_state3_coverage_reduction_mode)] 12385 .into_iter() 12386 .flatten() 12387 .next() 12388 { 12389 *f = features.extended_dynamic_state3_coverage_reduction_mode as ash::vk::Bool32; 12390 } 12391 if let Some(f) = [self 12392 .features_extended_dynamic_state3_ext 12393 .as_mut() 12394 .map(|s| &mut s.extended_dynamic_state3_coverage_to_color_enable)] 12395 .into_iter() 12396 .flatten() 12397 .next() 12398 { 12399 *f = features.extended_dynamic_state3_coverage_to_color_enable as ash::vk::Bool32; 12400 } 12401 if let Some(f) = [self 12402 .features_extended_dynamic_state3_ext 12403 .as_mut() 12404 .map(|s| &mut s.extended_dynamic_state3_coverage_to_color_location)] 12405 .into_iter() 12406 .flatten() 12407 .next() 12408 { 12409 *f = features.extended_dynamic_state3_coverage_to_color_location as ash::vk::Bool32; 12410 } 12411 if let Some(f) = [self 12412 .features_extended_dynamic_state3_ext 12413 .as_mut() 12414 .map(|s| &mut s.extended_dynamic_state3_depth_clamp_enable)] 12415 .into_iter() 12416 .flatten() 12417 .next() 12418 { 12419 *f = features.extended_dynamic_state3_depth_clamp_enable as ash::vk::Bool32; 12420 } 12421 if let Some(f) = [self 12422 .features_extended_dynamic_state3_ext 12423 .as_mut() 12424 .map(|s| &mut s.extended_dynamic_state3_depth_clip_enable)] 12425 .into_iter() 12426 .flatten() 12427 .next() 12428 { 12429 *f = features.extended_dynamic_state3_depth_clip_enable as ash::vk::Bool32; 12430 } 12431 if let Some(f) = [self 12432 .features_extended_dynamic_state3_ext 12433 .as_mut() 12434 .map(|s| &mut s.extended_dynamic_state3_depth_clip_negative_one_to_one)] 12435 .into_iter() 12436 .flatten() 12437 .next() 12438 { 12439 *f = features.extended_dynamic_state3_depth_clip_negative_one_to_one as ash::vk::Bool32; 12440 } 12441 if let Some(f) = [self 12442 .features_extended_dynamic_state3_ext 12443 .as_mut() 12444 .map(|s| &mut s.extended_dynamic_state3_extra_primitive_overestimation_size)] 12445 .into_iter() 12446 .flatten() 12447 .next() 12448 { 12449 *f = features.extended_dynamic_state3_extra_primitive_overestimation_size 12450 as ash::vk::Bool32; 12451 } 12452 if let Some(f) = [self 12453 .features_extended_dynamic_state3_ext 12454 .as_mut() 12455 .map(|s| &mut s.extended_dynamic_state3_line_rasterization_mode)] 12456 .into_iter() 12457 .flatten() 12458 .next() 12459 { 12460 *f = features.extended_dynamic_state3_line_rasterization_mode as ash::vk::Bool32; 12461 } 12462 if let Some(f) = [self 12463 .features_extended_dynamic_state3_ext 12464 .as_mut() 12465 .map(|s| &mut s.extended_dynamic_state3_line_stipple_enable)] 12466 .into_iter() 12467 .flatten() 12468 .next() 12469 { 12470 *f = features.extended_dynamic_state3_line_stipple_enable as ash::vk::Bool32; 12471 } 12472 if let Some(f) = [self 12473 .features_extended_dynamic_state3_ext 12474 .as_mut() 12475 .map(|s| &mut s.extended_dynamic_state3_logic_op_enable)] 12476 .into_iter() 12477 .flatten() 12478 .next() 12479 { 12480 *f = features.extended_dynamic_state3_logic_op_enable as ash::vk::Bool32; 12481 } 12482 if let Some(f) = [self 12483 .features_extended_dynamic_state3_ext 12484 .as_mut() 12485 .map(|s| &mut s.extended_dynamic_state3_polygon_mode)] 12486 .into_iter() 12487 .flatten() 12488 .next() 12489 { 12490 *f = features.extended_dynamic_state3_polygon_mode as ash::vk::Bool32; 12491 } 12492 if let Some(f) = [self 12493 .features_extended_dynamic_state3_ext 12494 .as_mut() 12495 .map(|s| &mut s.extended_dynamic_state3_provoking_vertex_mode)] 12496 .into_iter() 12497 .flatten() 12498 .next() 12499 { 12500 *f = features.extended_dynamic_state3_provoking_vertex_mode as ash::vk::Bool32; 12501 } 12502 if let Some(f) = [self 12503 .features_extended_dynamic_state3_ext 12504 .as_mut() 12505 .map(|s| &mut s.extended_dynamic_state3_rasterization_samples)] 12506 .into_iter() 12507 .flatten() 12508 .next() 12509 { 12510 *f = features.extended_dynamic_state3_rasterization_samples as ash::vk::Bool32; 12511 } 12512 if let Some(f) = [self 12513 .features_extended_dynamic_state3_ext 12514 .as_mut() 12515 .map(|s| &mut s.extended_dynamic_state3_rasterization_stream)] 12516 .into_iter() 12517 .flatten() 12518 .next() 12519 { 12520 *f = features.extended_dynamic_state3_rasterization_stream as ash::vk::Bool32; 12521 } 12522 if let Some(f) = [self 12523 .features_extended_dynamic_state3_ext 12524 .as_mut() 12525 .map(|s| &mut s.extended_dynamic_state3_representative_fragment_test_enable)] 12526 .into_iter() 12527 .flatten() 12528 .next() 12529 { 12530 *f = features.extended_dynamic_state3_representative_fragment_test_enable 12531 as ash::vk::Bool32; 12532 } 12533 if let Some(f) = [self 12534 .features_extended_dynamic_state3_ext 12535 .as_mut() 12536 .map(|s| &mut s.extended_dynamic_state3_sample_locations_enable)] 12537 .into_iter() 12538 .flatten() 12539 .next() 12540 { 12541 *f = features.extended_dynamic_state3_sample_locations_enable as ash::vk::Bool32; 12542 } 12543 if let Some(f) = [self 12544 .features_extended_dynamic_state3_ext 12545 .as_mut() 12546 .map(|s| &mut s.extended_dynamic_state3_sample_mask)] 12547 .into_iter() 12548 .flatten() 12549 .next() 12550 { 12551 *f = features.extended_dynamic_state3_sample_mask as ash::vk::Bool32; 12552 } 12553 if let Some(f) = [self 12554 .features_extended_dynamic_state3_ext 12555 .as_mut() 12556 .map(|s| &mut s.extended_dynamic_state3_shading_rate_image_enable)] 12557 .into_iter() 12558 .flatten() 12559 .next() 12560 { 12561 *f = features.extended_dynamic_state3_shading_rate_image_enable as ash::vk::Bool32; 12562 } 12563 if let Some(f) = [self 12564 .features_extended_dynamic_state3_ext 12565 .as_mut() 12566 .map(|s| &mut s.extended_dynamic_state3_tessellation_domain_origin)] 12567 .into_iter() 12568 .flatten() 12569 .next() 12570 { 12571 *f = features.extended_dynamic_state3_tessellation_domain_origin as ash::vk::Bool32; 12572 } 12573 if let Some(f) = [self 12574 .features_extended_dynamic_state3_ext 12575 .as_mut() 12576 .map(|s| &mut s.extended_dynamic_state3_viewport_swizzle)] 12577 .into_iter() 12578 .flatten() 12579 .next() 12580 { 12581 *f = features.extended_dynamic_state3_viewport_swizzle as ash::vk::Bool32; 12582 } 12583 if let Some(f) = [self 12584 .features_extended_dynamic_state3_ext 12585 .as_mut() 12586 .map(|s| &mut s.extended_dynamic_state3_viewport_w_scaling_enable)] 12587 .into_iter() 12588 .flatten() 12589 .next() 12590 { 12591 *f = features.extended_dynamic_state3_viewport_w_scaling_enable as ash::vk::Bool32; 12592 } 12593 if let Some(f) = [self 12594 .features_external_memory_rdma_nv 12595 .as_mut() 12596 .map(|s| &mut s.external_memory_rdma)] 12597 .into_iter() 12598 .flatten() 12599 .next() 12600 { 12601 *f = features.external_memory_rdma as ash::vk::Bool32; 12602 } 12603 if let Some(f) = [&mut self.features_vulkan10.features.fill_mode_non_solid] 12604 .into_iter() 12605 .next() 12606 { 12607 *f = features.fill_mode_non_solid as ash::vk::Bool32; 12608 } 12609 if let Some(f) = [self 12610 .features_4444formats_ext 12611 .as_mut() 12612 .map(|s| &mut s.format_a4b4g4r4)] 12613 .into_iter() 12614 .flatten() 12615 .next() 12616 { 12617 *f = features.format_a4b4g4r4 as ash::vk::Bool32; 12618 } 12619 if let Some(f) = [self 12620 .features_4444formats_ext 12621 .as_mut() 12622 .map(|s| &mut s.format_a4r4g4b4)] 12623 .into_iter() 12624 .flatten() 12625 .next() 12626 { 12627 *f = features.format_a4r4g4b4 as ash::vk::Bool32; 12628 } 12629 if let Some(f) = [self 12630 .features_rgba10x6_formats_ext 12631 .as_mut() 12632 .map(|s| &mut s.format_rgba10x6_without_y_cb_cr_sampler)] 12633 .into_iter() 12634 .flatten() 12635 .next() 12636 { 12637 *f = features.format_rgba10x6_without_y_cb_cr_sampler as ash::vk::Bool32; 12638 } 12639 if let Some(f) = [self 12640 .features_fragment_density_map_ext 12641 .as_mut() 12642 .map(|s| &mut s.fragment_density_map)] 12643 .into_iter() 12644 .flatten() 12645 .next() 12646 { 12647 *f = features.fragment_density_map as ash::vk::Bool32; 12648 } 12649 if let Some(f) = [self 12650 .features_fragment_density_map2_ext 12651 .as_mut() 12652 .map(|s| &mut s.fragment_density_map_deferred)] 12653 .into_iter() 12654 .flatten() 12655 .next() 12656 { 12657 *f = features.fragment_density_map_deferred as ash::vk::Bool32; 12658 } 12659 if let Some(f) = [self 12660 .features_fragment_density_map_ext 12661 .as_mut() 12662 .map(|s| &mut s.fragment_density_map_dynamic)] 12663 .into_iter() 12664 .flatten() 12665 .next() 12666 { 12667 *f = features.fragment_density_map_dynamic as ash::vk::Bool32; 12668 } 12669 if let Some(f) = [self 12670 .features_fragment_density_map_ext 12671 .as_mut() 12672 .map(|s| &mut s.fragment_density_map_non_subsampled_images)] 12673 .into_iter() 12674 .flatten() 12675 .next() 12676 { 12677 *f = features.fragment_density_map_non_subsampled_images as ash::vk::Bool32; 12678 } 12679 if let Some(f) = [self 12680 .features_fragment_density_map_offset_qcom 12681 .as_mut() 12682 .map(|s| &mut s.fragment_density_map_offset)] 12683 .into_iter() 12684 .flatten() 12685 .next() 12686 { 12687 *f = features.fragment_density_map_offset as ash::vk::Bool32; 12688 } 12689 if let Some(f) = [self 12690 .features_fragment_shader_barycentric_khr 12691 .as_mut() 12692 .map(|s| &mut s.fragment_shader_barycentric)] 12693 .into_iter() 12694 .flatten() 12695 .next() 12696 { 12697 *f = features.fragment_shader_barycentric as ash::vk::Bool32; 12698 } 12699 if let Some(f) = [self 12700 .features_fragment_shader_interlock_ext 12701 .as_mut() 12702 .map(|s| &mut s.fragment_shader_pixel_interlock)] 12703 .into_iter() 12704 .flatten() 12705 .next() 12706 { 12707 *f = features.fragment_shader_pixel_interlock as ash::vk::Bool32; 12708 } 12709 if let Some(f) = [self 12710 .features_fragment_shader_interlock_ext 12711 .as_mut() 12712 .map(|s| &mut s.fragment_shader_sample_interlock)] 12713 .into_iter() 12714 .flatten() 12715 .next() 12716 { 12717 *f = features.fragment_shader_sample_interlock as ash::vk::Bool32; 12718 } 12719 if let Some(f) = [self 12720 .features_fragment_shader_interlock_ext 12721 .as_mut() 12722 .map(|s| &mut s.fragment_shader_shading_rate_interlock)] 12723 .into_iter() 12724 .flatten() 12725 .next() 12726 { 12727 *f = features.fragment_shader_shading_rate_interlock as ash::vk::Bool32; 12728 } 12729 if let Some(f) = [self 12730 .features_fragment_shading_rate_enums_nv 12731 .as_mut() 12732 .map(|s| &mut s.fragment_shading_rate_enums)] 12733 .into_iter() 12734 .flatten() 12735 .next() 12736 { 12737 *f = features.fragment_shading_rate_enums as ash::vk::Bool32; 12738 } 12739 if let Some(f) = [&mut self.features_vulkan10.features.fragment_stores_and_atomics] 12740 .into_iter() 12741 .next() 12742 { 12743 *f = features.fragment_stores_and_atomics as ash::vk::Bool32; 12744 } 12745 if let Some(f) = [&mut self.features_vulkan10.features.full_draw_index_uint32] 12746 .into_iter() 12747 .next() 12748 { 12749 *f = features.full_draw_index_uint32 as ash::vk::Bool32; 12750 } 12751 if let Some(f) = [&mut self.features_vulkan10.features.geometry_shader] 12752 .into_iter() 12753 .next() 12754 { 12755 *f = features.geometry_shader as ash::vk::Bool32; 12756 } 12757 if let Some(f) = [self 12758 .features_transform_feedback_ext 12759 .as_mut() 12760 .map(|s| &mut s.geometry_streams)] 12761 .into_iter() 12762 .flatten() 12763 .next() 12764 { 12765 *f = features.geometry_streams as ash::vk::Bool32; 12766 } 12767 if let Some(f) = [self 12768 .features_global_priority_query_khr 12769 .as_mut() 12770 .map(|s| &mut s.global_priority_query)] 12771 .into_iter() 12772 .flatten() 12773 .next() 12774 { 12775 *f = features.global_priority_query as ash::vk::Bool32; 12776 } 12777 if let Some(f) = [self 12778 .features_graphics_pipeline_library_ext 12779 .as_mut() 12780 .map(|s| &mut s.graphics_pipeline_library)] 12781 .into_iter() 12782 .flatten() 12783 .next() 12784 { 12785 *f = features.graphics_pipeline_library as ash::vk::Bool32; 12786 } 12787 if let Some(f) = [ 12788 self.features_vulkan12 12789 .as_mut() 12790 .map(|s| &mut s.host_query_reset), 12791 self.features_host_query_reset 12792 .as_mut() 12793 .map(|s| &mut s.host_query_reset), 12794 ] 12795 .into_iter() 12796 .flatten() 12797 .next() 12798 { 12799 *f = features.host_query_reset as ash::vk::Bool32; 12800 } 12801 if let Some(f) = [self 12802 .features_image2_d_view_of3_d_ext 12803 .as_mut() 12804 .map(|s| &mut s.image2_d_view_of3_d)] 12805 .into_iter() 12806 .flatten() 12807 .next() 12808 { 12809 *f = features.image2_d_view_of3_d as ash::vk::Bool32; 12810 } 12811 if let Some(f) = [self 12812 .features_image_compression_control_ext 12813 .as_mut() 12814 .map(|s| &mut s.image_compression_control)] 12815 .into_iter() 12816 .flatten() 12817 .next() 12818 { 12819 *f = features.image_compression_control as ash::vk::Bool32; 12820 } 12821 if let Some(f) = [self 12822 .features_image_compression_control_swapchain_ext 12823 .as_mut() 12824 .map(|s| &mut s.image_compression_control_swapchain)] 12825 .into_iter() 12826 .flatten() 12827 .next() 12828 { 12829 *f = features.image_compression_control_swapchain as ash::vk::Bool32; 12830 } 12831 if let Some(f) = [&mut self.features_vulkan10.features.image_cube_array] 12832 .into_iter() 12833 .next() 12834 { 12835 *f = features.image_cube_array as ash::vk::Bool32; 12836 } 12837 if let Some(f) = [self 12838 .features_shader_image_footprint_nv 12839 .as_mut() 12840 .map(|s| &mut s.image_footprint)] 12841 .into_iter() 12842 .flatten() 12843 .next() 12844 { 12845 *f = features.image_footprint as ash::vk::Bool32; 12846 } 12847 if let Some(f) = [self 12848 .features_portability_subset_khr 12849 .as_mut() 12850 .map(|s| &mut s.image_view2_d_on3_d_image)] 12851 .into_iter() 12852 .flatten() 12853 .next() 12854 { 12855 *f = features.image_view2_d_on3_d_image as ash::vk::Bool32; 12856 } 12857 if let Some(f) = [self 12858 .features_portability_subset_khr 12859 .as_mut() 12860 .map(|s| &mut s.image_view_format_reinterpretation)] 12861 .into_iter() 12862 .flatten() 12863 .next() 12864 { 12865 *f = features.image_view_format_reinterpretation as ash::vk::Bool32; 12866 } 12867 if let Some(f) = [self 12868 .features_portability_subset_khr 12869 .as_mut() 12870 .map(|s| &mut s.image_view_format_swizzle)] 12871 .into_iter() 12872 .flatten() 12873 .next() 12874 { 12875 *f = features.image_view_format_swizzle as ash::vk::Bool32; 12876 } 12877 if let Some(f) = [ 12878 self.features_vulkan12 12879 .as_mut() 12880 .map(|s| &mut s.imageless_framebuffer), 12881 self.features_imageless_framebuffer 12882 .as_mut() 12883 .map(|s| &mut s.imageless_framebuffer), 12884 ] 12885 .into_iter() 12886 .flatten() 12887 .next() 12888 { 12889 *f = features.imageless_framebuffer as ash::vk::Bool32; 12890 } 12891 if let Some(f) = [&mut self.features_vulkan10.features.independent_blend] 12892 .into_iter() 12893 .next() 12894 { 12895 *f = features.independent_blend as ash::vk::Bool32; 12896 } 12897 if let Some(f) = [self 12898 .features_index_type_uint8_ext 12899 .as_mut() 12900 .map(|s| &mut s.index_type_uint8)] 12901 .into_iter() 12902 .flatten() 12903 .next() 12904 { 12905 *f = features.index_type_uint8 as ash::vk::Bool32; 12906 } 12907 if let Some(f) = [self 12908 .features_copy_memory_indirect_nv 12909 .as_mut() 12910 .map(|s| &mut s.indirect_copy)] 12911 .into_iter() 12912 .flatten() 12913 .next() 12914 { 12915 *f = features.indirect_copy as ash::vk::Bool32; 12916 } 12917 if let Some(f) = [self 12918 .features_conditional_rendering_ext 12919 .as_mut() 12920 .map(|s| &mut s.inherited_conditional_rendering)] 12921 .into_iter() 12922 .flatten() 12923 .next() 12924 { 12925 *f = features.inherited_conditional_rendering as ash::vk::Bool32; 12926 } 12927 if let Some(f) = [&mut self.features_vulkan10.features.inherited_queries] 12928 .into_iter() 12929 .next() 12930 { 12931 *f = features.inherited_queries as ash::vk::Bool32; 12932 } 12933 if let Some(f) = [self 12934 .features_inherited_viewport_scissor_nv 12935 .as_mut() 12936 .map(|s| &mut s.inherited_viewport_scissor2_d)] 12937 .into_iter() 12938 .flatten() 12939 .next() 12940 { 12941 *f = features.inherited_viewport_scissor2_d as ash::vk::Bool32; 12942 } 12943 if let Some(f) = [ 12944 self.features_vulkan13 12945 .as_mut() 12946 .map(|s| &mut s.inline_uniform_block), 12947 self.features_inline_uniform_block 12948 .as_mut() 12949 .map(|s| &mut s.inline_uniform_block), 12950 ] 12951 .into_iter() 12952 .flatten() 12953 .next() 12954 { 12955 *f = features.inline_uniform_block as ash::vk::Bool32; 12956 } 12957 if let Some(f) = [self 12958 .features_invocation_mask_huawei 12959 .as_mut() 12960 .map(|s| &mut s.invocation_mask)] 12961 .into_iter() 12962 .flatten() 12963 .next() 12964 { 12965 *f = features.invocation_mask as ash::vk::Bool32; 12966 } 12967 if let Some(f) = [&mut self.features_vulkan10.features.large_points] 12968 .into_iter() 12969 .next() 12970 { 12971 *f = features.large_points as ash::vk::Bool32; 12972 } 12973 if let Some(f) = [self 12974 .features_legacy_dithering_ext 12975 .as_mut() 12976 .map(|s| &mut s.legacy_dithering)] 12977 .into_iter() 12978 .flatten() 12979 .next() 12980 { 12981 *f = features.legacy_dithering as ash::vk::Bool32; 12982 } 12983 if let Some(f) = [self 12984 .features_linear_color_attachment_nv 12985 .as_mut() 12986 .map(|s| &mut s.linear_color_attachment)] 12987 .into_iter() 12988 .flatten() 12989 .next() 12990 { 12991 *f = features.linear_color_attachment as ash::vk::Bool32; 12992 } 12993 if let Some(f) = [&mut self.features_vulkan10.features.logic_op] 12994 .into_iter() 12995 .next() 12996 { 12997 *f = features.logic_op as ash::vk::Bool32; 12998 } 12999 if let Some(f) = [ 13000 self.features_vulkan13.as_mut().map(|s| &mut s.maintenance4), 13001 self.features_maintenance4 13002 .as_mut() 13003 .map(|s| &mut s.maintenance4), 13004 ] 13005 .into_iter() 13006 .flatten() 13007 .next() 13008 { 13009 *f = features.maintenance4 as ash::vk::Bool32; 13010 } 13011 if let Some(f) = [self 13012 .features_memory_decompression_nv 13013 .as_mut() 13014 .map(|s| &mut s.memory_decompression)] 13015 .into_iter() 13016 .flatten() 13017 .next() 13018 { 13019 *f = features.memory_decompression as ash::vk::Bool32; 13020 } 13021 if let Some(f) = [self 13022 .features_memory_priority_ext 13023 .as_mut() 13024 .map(|s| &mut s.memory_priority)] 13025 .into_iter() 13026 .flatten() 13027 .next() 13028 { 13029 *f = features.memory_priority as ash::vk::Bool32; 13030 } 13031 if let Some(f) = [ 13032 self.features_mesh_shader_ext 13033 .as_mut() 13034 .map(|s| &mut s.mesh_shader), 13035 self.features_mesh_shader_nv 13036 .as_mut() 13037 .map(|s| &mut s.mesh_shader), 13038 ] 13039 .into_iter() 13040 .flatten() 13041 .next() 13042 { 13043 *f = features.mesh_shader as ash::vk::Bool32; 13044 } 13045 if let Some(f) = [self 13046 .features_mesh_shader_ext 13047 .as_mut() 13048 .map(|s| &mut s.mesh_shader_queries)] 13049 .into_iter() 13050 .flatten() 13051 .next() 13052 { 13053 *f = features.mesh_shader_queries as ash::vk::Bool32; 13054 } 13055 if let Some(f) = [self 13056 .features_opacity_micromap_ext 13057 .as_mut() 13058 .map(|s| &mut s.micromap)] 13059 .into_iter() 13060 .flatten() 13061 .next() 13062 { 13063 *f = features.micromap as ash::vk::Bool32; 13064 } 13065 if let Some(f) = [self 13066 .features_opacity_micromap_ext 13067 .as_mut() 13068 .map(|s| &mut s.micromap_capture_replay)] 13069 .into_iter() 13070 .flatten() 13071 .next() 13072 { 13073 *f = features.micromap_capture_replay as ash::vk::Bool32; 13074 } 13075 if let Some(f) = [self 13076 .features_opacity_micromap_ext 13077 .as_mut() 13078 .map(|s| &mut s.micromap_host_commands)] 13079 .into_iter() 13080 .flatten() 13081 .next() 13082 { 13083 *f = features.micromap_host_commands as ash::vk::Bool32; 13084 } 13085 if let Some(f) = [self 13086 .features_image_view_min_lod_ext 13087 .as_mut() 13088 .map(|s| &mut s.min_lod)] 13089 .into_iter() 13090 .flatten() 13091 .next() 13092 { 13093 *f = features.min_lod as ash::vk::Bool32; 13094 } 13095 if let Some(f) = [self 13096 .features_multi_draw_ext 13097 .as_mut() 13098 .map(|s| &mut s.multi_draw)] 13099 .into_iter() 13100 .flatten() 13101 .next() 13102 { 13103 *f = features.multi_draw as ash::vk::Bool32; 13104 } 13105 if let Some(f) = [&mut self.features_vulkan10.features.multi_draw_indirect] 13106 .into_iter() 13107 .next() 13108 { 13109 *f = features.multi_draw_indirect as ash::vk::Bool32; 13110 } 13111 if let Some(f) = [&mut self.features_vulkan10.features.multi_viewport] 13112 .into_iter() 13113 .next() 13114 { 13115 *f = features.multi_viewport as ash::vk::Bool32; 13116 } 13117 if let Some(f) = [self 13118 .features_portability_subset_khr 13119 .as_mut() 13120 .map(|s| &mut s.multisample_array_image)] 13121 .into_iter() 13122 .flatten() 13123 .next() 13124 { 13125 *f = features.multisample_array_image as ash::vk::Bool32; 13126 } 13127 if let Some(f) = [self 13128 .features_multisampled_render_to_single_sampled_ext 13129 .as_mut() 13130 .map(|s| &mut s.multisampled_render_to_single_sampled)] 13131 .into_iter() 13132 .flatten() 13133 .next() 13134 { 13135 *f = features.multisampled_render_to_single_sampled as ash::vk::Bool32; 13136 } 13137 if let Some(f) = [ 13138 self.features_vulkan11.as_mut().map(|s| &mut s.multiview), 13139 self.features_multiview.as_mut().map(|s| &mut s.multiview), 13140 ] 13141 .into_iter() 13142 .flatten() 13143 .next() 13144 { 13145 *f = features.multiview as ash::vk::Bool32; 13146 } 13147 if let Some(f) = [ 13148 self.features_vulkan11 13149 .as_mut() 13150 .map(|s| &mut s.multiview_geometry_shader), 13151 self.features_multiview 13152 .as_mut() 13153 .map(|s| &mut s.multiview_geometry_shader), 13154 ] 13155 .into_iter() 13156 .flatten() 13157 .next() 13158 { 13159 *f = features.multiview_geometry_shader as ash::vk::Bool32; 13160 } 13161 if let Some(f) = [self 13162 .features_mesh_shader_ext 13163 .as_mut() 13164 .map(|s| &mut s.multiview_mesh_shader)] 13165 .into_iter() 13166 .flatten() 13167 .next() 13168 { 13169 *f = features.multiview_mesh_shader as ash::vk::Bool32; 13170 } 13171 if let Some(f) = [self 13172 .features_multiview_per_view_viewports_qcom 13173 .as_mut() 13174 .map(|s| &mut s.multiview_per_view_viewports)] 13175 .into_iter() 13176 .flatten() 13177 .next() 13178 { 13179 *f = features.multiview_per_view_viewports as ash::vk::Bool32; 13180 } 13181 if let Some(f) = [ 13182 self.features_vulkan11 13183 .as_mut() 13184 .map(|s| &mut s.multiview_tessellation_shader), 13185 self.features_multiview 13186 .as_mut() 13187 .map(|s| &mut s.multiview_tessellation_shader), 13188 ] 13189 .into_iter() 13190 .flatten() 13191 .next() 13192 { 13193 *f = features.multiview_tessellation_shader as ash::vk::Bool32; 13194 } 13195 if let Some(f) = [self 13196 .features_portability_subset_khr 13197 .as_mut() 13198 .map(|s| &mut s.mutable_comparison_samplers)] 13199 .into_iter() 13200 .flatten() 13201 .next() 13202 { 13203 *f = features.mutable_comparison_samplers as ash::vk::Bool32; 13204 } 13205 if let Some(f) = [self 13206 .features_mutable_descriptor_type_ext 13207 .as_mut() 13208 .map(|s| &mut s.mutable_descriptor_type)] 13209 .into_iter() 13210 .flatten() 13211 .next() 13212 { 13213 *f = features.mutable_descriptor_type as ash::vk::Bool32; 13214 } 13215 if let Some(f) = [self 13216 .features_fragment_shading_rate_enums_nv 13217 .as_mut() 13218 .map(|s| &mut s.no_invocation_fragment_shading_rates)] 13219 .into_iter() 13220 .flatten() 13221 .next() 13222 { 13223 *f = features.no_invocation_fragment_shading_rates as ash::vk::Bool32; 13224 } 13225 if let Some(f) = [self 13226 .features_non_seamless_cube_map_ext 13227 .as_mut() 13228 .map(|s| &mut s.non_seamless_cube_map)] 13229 .into_iter() 13230 .flatten() 13231 .next() 13232 { 13233 *f = features.non_seamless_cube_map as ash::vk::Bool32; 13234 } 13235 if let Some(f) = [self 13236 .features_robustness2_ext 13237 .as_mut() 13238 .map(|s| &mut s.null_descriptor)] 13239 .into_iter() 13240 .flatten() 13241 .next() 13242 { 13243 *f = features.null_descriptor as ash::vk::Bool32; 13244 } 13245 if let Some(f) = [&mut self.features_vulkan10.features.occlusion_query_precise] 13246 .into_iter() 13247 .next() 13248 { 13249 *f = features.occlusion_query_precise as ash::vk::Bool32; 13250 } 13251 if let Some(f) = [self 13252 .features_optical_flow_nv 13253 .as_mut() 13254 .map(|s| &mut s.optical_flow)] 13255 .into_iter() 13256 .flatten() 13257 .next() 13258 { 13259 *f = features.optical_flow as ash::vk::Bool32; 13260 } 13261 if let Some(f) = [self 13262 .features_pageable_device_local_memory_ext 13263 .as_mut() 13264 .map(|s| &mut s.pageable_device_local_memory)] 13265 .into_iter() 13266 .flatten() 13267 .next() 13268 { 13269 *f = features.pageable_device_local_memory as ash::vk::Bool32; 13270 } 13271 if let Some(f) = [self 13272 .features_performance_query_khr 13273 .as_mut() 13274 .map(|s| &mut s.performance_counter_multiple_query_pools)] 13275 .into_iter() 13276 .flatten() 13277 .next() 13278 { 13279 *f = features.performance_counter_multiple_query_pools as ash::vk::Bool32; 13280 } 13281 if let Some(f) = [self 13282 .features_performance_query_khr 13283 .as_mut() 13284 .map(|s| &mut s.performance_counter_query_pools)] 13285 .into_iter() 13286 .flatten() 13287 .next() 13288 { 13289 *f = features.performance_counter_query_pools as ash::vk::Bool32; 13290 } 13291 if let Some(f) = [ 13292 self.features_vulkan13 13293 .as_mut() 13294 .map(|s| &mut s.pipeline_creation_cache_control), 13295 self.features_pipeline_creation_cache_control 13296 .as_mut() 13297 .map(|s| &mut s.pipeline_creation_cache_control), 13298 ] 13299 .into_iter() 13300 .flatten() 13301 .next() 13302 { 13303 *f = features.pipeline_creation_cache_control as ash::vk::Bool32; 13304 } 13305 if let Some(f) = [self 13306 .features_pipeline_executable_properties_khr 13307 .as_mut() 13308 .map(|s| &mut s.pipeline_executable_info)] 13309 .into_iter() 13310 .flatten() 13311 .next() 13312 { 13313 *f = features.pipeline_executable_info as ash::vk::Bool32; 13314 } 13315 if let Some(f) = [self 13316 .features_fragment_shading_rate_khr 13317 .as_mut() 13318 .map(|s| &mut s.pipeline_fragment_shading_rate)] 13319 .into_iter() 13320 .flatten() 13321 .next() 13322 { 13323 *f = features.pipeline_fragment_shading_rate as ash::vk::Bool32; 13324 } 13325 if let Some(f) = [self 13326 .features_pipeline_properties_ext 13327 .as_mut() 13328 .map(|s| &mut s.pipeline_properties_identifier)] 13329 .into_iter() 13330 .flatten() 13331 .next() 13332 { 13333 *f = features.pipeline_properties_identifier as ash::vk::Bool32; 13334 } 13335 if let Some(f) = [self 13336 .features_pipeline_protected_access_ext 13337 .as_mut() 13338 .map(|s| &mut s.pipeline_protected_access)] 13339 .into_iter() 13340 .flatten() 13341 .next() 13342 { 13343 *f = features.pipeline_protected_access as ash::vk::Bool32; 13344 } 13345 if let Some(f) = [self 13346 .features_pipeline_robustness_ext 13347 .as_mut() 13348 .map(|s| &mut s.pipeline_robustness)] 13349 .into_iter() 13350 .flatten() 13351 .next() 13352 { 13353 *f = features.pipeline_robustness as ash::vk::Bool32; 13354 } 13355 if let Some(f) = [&mut self.features_vulkan10.features.pipeline_statistics_query] 13356 .into_iter() 13357 .next() 13358 { 13359 *f = features.pipeline_statistics_query as ash::vk::Bool32; 13360 } 13361 if let Some(f) = [self 13362 .features_portability_subset_khr 13363 .as_mut() 13364 .map(|s| &mut s.point_polygons)] 13365 .into_iter() 13366 .flatten() 13367 .next() 13368 { 13369 *f = features.point_polygons as ash::vk::Bool32; 13370 } 13371 if let Some(f) = [self 13372 .features_present_barrier_nv 13373 .as_mut() 13374 .map(|s| &mut s.present_barrier)] 13375 .into_iter() 13376 .flatten() 13377 .next() 13378 { 13379 *f = features.present_barrier as ash::vk::Bool32; 13380 } 13381 if let Some(f) = [self 13382 .features_present_id_khr 13383 .as_mut() 13384 .map(|s| &mut s.present_id)] 13385 .into_iter() 13386 .flatten() 13387 .next() 13388 { 13389 *f = features.present_id as ash::vk::Bool32; 13390 } 13391 if let Some(f) = [self 13392 .features_present_wait_khr 13393 .as_mut() 13394 .map(|s| &mut s.present_wait)] 13395 .into_iter() 13396 .flatten() 13397 .next() 13398 { 13399 *f = features.present_wait as ash::vk::Bool32; 13400 } 13401 if let Some(f) = [self 13402 .features_fragment_shading_rate_khr 13403 .as_mut() 13404 .map(|s| &mut s.primitive_fragment_shading_rate)] 13405 .into_iter() 13406 .flatten() 13407 .next() 13408 { 13409 *f = features.primitive_fragment_shading_rate as ash::vk::Bool32; 13410 } 13411 if let Some(f) = [self 13412 .features_mesh_shader_ext 13413 .as_mut() 13414 .map(|s| &mut s.primitive_fragment_shading_rate_mesh_shader)] 13415 .into_iter() 13416 .flatten() 13417 .next() 13418 { 13419 *f = features.primitive_fragment_shading_rate_mesh_shader as ash::vk::Bool32; 13420 } 13421 if let Some(f) = [self 13422 .features_primitive_topology_list_restart_ext 13423 .as_mut() 13424 .map(|s| &mut s.primitive_topology_list_restart)] 13425 .into_iter() 13426 .flatten() 13427 .next() 13428 { 13429 *f = features.primitive_topology_list_restart as ash::vk::Bool32; 13430 } 13431 if let Some(f) = [self 13432 .features_primitive_topology_list_restart_ext 13433 .as_mut() 13434 .map(|s| &mut s.primitive_topology_patch_list_restart)] 13435 .into_iter() 13436 .flatten() 13437 .next() 13438 { 13439 *f = features.primitive_topology_patch_list_restart as ash::vk::Bool32; 13440 } 13441 if let Some(f) = [self 13442 .features_primitives_generated_query_ext 13443 .as_mut() 13444 .map(|s| &mut s.primitives_generated_query)] 13445 .into_iter() 13446 .flatten() 13447 .next() 13448 { 13449 *f = features.primitives_generated_query as ash::vk::Bool32; 13450 } 13451 if let Some(f) = [self 13452 .features_primitives_generated_query_ext 13453 .as_mut() 13454 .map(|s| &mut s.primitives_generated_query_with_non_zero_streams)] 13455 .into_iter() 13456 .flatten() 13457 .next() 13458 { 13459 *f = features.primitives_generated_query_with_non_zero_streams as ash::vk::Bool32; 13460 } 13461 if let Some(f) = [self 13462 .features_primitives_generated_query_ext 13463 .as_mut() 13464 .map(|s| &mut s.primitives_generated_query_with_rasterizer_discard)] 13465 .into_iter() 13466 .flatten() 13467 .next() 13468 { 13469 *f = features.primitives_generated_query_with_rasterizer_discard as ash::vk::Bool32; 13470 } 13471 if let Some(f) = [ 13472 self.features_vulkan13.as_mut().map(|s| &mut s.private_data), 13473 self.features_private_data 13474 .as_mut() 13475 .map(|s| &mut s.private_data), 13476 ] 13477 .into_iter() 13478 .flatten() 13479 .next() 13480 { 13481 *f = features.private_data as ash::vk::Bool32; 13482 } 13483 if let Some(f) = [ 13484 self.features_vulkan11 13485 .as_mut() 13486 .map(|s| &mut s.protected_memory), 13487 self.features_protected_memory 13488 .as_mut() 13489 .map(|s| &mut s.protected_memory), 13490 ] 13491 .into_iter() 13492 .flatten() 13493 .next() 13494 { 13495 *f = features.protected_memory as ash::vk::Bool32; 13496 } 13497 if let Some(f) = [self 13498 .features_provoking_vertex_ext 13499 .as_mut() 13500 .map(|s| &mut s.provoking_vertex_last)] 13501 .into_iter() 13502 .flatten() 13503 .next() 13504 { 13505 *f = features.provoking_vertex_last as ash::vk::Bool32; 13506 } 13507 if let Some(f) = [self 13508 .features_rasterization_order_attachment_access_ext 13509 .as_mut() 13510 .map(|s| &mut s.rasterization_order_color_attachment_access)] 13511 .into_iter() 13512 .flatten() 13513 .next() 13514 { 13515 *f = features.rasterization_order_color_attachment_access as ash::vk::Bool32; 13516 } 13517 if let Some(f) = [self 13518 .features_rasterization_order_attachment_access_ext 13519 .as_mut() 13520 .map(|s| &mut s.rasterization_order_depth_attachment_access)] 13521 .into_iter() 13522 .flatten() 13523 .next() 13524 { 13525 *f = features.rasterization_order_depth_attachment_access as ash::vk::Bool32; 13526 } 13527 if let Some(f) = [self 13528 .features_rasterization_order_attachment_access_ext 13529 .as_mut() 13530 .map(|s| &mut s.rasterization_order_stencil_attachment_access)] 13531 .into_iter() 13532 .flatten() 13533 .next() 13534 { 13535 *f = features.rasterization_order_stencil_attachment_access as ash::vk::Bool32; 13536 } 13537 if let Some(f) = [self 13538 .features_ray_query_khr 13539 .as_mut() 13540 .map(|s| &mut s.ray_query)] 13541 .into_iter() 13542 .flatten() 13543 .next() 13544 { 13545 *f = features.ray_query as ash::vk::Bool32; 13546 } 13547 if let Some(f) = [self 13548 .features_ray_tracing_invocation_reorder_nv 13549 .as_mut() 13550 .map(|s| &mut s.ray_tracing_invocation_reorder)] 13551 .into_iter() 13552 .flatten() 13553 .next() 13554 { 13555 *f = features.ray_tracing_invocation_reorder as ash::vk::Bool32; 13556 } 13557 if let Some(f) = [self 13558 .features_ray_tracing_maintenance1_khr 13559 .as_mut() 13560 .map(|s| &mut s.ray_tracing_maintenance1)] 13561 .into_iter() 13562 .flatten() 13563 .next() 13564 { 13565 *f = features.ray_tracing_maintenance1 as ash::vk::Bool32; 13566 } 13567 if let Some(f) = [self 13568 .features_ray_tracing_motion_blur_nv 13569 .as_mut() 13570 .map(|s| &mut s.ray_tracing_motion_blur)] 13571 .into_iter() 13572 .flatten() 13573 .next() 13574 { 13575 *f = features.ray_tracing_motion_blur as ash::vk::Bool32; 13576 } 13577 if let Some(f) = [self 13578 .features_ray_tracing_motion_blur_nv 13579 .as_mut() 13580 .map(|s| &mut s.ray_tracing_motion_blur_pipeline_trace_rays_indirect)] 13581 .into_iter() 13582 .flatten() 13583 .next() 13584 { 13585 *f = features.ray_tracing_motion_blur_pipeline_trace_rays_indirect as ash::vk::Bool32; 13586 } 13587 if let Some(f) = [self 13588 .features_ray_tracing_pipeline_khr 13589 .as_mut() 13590 .map(|s| &mut s.ray_tracing_pipeline)] 13591 .into_iter() 13592 .flatten() 13593 .next() 13594 { 13595 *f = features.ray_tracing_pipeline as ash::vk::Bool32; 13596 } 13597 if let Some(f) = [self 13598 .features_ray_tracing_pipeline_khr 13599 .as_mut() 13600 .map(|s| &mut s.ray_tracing_pipeline_shader_group_handle_capture_replay)] 13601 .into_iter() 13602 .flatten() 13603 .next() 13604 { 13605 *f = 13606 features.ray_tracing_pipeline_shader_group_handle_capture_replay as ash::vk::Bool32; 13607 } 13608 if let Some(f) = [self 13609 .features_ray_tracing_pipeline_khr 13610 .as_mut() 13611 .map(|s| &mut s.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed)] 13612 .into_iter() 13613 .flatten() 13614 .next() 13615 { 13616 *f = features.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed 13617 as ash::vk::Bool32; 13618 } 13619 if let Some(f) = [self 13620 .features_ray_tracing_pipeline_khr 13621 .as_mut() 13622 .map(|s| &mut s.ray_tracing_pipeline_trace_rays_indirect)] 13623 .into_iter() 13624 .flatten() 13625 .next() 13626 { 13627 *f = features.ray_tracing_pipeline_trace_rays_indirect as ash::vk::Bool32; 13628 } 13629 if let Some(f) = [self 13630 .features_ray_tracing_maintenance1_khr 13631 .as_mut() 13632 .map(|s| &mut s.ray_tracing_pipeline_trace_rays_indirect2)] 13633 .into_iter() 13634 .flatten() 13635 .next() 13636 { 13637 *f = features.ray_tracing_pipeline_trace_rays_indirect2 as ash::vk::Bool32; 13638 } 13639 if let Some(f) = [self 13640 .features_ray_tracing_pipeline_khr 13641 .as_mut() 13642 .map(|s| &mut s.ray_traversal_primitive_culling)] 13643 .into_iter() 13644 .flatten() 13645 .next() 13646 { 13647 *f = features.ray_traversal_primitive_culling as ash::vk::Bool32; 13648 } 13649 if let Some(f) = [self 13650 .features_line_rasterization_ext 13651 .as_mut() 13652 .map(|s| &mut s.rectangular_lines)] 13653 .into_iter() 13654 .flatten() 13655 .next() 13656 { 13657 *f = features.rectangular_lines as ash::vk::Bool32; 13658 } 13659 if let Some(f) = [self 13660 .features_address_binding_report_ext 13661 .as_mut() 13662 .map(|s| &mut s.report_address_binding)] 13663 .into_iter() 13664 .flatten() 13665 .next() 13666 { 13667 *f = features.report_address_binding as ash::vk::Bool32; 13668 } 13669 if let Some(f) = [self 13670 .features_representative_fragment_test_nv 13671 .as_mut() 13672 .map(|s| &mut s.representative_fragment_test)] 13673 .into_iter() 13674 .flatten() 13675 .next() 13676 { 13677 *f = features.representative_fragment_test as ash::vk::Bool32; 13678 } 13679 if let Some(f) = [&mut self.features_vulkan10.features.robust_buffer_access] 13680 .into_iter() 13681 .next() 13682 { 13683 *f = features.robust_buffer_access as ash::vk::Bool32; 13684 } 13685 if let Some(f) = [self 13686 .features_robustness2_ext 13687 .as_mut() 13688 .map(|s| &mut s.robust_buffer_access2)] 13689 .into_iter() 13690 .flatten() 13691 .next() 13692 { 13693 *f = features.robust_buffer_access2 as ash::vk::Bool32; 13694 } 13695 if let Some(f) = [ 13696 self.features_vulkan13 13697 .as_mut() 13698 .map(|s| &mut s.robust_image_access), 13699 self.features_image_robustness 13700 .as_mut() 13701 .map(|s| &mut s.robust_image_access), 13702 ] 13703 .into_iter() 13704 .flatten() 13705 .next() 13706 { 13707 *f = features.robust_image_access as ash::vk::Bool32; 13708 } 13709 if let Some(f) = [self 13710 .features_robustness2_ext 13711 .as_mut() 13712 .map(|s| &mut s.robust_image_access2)] 13713 .into_iter() 13714 .flatten() 13715 .next() 13716 { 13717 *f = features.robust_image_access2 as ash::vk::Bool32; 13718 } 13719 if let Some(f) = [ 13720 self.features_vulkan12 13721 .as_mut() 13722 .map(|s| &mut s.runtime_descriptor_array), 13723 self.features_descriptor_indexing 13724 .as_mut() 13725 .map(|s| &mut s.runtime_descriptor_array), 13726 ] 13727 .into_iter() 13728 .flatten() 13729 .next() 13730 { 13731 *f = features.runtime_descriptor_array as ash::vk::Bool32; 13732 } 13733 if let Some(f) = [&mut self.features_vulkan10.features.sample_rate_shading] 13734 .into_iter() 13735 .next() 13736 { 13737 *f = features.sample_rate_shading as ash::vk::Bool32; 13738 } 13739 if let Some(f) = [self 13740 .features_image2_d_view_of3_d_ext 13741 .as_mut() 13742 .map(|s| &mut s.sampler2_d_view_of3_d)] 13743 .into_iter() 13744 .flatten() 13745 .next() 13746 { 13747 *f = features.sampler2_d_view_of3_d as ash::vk::Bool32; 13748 } 13749 if let Some(f) = [&mut self.features_vulkan10.features.sampler_anisotropy] 13750 .into_iter() 13751 .next() 13752 { 13753 *f = features.sampler_anisotropy as ash::vk::Bool32; 13754 } 13755 if let Some(f) = [self 13756 .features_vulkan12 13757 .as_mut() 13758 .map(|s| &mut s.sampler_filter_minmax)] 13759 .into_iter() 13760 .flatten() 13761 .next() 13762 { 13763 *f = features.sampler_filter_minmax as ash::vk::Bool32; 13764 } 13765 if let Some(f) = [self 13766 .features_portability_subset_khr 13767 .as_mut() 13768 .map(|s| &mut s.sampler_mip_lod_bias)] 13769 .into_iter() 13770 .flatten() 13771 .next() 13772 { 13773 *f = features.sampler_mip_lod_bias as ash::vk::Bool32; 13774 } 13775 if let Some(f) = [self 13776 .features_vulkan12 13777 .as_mut() 13778 .map(|s| &mut s.sampler_mirror_clamp_to_edge)] 13779 .into_iter() 13780 .flatten() 13781 .next() 13782 { 13783 *f = features.sampler_mirror_clamp_to_edge as ash::vk::Bool32; 13784 } 13785 if let Some(f) = [ 13786 self.features_vulkan11 13787 .as_mut() 13788 .map(|s| &mut s.sampler_ycbcr_conversion), 13789 self.features_sampler_ycbcr_conversion 13790 .as_mut() 13791 .map(|s| &mut s.sampler_ycbcr_conversion), 13792 ] 13793 .into_iter() 13794 .flatten() 13795 .next() 13796 { 13797 *f = features.sampler_ycbcr_conversion as ash::vk::Bool32; 13798 } 13799 if let Some(f) = [ 13800 self.features_vulkan12 13801 .as_mut() 13802 .map(|s| &mut s.scalar_block_layout), 13803 self.features_scalar_block_layout 13804 .as_mut() 13805 .map(|s| &mut s.scalar_block_layout), 13806 ] 13807 .into_iter() 13808 .flatten() 13809 .next() 13810 { 13811 *f = features.scalar_block_layout as ash::vk::Bool32; 13812 } 13813 if let Some(f) = [ 13814 self.features_vulkan12 13815 .as_mut() 13816 .map(|s| &mut s.separate_depth_stencil_layouts), 13817 self.features_separate_depth_stencil_layouts 13818 .as_mut() 13819 .map(|s| &mut s.separate_depth_stencil_layouts), 13820 ] 13821 .into_iter() 13822 .flatten() 13823 .next() 13824 { 13825 *f = features.separate_depth_stencil_layouts as ash::vk::Bool32; 13826 } 13827 if let Some(f) = [self 13828 .features_portability_subset_khr 13829 .as_mut() 13830 .map(|s| &mut s.separate_stencil_mask_ref)] 13831 .into_iter() 13832 .flatten() 13833 .next() 13834 { 13835 *f = features.separate_stencil_mask_ref as ash::vk::Bool32; 13836 } 13837 if let Some(f) = [self 13838 .features_shader_atomic_float2_ext 13839 .as_mut() 13840 .map(|s| &mut s.shader_buffer_float16_atomic_add)] 13841 .into_iter() 13842 .flatten() 13843 .next() 13844 { 13845 *f = features.shader_buffer_float16_atomic_add as ash::vk::Bool32; 13846 } 13847 if let Some(f) = [self 13848 .features_shader_atomic_float2_ext 13849 .as_mut() 13850 .map(|s| &mut s.shader_buffer_float16_atomic_min_max)] 13851 .into_iter() 13852 .flatten() 13853 .next() 13854 { 13855 *f = features.shader_buffer_float16_atomic_min_max as ash::vk::Bool32; 13856 } 13857 if let Some(f) = [self 13858 .features_shader_atomic_float2_ext 13859 .as_mut() 13860 .map(|s| &mut s.shader_buffer_float16_atomics)] 13861 .into_iter() 13862 .flatten() 13863 .next() 13864 { 13865 *f = features.shader_buffer_float16_atomics as ash::vk::Bool32; 13866 } 13867 if let Some(f) = [self 13868 .features_shader_atomic_float_ext 13869 .as_mut() 13870 .map(|s| &mut s.shader_buffer_float32_atomic_add)] 13871 .into_iter() 13872 .flatten() 13873 .next() 13874 { 13875 *f = features.shader_buffer_float32_atomic_add as ash::vk::Bool32; 13876 } 13877 if let Some(f) = [self 13878 .features_shader_atomic_float2_ext 13879 .as_mut() 13880 .map(|s| &mut s.shader_buffer_float32_atomic_min_max)] 13881 .into_iter() 13882 .flatten() 13883 .next() 13884 { 13885 *f = features.shader_buffer_float32_atomic_min_max as ash::vk::Bool32; 13886 } 13887 if let Some(f) = [self 13888 .features_shader_atomic_float_ext 13889 .as_mut() 13890 .map(|s| &mut s.shader_buffer_float32_atomics)] 13891 .into_iter() 13892 .flatten() 13893 .next() 13894 { 13895 *f = features.shader_buffer_float32_atomics as ash::vk::Bool32; 13896 } 13897 if let Some(f) = [self 13898 .features_shader_atomic_float_ext 13899 .as_mut() 13900 .map(|s| &mut s.shader_buffer_float64_atomic_add)] 13901 .into_iter() 13902 .flatten() 13903 .next() 13904 { 13905 *f = features.shader_buffer_float64_atomic_add as ash::vk::Bool32; 13906 } 13907 if let Some(f) = [self 13908 .features_shader_atomic_float2_ext 13909 .as_mut() 13910 .map(|s| &mut s.shader_buffer_float64_atomic_min_max)] 13911 .into_iter() 13912 .flatten() 13913 .next() 13914 { 13915 *f = features.shader_buffer_float64_atomic_min_max as ash::vk::Bool32; 13916 } 13917 if let Some(f) = [self 13918 .features_shader_atomic_float_ext 13919 .as_mut() 13920 .map(|s| &mut s.shader_buffer_float64_atomics)] 13921 .into_iter() 13922 .flatten() 13923 .next() 13924 { 13925 *f = features.shader_buffer_float64_atomics as ash::vk::Bool32; 13926 } 13927 if let Some(f) = [ 13928 self.features_vulkan12 13929 .as_mut() 13930 .map(|s| &mut s.shader_buffer_int64_atomics), 13931 self.features_shader_atomic_int64 13932 .as_mut() 13933 .map(|s| &mut s.shader_buffer_int64_atomics), 13934 ] 13935 .into_iter() 13936 .flatten() 13937 .next() 13938 { 13939 *f = features.shader_buffer_int64_atomics as ash::vk::Bool32; 13940 } 13941 if let Some(f) = [&mut self.features_vulkan10.features.shader_clip_distance] 13942 .into_iter() 13943 .next() 13944 { 13945 *f = features.shader_clip_distance as ash::vk::Bool32; 13946 } 13947 if let Some(f) = [self 13948 .features_shader_core_builtins_arm 13949 .as_mut() 13950 .map(|s| &mut s.shader_core_builtins)] 13951 .into_iter() 13952 .flatten() 13953 .next() 13954 { 13955 *f = features.shader_core_builtins as ash::vk::Bool32; 13956 } 13957 if let Some(f) = [&mut self.features_vulkan10.features.shader_cull_distance] 13958 .into_iter() 13959 .next() 13960 { 13961 *f = features.shader_cull_distance as ash::vk::Bool32; 13962 } 13963 if let Some(f) = [ 13964 self.features_vulkan13 13965 .as_mut() 13966 .map(|s| &mut s.shader_demote_to_helper_invocation), 13967 self.features_shader_demote_to_helper_invocation 13968 .as_mut() 13969 .map(|s| &mut s.shader_demote_to_helper_invocation), 13970 ] 13971 .into_iter() 13972 .flatten() 13973 .next() 13974 { 13975 *f = features.shader_demote_to_helper_invocation as ash::vk::Bool32; 13976 } 13977 if let Some(f) = [self 13978 .features_shader_clock_khr 13979 .as_mut() 13980 .map(|s| &mut s.shader_device_clock)] 13981 .into_iter() 13982 .flatten() 13983 .next() 13984 { 13985 *f = features.shader_device_clock as ash::vk::Bool32; 13986 } 13987 if let Some(f) = [ 13988 self.features_vulkan11 13989 .as_mut() 13990 .map(|s| &mut s.shader_draw_parameters), 13991 self.features_shader_draw_parameters 13992 .as_mut() 13993 .map(|s| &mut s.shader_draw_parameters), 13994 ] 13995 .into_iter() 13996 .flatten() 13997 .next() 13998 { 13999 *f = features.shader_draw_parameters as ash::vk::Bool32; 14000 } 14001 if let Some(f) = [self 14002 .features_shader_early_and_late_fragment_tests_amd 14003 .as_mut() 14004 .map(|s| &mut s.shader_early_and_late_fragment_tests)] 14005 .into_iter() 14006 .flatten() 14007 .next() 14008 { 14009 *f = features.shader_early_and_late_fragment_tests as ash::vk::Bool32; 14010 } 14011 if let Some(f) = [ 14012 self.features_vulkan12 14013 .as_mut() 14014 .map(|s| &mut s.shader_float16), 14015 self.features_shader_float16_int8 14016 .as_mut() 14017 .map(|s| &mut s.shader_float16), 14018 ] 14019 .into_iter() 14020 .flatten() 14021 .next() 14022 { 14023 *f = features.shader_float16 as ash::vk::Bool32; 14024 } 14025 if let Some(f) = [&mut self.features_vulkan10.features.shader_float64] 14026 .into_iter() 14027 .next() 14028 { 14029 *f = features.shader_float64 as ash::vk::Bool32; 14030 } 14031 if let Some(f) = [self 14032 .features_shader_atomic_float_ext 14033 .as_mut() 14034 .map(|s| &mut s.shader_image_float32_atomic_add)] 14035 .into_iter() 14036 .flatten() 14037 .next() 14038 { 14039 *f = features.shader_image_float32_atomic_add as ash::vk::Bool32; 14040 } 14041 if let Some(f) = [self 14042 .features_shader_atomic_float2_ext 14043 .as_mut() 14044 .map(|s| &mut s.shader_image_float32_atomic_min_max)] 14045 .into_iter() 14046 .flatten() 14047 .next() 14048 { 14049 *f = features.shader_image_float32_atomic_min_max as ash::vk::Bool32; 14050 } 14051 if let Some(f) = [self 14052 .features_shader_atomic_float_ext 14053 .as_mut() 14054 .map(|s| &mut s.shader_image_float32_atomics)] 14055 .into_iter() 14056 .flatten() 14057 .next() 14058 { 14059 *f = features.shader_image_float32_atomics as ash::vk::Bool32; 14060 } 14061 if let Some(f) = [&mut self.features_vulkan10.features.shader_image_gather_extended] 14062 .into_iter() 14063 .next() 14064 { 14065 *f = features.shader_image_gather_extended as ash::vk::Bool32; 14066 } 14067 if let Some(f) = [self 14068 .features_shader_image_atomic_int64_ext 14069 .as_mut() 14070 .map(|s| &mut s.shader_image_int64_atomics)] 14071 .into_iter() 14072 .flatten() 14073 .next() 14074 { 14075 *f = features.shader_image_int64_atomics as ash::vk::Bool32; 14076 } 14077 if let Some(f) = [ 14078 self.features_vulkan12 14079 .as_mut() 14080 .map(|s| &mut s.shader_input_attachment_array_dynamic_indexing), 14081 self.features_descriptor_indexing 14082 .as_mut() 14083 .map(|s| &mut s.shader_input_attachment_array_dynamic_indexing), 14084 ] 14085 .into_iter() 14086 .flatten() 14087 .next() 14088 { 14089 *f = features.shader_input_attachment_array_dynamic_indexing as ash::vk::Bool32; 14090 } 14091 if let Some(f) = [ 14092 self.features_vulkan12 14093 .as_mut() 14094 .map(|s| &mut s.shader_input_attachment_array_non_uniform_indexing), 14095 self.features_descriptor_indexing 14096 .as_mut() 14097 .map(|s| &mut s.shader_input_attachment_array_non_uniform_indexing), 14098 ] 14099 .into_iter() 14100 .flatten() 14101 .next() 14102 { 14103 *f = features.shader_input_attachment_array_non_uniform_indexing as ash::vk::Bool32; 14104 } 14105 if let Some(f) = [&mut self.features_vulkan10.features.shader_int16] 14106 .into_iter() 14107 .next() 14108 { 14109 *f = features.shader_int16 as ash::vk::Bool32; 14110 } 14111 if let Some(f) = [&mut self.features_vulkan10.features.shader_int64] 14112 .into_iter() 14113 .next() 14114 { 14115 *f = features.shader_int64 as ash::vk::Bool32; 14116 } 14117 if let Some(f) = [ 14118 self.features_vulkan12.as_mut().map(|s| &mut s.shader_int8), 14119 self.features_shader_float16_int8 14120 .as_mut() 14121 .map(|s| &mut s.shader_int8), 14122 ] 14123 .into_iter() 14124 .flatten() 14125 .next() 14126 { 14127 *f = features.shader_int8 as ash::vk::Bool32; 14128 } 14129 if let Some(f) = [ 14130 self.features_vulkan13 14131 .as_mut() 14132 .map(|s| &mut s.shader_integer_dot_product), 14133 self.features_shader_integer_dot_product 14134 .as_mut() 14135 .map(|s| &mut s.shader_integer_dot_product), 14136 ] 14137 .into_iter() 14138 .flatten() 14139 .next() 14140 { 14141 *f = features.shader_integer_dot_product as ash::vk::Bool32; 14142 } 14143 if let Some(f) = [self 14144 .features_shader_integer_functions2_intel 14145 .as_mut() 14146 .map(|s| &mut s.shader_integer_functions2)] 14147 .into_iter() 14148 .flatten() 14149 .next() 14150 { 14151 *f = features.shader_integer_functions2 as ash::vk::Bool32; 14152 } 14153 if let Some(f) = [self 14154 .features_shader_module_identifier_ext 14155 .as_mut() 14156 .map(|s| &mut s.shader_module_identifier)] 14157 .into_iter() 14158 .flatten() 14159 .next() 14160 { 14161 *f = features.shader_module_identifier as ash::vk::Bool32; 14162 } 14163 if let Some(f) = [self 14164 .features_vulkan12 14165 .as_mut() 14166 .map(|s| &mut s.shader_output_layer)] 14167 .into_iter() 14168 .flatten() 14169 .next() 14170 { 14171 *f = features.shader_output_layer as ash::vk::Bool32; 14172 } 14173 if let Some(f) = [self 14174 .features_vulkan12 14175 .as_mut() 14176 .map(|s| &mut s.shader_output_viewport_index)] 14177 .into_iter() 14178 .flatten() 14179 .next() 14180 { 14181 *f = features.shader_output_viewport_index as ash::vk::Bool32; 14182 } 14183 if let Some(f) = [&mut self.features_vulkan10.features.shader_resource_min_lod] 14184 .into_iter() 14185 .next() 14186 { 14187 *f = features.shader_resource_min_lod as ash::vk::Bool32; 14188 } 14189 if let Some(f) = [&mut self.features_vulkan10.features.shader_resource_residency] 14190 .into_iter() 14191 .next() 14192 { 14193 *f = features.shader_resource_residency as ash::vk::Bool32; 14194 } 14195 if let Some(f) = [self 14196 .features_portability_subset_khr 14197 .as_mut() 14198 .map(|s| &mut s.shader_sample_rate_interpolation_functions)] 14199 .into_iter() 14200 .flatten() 14201 .next() 14202 { 14203 *f = features.shader_sample_rate_interpolation_functions as ash::vk::Bool32; 14204 } 14205 if let Some(f) = [&mut self 14206 .features_vulkan10 14207 .features 14208 .shader_sampled_image_array_dynamic_indexing] 14209 .into_iter() 14210 .next() 14211 { 14212 *f = features.shader_sampled_image_array_dynamic_indexing as ash::vk::Bool32; 14213 } 14214 if let Some(f) = [ 14215 self.features_vulkan12 14216 .as_mut() 14217 .map(|s| &mut s.shader_sampled_image_array_non_uniform_indexing), 14218 self.features_descriptor_indexing 14219 .as_mut() 14220 .map(|s| &mut s.shader_sampled_image_array_non_uniform_indexing), 14221 ] 14222 .into_iter() 14223 .flatten() 14224 .next() 14225 { 14226 *f = features.shader_sampled_image_array_non_uniform_indexing as ash::vk::Bool32; 14227 } 14228 if let Some(f) = [self 14229 .features_shader_atomic_float2_ext 14230 .as_mut() 14231 .map(|s| &mut s.shader_shared_float16_atomic_add)] 14232 .into_iter() 14233 .flatten() 14234 .next() 14235 { 14236 *f = features.shader_shared_float16_atomic_add as ash::vk::Bool32; 14237 } 14238 if let Some(f) = [self 14239 .features_shader_atomic_float2_ext 14240 .as_mut() 14241 .map(|s| &mut s.shader_shared_float16_atomic_min_max)] 14242 .into_iter() 14243 .flatten() 14244 .next() 14245 { 14246 *f = features.shader_shared_float16_atomic_min_max as ash::vk::Bool32; 14247 } 14248 if let Some(f) = [self 14249 .features_shader_atomic_float2_ext 14250 .as_mut() 14251 .map(|s| &mut s.shader_shared_float16_atomics)] 14252 .into_iter() 14253 .flatten() 14254 .next() 14255 { 14256 *f = features.shader_shared_float16_atomics as ash::vk::Bool32; 14257 } 14258 if let Some(f) = [self 14259 .features_shader_atomic_float_ext 14260 .as_mut() 14261 .map(|s| &mut s.shader_shared_float32_atomic_add)] 14262 .into_iter() 14263 .flatten() 14264 .next() 14265 { 14266 *f = features.shader_shared_float32_atomic_add as ash::vk::Bool32; 14267 } 14268 if let Some(f) = [self 14269 .features_shader_atomic_float2_ext 14270 .as_mut() 14271 .map(|s| &mut s.shader_shared_float32_atomic_min_max)] 14272 .into_iter() 14273 .flatten() 14274 .next() 14275 { 14276 *f = features.shader_shared_float32_atomic_min_max as ash::vk::Bool32; 14277 } 14278 if let Some(f) = [self 14279 .features_shader_atomic_float_ext 14280 .as_mut() 14281 .map(|s| &mut s.shader_shared_float32_atomics)] 14282 .into_iter() 14283 .flatten() 14284 .next() 14285 { 14286 *f = features.shader_shared_float32_atomics as ash::vk::Bool32; 14287 } 14288 if let Some(f) = [self 14289 .features_shader_atomic_float_ext 14290 .as_mut() 14291 .map(|s| &mut s.shader_shared_float64_atomic_add)] 14292 .into_iter() 14293 .flatten() 14294 .next() 14295 { 14296 *f = features.shader_shared_float64_atomic_add as ash::vk::Bool32; 14297 } 14298 if let Some(f) = [self 14299 .features_shader_atomic_float2_ext 14300 .as_mut() 14301 .map(|s| &mut s.shader_shared_float64_atomic_min_max)] 14302 .into_iter() 14303 .flatten() 14304 .next() 14305 { 14306 *f = features.shader_shared_float64_atomic_min_max as ash::vk::Bool32; 14307 } 14308 if let Some(f) = [self 14309 .features_shader_atomic_float_ext 14310 .as_mut() 14311 .map(|s| &mut s.shader_shared_float64_atomics)] 14312 .into_iter() 14313 .flatten() 14314 .next() 14315 { 14316 *f = features.shader_shared_float64_atomics as ash::vk::Bool32; 14317 } 14318 if let Some(f) = [ 14319 self.features_vulkan12 14320 .as_mut() 14321 .map(|s| &mut s.shader_shared_int64_atomics), 14322 self.features_shader_atomic_int64 14323 .as_mut() 14324 .map(|s| &mut s.shader_shared_int64_atomics), 14325 ] 14326 .into_iter() 14327 .flatten() 14328 .next() 14329 { 14330 *f = features.shader_shared_int64_atomics as ash::vk::Bool32; 14331 } 14332 if let Some(f) = [self 14333 .features_shader_sm_builtins_nv 14334 .as_mut() 14335 .map(|s| &mut s.shader_sm_builtins)] 14336 .into_iter() 14337 .flatten() 14338 .next() 14339 { 14340 *f = features.shader_sm_builtins as ash::vk::Bool32; 14341 } 14342 if let Some(f) = [&mut self 14343 .features_vulkan10 14344 .features 14345 .shader_storage_buffer_array_dynamic_indexing] 14346 .into_iter() 14347 .next() 14348 { 14349 *f = features.shader_storage_buffer_array_dynamic_indexing as ash::vk::Bool32; 14350 } 14351 if let Some(f) = [ 14352 self.features_vulkan12 14353 .as_mut() 14354 .map(|s| &mut s.shader_storage_buffer_array_non_uniform_indexing), 14355 self.features_descriptor_indexing 14356 .as_mut() 14357 .map(|s| &mut s.shader_storage_buffer_array_non_uniform_indexing), 14358 ] 14359 .into_iter() 14360 .flatten() 14361 .next() 14362 { 14363 *f = features.shader_storage_buffer_array_non_uniform_indexing as ash::vk::Bool32; 14364 } 14365 if let Some(f) = [&mut self 14366 .features_vulkan10 14367 .features 14368 .shader_storage_image_array_dynamic_indexing] 14369 .into_iter() 14370 .next() 14371 { 14372 *f = features.shader_storage_image_array_dynamic_indexing as ash::vk::Bool32; 14373 } 14374 if let Some(f) = [ 14375 self.features_vulkan12 14376 .as_mut() 14377 .map(|s| &mut s.shader_storage_image_array_non_uniform_indexing), 14378 self.features_descriptor_indexing 14379 .as_mut() 14380 .map(|s| &mut s.shader_storage_image_array_non_uniform_indexing), 14381 ] 14382 .into_iter() 14383 .flatten() 14384 .next() 14385 { 14386 *f = features.shader_storage_image_array_non_uniform_indexing as ash::vk::Bool32; 14387 } 14388 if let Some(f) = [&mut self 14389 .features_vulkan10 14390 .features 14391 .shader_storage_image_extended_formats] 14392 .into_iter() 14393 .next() 14394 { 14395 *f = features.shader_storage_image_extended_formats as ash::vk::Bool32; 14396 } 14397 if let Some(f) = [&mut self 14398 .features_vulkan10 14399 .features 14400 .shader_storage_image_multisample] 14401 .into_iter() 14402 .next() 14403 { 14404 *f = features.shader_storage_image_multisample as ash::vk::Bool32; 14405 } 14406 if let Some(f) = [&mut self 14407 .features_vulkan10 14408 .features 14409 .shader_storage_image_read_without_format] 14410 .into_iter() 14411 .next() 14412 { 14413 *f = features.shader_storage_image_read_without_format as ash::vk::Bool32; 14414 } 14415 if let Some(f) = [&mut self 14416 .features_vulkan10 14417 .features 14418 .shader_storage_image_write_without_format] 14419 .into_iter() 14420 .next() 14421 { 14422 *f = features.shader_storage_image_write_without_format as ash::vk::Bool32; 14423 } 14424 if let Some(f) = [ 14425 self.features_vulkan12 14426 .as_mut() 14427 .map(|s| &mut s.shader_storage_texel_buffer_array_dynamic_indexing), 14428 self.features_descriptor_indexing 14429 .as_mut() 14430 .map(|s| &mut s.shader_storage_texel_buffer_array_dynamic_indexing), 14431 ] 14432 .into_iter() 14433 .flatten() 14434 .next() 14435 { 14436 *f = features.shader_storage_texel_buffer_array_dynamic_indexing as ash::vk::Bool32; 14437 } 14438 if let Some(f) = [ 14439 self.features_vulkan12 14440 .as_mut() 14441 .map(|s| &mut s.shader_storage_texel_buffer_array_non_uniform_indexing), 14442 self.features_descriptor_indexing 14443 .as_mut() 14444 .map(|s| &mut s.shader_storage_texel_buffer_array_non_uniform_indexing), 14445 ] 14446 .into_iter() 14447 .flatten() 14448 .next() 14449 { 14450 *f = features.shader_storage_texel_buffer_array_non_uniform_indexing as ash::vk::Bool32; 14451 } 14452 if let Some(f) = [self 14453 .features_shader_clock_khr 14454 .as_mut() 14455 .map(|s| &mut s.shader_subgroup_clock)] 14456 .into_iter() 14457 .flatten() 14458 .next() 14459 { 14460 *f = features.shader_subgroup_clock as ash::vk::Bool32; 14461 } 14462 if let Some(f) = [ 14463 self.features_vulkan12 14464 .as_mut() 14465 .map(|s| &mut s.shader_subgroup_extended_types), 14466 self.features_shader_subgroup_extended_types 14467 .as_mut() 14468 .map(|s| &mut s.shader_subgroup_extended_types), 14469 ] 14470 .into_iter() 14471 .flatten() 14472 .next() 14473 { 14474 *f = features.shader_subgroup_extended_types as ash::vk::Bool32; 14475 } 14476 if let Some(f) = [self 14477 .features_shader_subgroup_uniform_control_flow_khr 14478 .as_mut() 14479 .map(|s| &mut s.shader_subgroup_uniform_control_flow)] 14480 .into_iter() 14481 .flatten() 14482 .next() 14483 { 14484 *f = features.shader_subgroup_uniform_control_flow as ash::vk::Bool32; 14485 } 14486 if let Some(f) = [ 14487 self.features_vulkan13 14488 .as_mut() 14489 .map(|s| &mut s.shader_terminate_invocation), 14490 self.features_shader_terminate_invocation 14491 .as_mut() 14492 .map(|s| &mut s.shader_terminate_invocation), 14493 ] 14494 .into_iter() 14495 .flatten() 14496 .next() 14497 { 14498 *f = features.shader_terminate_invocation as ash::vk::Bool32; 14499 } 14500 if let Some(f) = [&mut self 14501 .features_vulkan10 14502 .features 14503 .shader_tessellation_and_geometry_point_size] 14504 .into_iter() 14505 .next() 14506 { 14507 *f = features.shader_tessellation_and_geometry_point_size as ash::vk::Bool32; 14508 } 14509 if let Some(f) = [&mut self 14510 .features_vulkan10 14511 .features 14512 .shader_uniform_buffer_array_dynamic_indexing] 14513 .into_iter() 14514 .next() 14515 { 14516 *f = features.shader_uniform_buffer_array_dynamic_indexing as ash::vk::Bool32; 14517 } 14518 if let Some(f) = [ 14519 self.features_vulkan12 14520 .as_mut() 14521 .map(|s| &mut s.shader_uniform_buffer_array_non_uniform_indexing), 14522 self.features_descriptor_indexing 14523 .as_mut() 14524 .map(|s| &mut s.shader_uniform_buffer_array_non_uniform_indexing), 14525 ] 14526 .into_iter() 14527 .flatten() 14528 .next() 14529 { 14530 *f = features.shader_uniform_buffer_array_non_uniform_indexing as ash::vk::Bool32; 14531 } 14532 if let Some(f) = [ 14533 self.features_vulkan12 14534 .as_mut() 14535 .map(|s| &mut s.shader_uniform_texel_buffer_array_dynamic_indexing), 14536 self.features_descriptor_indexing 14537 .as_mut() 14538 .map(|s| &mut s.shader_uniform_texel_buffer_array_dynamic_indexing), 14539 ] 14540 .into_iter() 14541 .flatten() 14542 .next() 14543 { 14544 *f = features.shader_uniform_texel_buffer_array_dynamic_indexing as ash::vk::Bool32; 14545 } 14546 if let Some(f) = [ 14547 self.features_vulkan12 14548 .as_mut() 14549 .map(|s| &mut s.shader_uniform_texel_buffer_array_non_uniform_indexing), 14550 self.features_descriptor_indexing 14551 .as_mut() 14552 .map(|s| &mut s.shader_uniform_texel_buffer_array_non_uniform_indexing), 14553 ] 14554 .into_iter() 14555 .flatten() 14556 .next() 14557 { 14558 *f = features.shader_uniform_texel_buffer_array_non_uniform_indexing as ash::vk::Bool32; 14559 } 14560 if let Some(f) = [ 14561 self.features_vulkan13 14562 .as_mut() 14563 .map(|s| &mut s.shader_zero_initialize_workgroup_memory), 14564 self.features_zero_initialize_workgroup_memory 14565 .as_mut() 14566 .map(|s| &mut s.shader_zero_initialize_workgroup_memory), 14567 ] 14568 .into_iter() 14569 .flatten() 14570 .next() 14571 { 14572 *f = features.shader_zero_initialize_workgroup_memory as ash::vk::Bool32; 14573 } 14574 if let Some(f) = [self 14575 .features_shading_rate_image_nv 14576 .as_mut() 14577 .map(|s| &mut s.shading_rate_coarse_sample_order)] 14578 .into_iter() 14579 .flatten() 14580 .next() 14581 { 14582 *f = features.shading_rate_coarse_sample_order as ash::vk::Bool32; 14583 } 14584 if let Some(f) = [self 14585 .features_shading_rate_image_nv 14586 .as_mut() 14587 .map(|s| &mut s.shading_rate_image)] 14588 .into_iter() 14589 .flatten() 14590 .next() 14591 { 14592 *f = features.shading_rate_image as ash::vk::Bool32; 14593 } 14594 if let Some(f) = [self 14595 .features_line_rasterization_ext 14596 .as_mut() 14597 .map(|s| &mut s.smooth_lines)] 14598 .into_iter() 14599 .flatten() 14600 .next() 14601 { 14602 *f = features.smooth_lines as ash::vk::Bool32; 14603 } 14604 if let Some(f) = [&mut self.features_vulkan10.features.sparse_binding] 14605 .into_iter() 14606 .next() 14607 { 14608 *f = features.sparse_binding as ash::vk::Bool32; 14609 } 14610 if let Some(f) = [self 14611 .features_shader_atomic_float_ext 14612 .as_mut() 14613 .map(|s| &mut s.sparse_image_float32_atomic_add)] 14614 .into_iter() 14615 .flatten() 14616 .next() 14617 { 14618 *f = features.sparse_image_float32_atomic_add as ash::vk::Bool32; 14619 } 14620 if let Some(f) = [self 14621 .features_shader_atomic_float2_ext 14622 .as_mut() 14623 .map(|s| &mut s.sparse_image_float32_atomic_min_max)] 14624 .into_iter() 14625 .flatten() 14626 .next() 14627 { 14628 *f = features.sparse_image_float32_atomic_min_max as ash::vk::Bool32; 14629 } 14630 if let Some(f) = [self 14631 .features_shader_atomic_float_ext 14632 .as_mut() 14633 .map(|s| &mut s.sparse_image_float32_atomics)] 14634 .into_iter() 14635 .flatten() 14636 .next() 14637 { 14638 *f = features.sparse_image_float32_atomics as ash::vk::Bool32; 14639 } 14640 if let Some(f) = [self 14641 .features_shader_image_atomic_int64_ext 14642 .as_mut() 14643 .map(|s| &mut s.sparse_image_int64_atomics)] 14644 .into_iter() 14645 .flatten() 14646 .next() 14647 { 14648 *f = features.sparse_image_int64_atomics as ash::vk::Bool32; 14649 } 14650 if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency16_samples] 14651 .into_iter() 14652 .next() 14653 { 14654 *f = features.sparse_residency16_samples as ash::vk::Bool32; 14655 } 14656 if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency2_samples] 14657 .into_iter() 14658 .next() 14659 { 14660 *f = features.sparse_residency2_samples as ash::vk::Bool32; 14661 } 14662 if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency4_samples] 14663 .into_iter() 14664 .next() 14665 { 14666 *f = features.sparse_residency4_samples as ash::vk::Bool32; 14667 } 14668 if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency8_samples] 14669 .into_iter() 14670 .next() 14671 { 14672 *f = features.sparse_residency8_samples as ash::vk::Bool32; 14673 } 14674 if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency_aliased] 14675 .into_iter() 14676 .next() 14677 { 14678 *f = features.sparse_residency_aliased as ash::vk::Bool32; 14679 } 14680 if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency_buffer] 14681 .into_iter() 14682 .next() 14683 { 14684 *f = features.sparse_residency_buffer as ash::vk::Bool32; 14685 } 14686 if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency_image2_d] 14687 .into_iter() 14688 .next() 14689 { 14690 *f = features.sparse_residency_image2_d as ash::vk::Bool32; 14691 } 14692 if let Some(f) = [&mut self.features_vulkan10.features.sparse_residency_image3_d] 14693 .into_iter() 14694 .next() 14695 { 14696 *f = features.sparse_residency_image3_d as ash::vk::Bool32; 14697 } 14698 if let Some(f) = [self 14699 .features_line_rasterization_ext 14700 .as_mut() 14701 .map(|s| &mut s.stippled_bresenham_lines)] 14702 .into_iter() 14703 .flatten() 14704 .next() 14705 { 14706 *f = features.stippled_bresenham_lines as ash::vk::Bool32; 14707 } 14708 if let Some(f) = [self 14709 .features_line_rasterization_ext 14710 .as_mut() 14711 .map(|s| &mut s.stippled_rectangular_lines)] 14712 .into_iter() 14713 .flatten() 14714 .next() 14715 { 14716 *f = features.stippled_rectangular_lines as ash::vk::Bool32; 14717 } 14718 if let Some(f) = [self 14719 .features_line_rasterization_ext 14720 .as_mut() 14721 .map(|s| &mut s.stippled_smooth_lines)] 14722 .into_iter() 14723 .flatten() 14724 .next() 14725 { 14726 *f = features.stippled_smooth_lines as ash::vk::Bool32; 14727 } 14728 if let Some(f) = [ 14729 self.features_vulkan11 14730 .as_mut() 14731 .map(|s| &mut s.storage_buffer16_bit_access), 14732 self.features_16bit_storage 14733 .as_mut() 14734 .map(|s| &mut s.storage_buffer16_bit_access), 14735 ] 14736 .into_iter() 14737 .flatten() 14738 .next() 14739 { 14740 *f = features.storage_buffer16_bit_access as ash::vk::Bool32; 14741 } 14742 if let Some(f) = [ 14743 self.features_vulkan12 14744 .as_mut() 14745 .map(|s| &mut s.storage_buffer8_bit_access), 14746 self.features_8bit_storage 14747 .as_mut() 14748 .map(|s| &mut s.storage_buffer8_bit_access), 14749 ] 14750 .into_iter() 14751 .flatten() 14752 .next() 14753 { 14754 *f = features.storage_buffer8_bit_access as ash::vk::Bool32; 14755 } 14756 if let Some(f) = [ 14757 self.features_vulkan11 14758 .as_mut() 14759 .map(|s| &mut s.storage_input_output16), 14760 self.features_16bit_storage 14761 .as_mut() 14762 .map(|s| &mut s.storage_input_output16), 14763 ] 14764 .into_iter() 14765 .flatten() 14766 .next() 14767 { 14768 *f = features.storage_input_output16 as ash::vk::Bool32; 14769 } 14770 if let Some(f) = [ 14771 self.features_vulkan11 14772 .as_mut() 14773 .map(|s| &mut s.storage_push_constant16), 14774 self.features_16bit_storage 14775 .as_mut() 14776 .map(|s| &mut s.storage_push_constant16), 14777 ] 14778 .into_iter() 14779 .flatten() 14780 .next() 14781 { 14782 *f = features.storage_push_constant16 as ash::vk::Bool32; 14783 } 14784 if let Some(f) = [ 14785 self.features_vulkan12 14786 .as_mut() 14787 .map(|s| &mut s.storage_push_constant8), 14788 self.features_8bit_storage 14789 .as_mut() 14790 .map(|s| &mut s.storage_push_constant8), 14791 ] 14792 .into_iter() 14793 .flatten() 14794 .next() 14795 { 14796 *f = features.storage_push_constant8 as ash::vk::Bool32; 14797 } 14798 if let Some(f) = [self 14799 .features_vulkan12 14800 .as_mut() 14801 .map(|s| &mut s.subgroup_broadcast_dynamic_id)] 14802 .into_iter() 14803 .flatten() 14804 .next() 14805 { 14806 *f = features.subgroup_broadcast_dynamic_id as ash::vk::Bool32; 14807 } 14808 if let Some(f) = [ 14809 self.features_vulkan13 14810 .as_mut() 14811 .map(|s| &mut s.subgroup_size_control), 14812 self.features_subgroup_size_control 14813 .as_mut() 14814 .map(|s| &mut s.subgroup_size_control), 14815 ] 14816 .into_iter() 14817 .flatten() 14818 .next() 14819 { 14820 *f = features.subgroup_size_control as ash::vk::Bool32; 14821 } 14822 if let Some(f) = [self 14823 .features_subpass_merge_feedback_ext 14824 .as_mut() 14825 .map(|s| &mut s.subpass_merge_feedback)] 14826 .into_iter() 14827 .flatten() 14828 .next() 14829 { 14830 *f = features.subpass_merge_feedback as ash::vk::Bool32; 14831 } 14832 if let Some(f) = [self 14833 .features_subpass_shading_huawei 14834 .as_mut() 14835 .map(|s| &mut s.subpass_shading)] 14836 .into_iter() 14837 .flatten() 14838 .next() 14839 { 14840 *f = features.subpass_shading as ash::vk::Bool32; 14841 } 14842 if let Some(f) = [self 14843 .features_fragment_shading_rate_enums_nv 14844 .as_mut() 14845 .map(|s| &mut s.supersample_fragment_shading_rates)] 14846 .into_iter() 14847 .flatten() 14848 .next() 14849 { 14850 *f = features.supersample_fragment_shading_rates as ash::vk::Bool32; 14851 } 14852 if let Some(f) = [self 14853 .features_swapchain_maintenance1_ext 14854 .as_mut() 14855 .map(|s| &mut s.swapchain_maintenance1)] 14856 .into_iter() 14857 .flatten() 14858 .next() 14859 { 14860 *f = features.swapchain_maintenance1 as ash::vk::Bool32; 14861 } 14862 if let Some(f) = [ 14863 self.features_vulkan13 14864 .as_mut() 14865 .map(|s| &mut s.synchronization2), 14866 self.features_synchronization2 14867 .as_mut() 14868 .map(|s| &mut s.synchronization2), 14869 ] 14870 .into_iter() 14871 .flatten() 14872 .next() 14873 { 14874 *f = features.synchronization2 as ash::vk::Bool32; 14875 } 14876 if let Some(f) = [ 14877 self.features_mesh_shader_ext 14878 .as_mut() 14879 .map(|s| &mut s.task_shader), 14880 self.features_mesh_shader_nv 14881 .as_mut() 14882 .map(|s| &mut s.task_shader), 14883 ] 14884 .into_iter() 14885 .flatten() 14886 .next() 14887 { 14888 *f = features.task_shader as ash::vk::Bool32; 14889 } 14890 if let Some(f) = [self 14891 .features_portability_subset_khr 14892 .as_mut() 14893 .map(|s| &mut s.tessellation_isolines)] 14894 .into_iter() 14895 .flatten() 14896 .next() 14897 { 14898 *f = features.tessellation_isolines as ash::vk::Bool32; 14899 } 14900 if let Some(f) = [self 14901 .features_portability_subset_khr 14902 .as_mut() 14903 .map(|s| &mut s.tessellation_point_mode)] 14904 .into_iter() 14905 .flatten() 14906 .next() 14907 { 14908 *f = features.tessellation_point_mode as ash::vk::Bool32; 14909 } 14910 if let Some(f) = [&mut self.features_vulkan10.features.tessellation_shader] 14911 .into_iter() 14912 .next() 14913 { 14914 *f = features.tessellation_shader as ash::vk::Bool32; 14915 } 14916 if let Some(f) = [self 14917 .features_texel_buffer_alignment_ext 14918 .as_mut() 14919 .map(|s| &mut s.texel_buffer_alignment)] 14920 .into_iter() 14921 .flatten() 14922 .next() 14923 { 14924 *f = features.texel_buffer_alignment as ash::vk::Bool32; 14925 } 14926 if let Some(f) = [self 14927 .features_image_processing_qcom 14928 .as_mut() 14929 .map(|s| &mut s.texture_block_match)] 14930 .into_iter() 14931 .flatten() 14932 .next() 14933 { 14934 *f = features.texture_block_match as ash::vk::Bool32; 14935 } 14936 if let Some(f) = [self 14937 .features_image_processing_qcom 14938 .as_mut() 14939 .map(|s| &mut s.texture_box_filter)] 14940 .into_iter() 14941 .flatten() 14942 .next() 14943 { 14944 *f = features.texture_box_filter as ash::vk::Bool32; 14945 } 14946 if let Some(f) = [ 14947 self.features_vulkan13 14948 .as_mut() 14949 .map(|s| &mut s.texture_compression_astc_hdr), 14950 self.features_texture_compression_astchdr 14951 .as_mut() 14952 .map(|s| &mut s.texture_compression_astc_hdr), 14953 ] 14954 .into_iter() 14955 .flatten() 14956 .next() 14957 { 14958 *f = features.texture_compression_astc_hdr as ash::vk::Bool32; 14959 } 14960 if let Some(f) = [&mut self.features_vulkan10.features.texture_compression_astc_ldr] 14961 .into_iter() 14962 .next() 14963 { 14964 *f = features.texture_compression_astc_ldr as ash::vk::Bool32; 14965 } 14966 if let Some(f) = [&mut self.features_vulkan10.features.texture_compression_bc] 14967 .into_iter() 14968 .next() 14969 { 14970 *f = features.texture_compression_bc as ash::vk::Bool32; 14971 } 14972 if let Some(f) = [&mut self.features_vulkan10.features.texture_compression_etc2] 14973 .into_iter() 14974 .next() 14975 { 14976 *f = features.texture_compression_etc2 as ash::vk::Bool32; 14977 } 14978 if let Some(f) = [self 14979 .features_image_processing_qcom 14980 .as_mut() 14981 .map(|s| &mut s.texture_sample_weighted)] 14982 .into_iter() 14983 .flatten() 14984 .next() 14985 { 14986 *f = features.texture_sample_weighted as ash::vk::Bool32; 14987 } 14988 if let Some(f) = [self 14989 .features_tile_properties_qcom 14990 .as_mut() 14991 .map(|s| &mut s.tile_properties)] 14992 .into_iter() 14993 .flatten() 14994 .next() 14995 { 14996 *f = features.tile_properties as ash::vk::Bool32; 14997 } 14998 if let Some(f) = [ 14999 self.features_vulkan12 15000 .as_mut() 15001 .map(|s| &mut s.timeline_semaphore), 15002 self.features_timeline_semaphore 15003 .as_mut() 15004 .map(|s| &mut s.timeline_semaphore), 15005 ] 15006 .into_iter() 15007 .flatten() 15008 .next() 15009 { 15010 *f = features.timeline_semaphore as ash::vk::Bool32; 15011 } 15012 if let Some(f) = [self 15013 .features_transform_feedback_ext 15014 .as_mut() 15015 .map(|s| &mut s.transform_feedback)] 15016 .into_iter() 15017 .flatten() 15018 .next() 15019 { 15020 *f = features.transform_feedback as ash::vk::Bool32; 15021 } 15022 if let Some(f) = [self 15023 .features_provoking_vertex_ext 15024 .as_mut() 15025 .map(|s| &mut s.transform_feedback_preserves_provoking_vertex)] 15026 .into_iter() 15027 .flatten() 15028 .next() 15029 { 15030 *f = features.transform_feedback_preserves_provoking_vertex as ash::vk::Bool32; 15031 } 15032 if let Some(f) = [self 15033 .features_portability_subset_khr 15034 .as_mut() 15035 .map(|s| &mut s.triangle_fans)] 15036 .into_iter() 15037 .flatten() 15038 .next() 15039 { 15040 *f = features.triangle_fans as ash::vk::Bool32; 15041 } 15042 if let Some(f) = [ 15043 self.features_vulkan11 15044 .as_mut() 15045 .map(|s| &mut s.uniform_and_storage_buffer16_bit_access), 15046 self.features_16bit_storage 15047 .as_mut() 15048 .map(|s| &mut s.uniform_and_storage_buffer16_bit_access), 15049 ] 15050 .into_iter() 15051 .flatten() 15052 .next() 15053 { 15054 *f = features.uniform_and_storage_buffer16_bit_access as ash::vk::Bool32; 15055 } 15056 if let Some(f) = [ 15057 self.features_vulkan12 15058 .as_mut() 15059 .map(|s| &mut s.uniform_and_storage_buffer8_bit_access), 15060 self.features_8bit_storage 15061 .as_mut() 15062 .map(|s| &mut s.uniform_and_storage_buffer8_bit_access), 15063 ] 15064 .into_iter() 15065 .flatten() 15066 .next() 15067 { 15068 *f = features.uniform_and_storage_buffer8_bit_access as ash::vk::Bool32; 15069 } 15070 if let Some(f) = [ 15071 self.features_vulkan12 15072 .as_mut() 15073 .map(|s| &mut s.uniform_buffer_standard_layout), 15074 self.features_uniform_buffer_standard_layout 15075 .as_mut() 15076 .map(|s| &mut s.uniform_buffer_standard_layout), 15077 ] 15078 .into_iter() 15079 .flatten() 15080 .next() 15081 { 15082 *f = features.uniform_buffer_standard_layout as ash::vk::Bool32; 15083 } 15084 if let Some(f) = [&mut self.features_vulkan10.features.variable_multisample_rate] 15085 .into_iter() 15086 .next() 15087 { 15088 *f = features.variable_multisample_rate as ash::vk::Bool32; 15089 } 15090 if let Some(f) = [ 15091 self.features_vulkan11 15092 .as_mut() 15093 .map(|s| &mut s.variable_pointers), 15094 self.features_variable_pointers 15095 .as_mut() 15096 .map(|s| &mut s.variable_pointers), 15097 ] 15098 .into_iter() 15099 .flatten() 15100 .next() 15101 { 15102 *f = features.variable_pointers as ash::vk::Bool32; 15103 } 15104 if let Some(f) = [ 15105 self.features_vulkan11 15106 .as_mut() 15107 .map(|s| &mut s.variable_pointers_storage_buffer), 15108 self.features_variable_pointers 15109 .as_mut() 15110 .map(|s| &mut s.variable_pointers_storage_buffer), 15111 ] 15112 .into_iter() 15113 .flatten() 15114 .next() 15115 { 15116 *f = features.variable_pointers_storage_buffer as ash::vk::Bool32; 15117 } 15118 if let Some(f) = [self 15119 .features_portability_subset_khr 15120 .as_mut() 15121 .map(|s| &mut s.vertex_attribute_access_beyond_stride)] 15122 .into_iter() 15123 .flatten() 15124 .next() 15125 { 15126 *f = features.vertex_attribute_access_beyond_stride as ash::vk::Bool32; 15127 } 15128 if let Some(f) = [self 15129 .features_vertex_attribute_divisor_ext 15130 .as_mut() 15131 .map(|s| &mut s.vertex_attribute_instance_rate_divisor)] 15132 .into_iter() 15133 .flatten() 15134 .next() 15135 { 15136 *f = features.vertex_attribute_instance_rate_divisor as ash::vk::Bool32; 15137 } 15138 if let Some(f) = [self 15139 .features_vertex_attribute_divisor_ext 15140 .as_mut() 15141 .map(|s| &mut s.vertex_attribute_instance_rate_zero_divisor)] 15142 .into_iter() 15143 .flatten() 15144 .next() 15145 { 15146 *f = features.vertex_attribute_instance_rate_zero_divisor as ash::vk::Bool32; 15147 } 15148 if let Some(f) = [self 15149 .features_vertex_input_dynamic_state_ext 15150 .as_mut() 15151 .map(|s| &mut s.vertex_input_dynamic_state)] 15152 .into_iter() 15153 .flatten() 15154 .next() 15155 { 15156 *f = features.vertex_input_dynamic_state as ash::vk::Bool32; 15157 } 15158 if let Some(f) = [&mut self 15159 .features_vulkan10 15160 .features 15161 .vertex_pipeline_stores_and_atomics] 15162 .into_iter() 15163 .next() 15164 { 15165 *f = features.vertex_pipeline_stores_and_atomics as ash::vk::Bool32; 15166 } 15167 if let Some(f) = [ 15168 self.features_vulkan12 15169 .as_mut() 15170 .map(|s| &mut s.vulkan_memory_model), 15171 self.features_vulkan_memory_model 15172 .as_mut() 15173 .map(|s| &mut s.vulkan_memory_model), 15174 ] 15175 .into_iter() 15176 .flatten() 15177 .next() 15178 { 15179 *f = features.vulkan_memory_model as ash::vk::Bool32; 15180 } 15181 if let Some(f) = [ 15182 self.features_vulkan12 15183 .as_mut() 15184 .map(|s| &mut s.vulkan_memory_model_availability_visibility_chains), 15185 self.features_vulkan_memory_model 15186 .as_mut() 15187 .map(|s| &mut s.vulkan_memory_model_availability_visibility_chains), 15188 ] 15189 .into_iter() 15190 .flatten() 15191 .next() 15192 { 15193 *f = features.vulkan_memory_model_availability_visibility_chains as ash::vk::Bool32; 15194 } 15195 if let Some(f) = [ 15196 self.features_vulkan12 15197 .as_mut() 15198 .map(|s| &mut s.vulkan_memory_model_device_scope), 15199 self.features_vulkan_memory_model 15200 .as_mut() 15201 .map(|s| &mut s.vulkan_memory_model_device_scope), 15202 ] 15203 .into_iter() 15204 .flatten() 15205 .next() 15206 { 15207 *f = features.vulkan_memory_model_device_scope as ash::vk::Bool32; 15208 } 15209 if let Some(f) = [&mut self.features_vulkan10.features.wide_lines] 15210 .into_iter() 15211 .next() 15212 { 15213 *f = features.wide_lines as ash::vk::Bool32; 15214 } 15215 if let Some(f) = [self 15216 .features_workgroup_memory_explicit_layout_khr 15217 .as_mut() 15218 .map(|s| &mut s.workgroup_memory_explicit_layout)] 15219 .into_iter() 15220 .flatten() 15221 .next() 15222 { 15223 *f = features.workgroup_memory_explicit_layout as ash::vk::Bool32; 15224 } 15225 if let Some(f) = [self 15226 .features_workgroup_memory_explicit_layout_khr 15227 .as_mut() 15228 .map(|s| &mut s.workgroup_memory_explicit_layout16_bit_access)] 15229 .into_iter() 15230 .flatten() 15231 .next() 15232 { 15233 *f = features.workgroup_memory_explicit_layout16_bit_access as ash::vk::Bool32; 15234 } 15235 if let Some(f) = [self 15236 .features_workgroup_memory_explicit_layout_khr 15237 .as_mut() 15238 .map(|s| &mut s.workgroup_memory_explicit_layout8_bit_access)] 15239 .into_iter() 15240 .flatten() 15241 .next() 15242 { 15243 *f = features.workgroup_memory_explicit_layout8_bit_access as ash::vk::Bool32; 15244 } 15245 if let Some(f) = [self 15246 .features_workgroup_memory_explicit_layout_khr 15247 .as_mut() 15248 .map(|s| &mut s.workgroup_memory_explicit_layout_scalar_block_layout)] 15249 .into_iter() 15250 .flatten() 15251 .next() 15252 { 15253 *f = features.workgroup_memory_explicit_layout_scalar_block_layout as ash::vk::Bool32; 15254 } 15255 if let Some(f) = [self 15256 .features_ycbcr2_plane444_formats_ext 15257 .as_mut() 15258 .map(|s| &mut s.ycbcr2plane444_formats)] 15259 .into_iter() 15260 .flatten() 15261 .next() 15262 { 15263 *f = features.ycbcr2plane444_formats as ash::vk::Bool32; 15264 } 15265 if let Some(f) = [self 15266 .features_ycbcr_image_arrays_ext 15267 .as_mut() 15268 .map(|s| &mut s.ycbcr_image_arrays)] 15269 .into_iter() 15270 .flatten() 15271 .next() 15272 { 15273 *f = features.ycbcr_image_arrays as ash::vk::Bool32; 15274 } 15275 } 15276 } 15277 impl From<&FeaturesFfi> for Features { from(features_ffi: &FeaturesFfi) -> Self15278 fn from(features_ffi: &FeaturesFfi) -> Self { 15279 Features { 15280 acceleration_structure: [features_ffi 15281 .features_acceleration_structure_khr 15282 .map(|s| s.acceleration_structure)] 15283 .into_iter() 15284 .flatten() 15285 .next() 15286 .unwrap_or(0) 15287 != 0, 15288 acceleration_structure_capture_replay: [features_ffi 15289 .features_acceleration_structure_khr 15290 .map(|s| s.acceleration_structure_capture_replay)] 15291 .into_iter() 15292 .flatten() 15293 .next() 15294 .unwrap_or(0) 15295 != 0, 15296 acceleration_structure_host_commands: [features_ffi 15297 .features_acceleration_structure_khr 15298 .map(|s| s.acceleration_structure_host_commands)] 15299 .into_iter() 15300 .flatten() 15301 .next() 15302 .unwrap_or(0) 15303 != 0, 15304 acceleration_structure_indirect_build: [features_ffi 15305 .features_acceleration_structure_khr 15306 .map(|s| s.acceleration_structure_indirect_build)] 15307 .into_iter() 15308 .flatten() 15309 .next() 15310 .unwrap_or(0) 15311 != 0, 15312 advanced_blend_coherent_operations: [features_ffi 15313 .features_blend_operation_advanced_ext 15314 .map(|s| s.advanced_blend_coherent_operations)] 15315 .into_iter() 15316 .flatten() 15317 .next() 15318 .unwrap_or(0) 15319 != 0, 15320 alpha_to_one: [features_ffi.features_vulkan10.features.alpha_to_one] 15321 .into_iter() 15322 .next() 15323 .unwrap_or(0) 15324 != 0, 15325 amigo_profiling: [features_ffi 15326 .features_amigo_profiling_sec 15327 .map(|s| s.amigo_profiling)] 15328 .into_iter() 15329 .flatten() 15330 .next() 15331 .unwrap_or(0) 15332 != 0, 15333 attachment_feedback_loop_layout: [features_ffi 15334 .features_attachment_feedback_loop_layout_ext 15335 .map(|s| s.attachment_feedback_loop_layout)] 15336 .into_iter() 15337 .flatten() 15338 .next() 15339 .unwrap_or(0) 15340 != 0, 15341 attachment_fragment_shading_rate: [features_ffi 15342 .features_fragment_shading_rate_khr 15343 .map(|s| s.attachment_fragment_shading_rate)] 15344 .into_iter() 15345 .flatten() 15346 .next() 15347 .unwrap_or(0) 15348 != 0, 15349 border_color_swizzle: [features_ffi 15350 .features_border_color_swizzle_ext 15351 .map(|s| s.border_color_swizzle)] 15352 .into_iter() 15353 .flatten() 15354 .next() 15355 .unwrap_or(0) 15356 != 0, 15357 border_color_swizzle_from_image: [features_ffi 15358 .features_border_color_swizzle_ext 15359 .map(|s| s.border_color_swizzle_from_image)] 15360 .into_iter() 15361 .flatten() 15362 .next() 15363 .unwrap_or(0) 15364 != 0, 15365 bresenham_lines: [features_ffi 15366 .features_line_rasterization_ext 15367 .map(|s| s.bresenham_lines)] 15368 .into_iter() 15369 .flatten() 15370 .next() 15371 .unwrap_or(0) 15372 != 0, 15373 buffer_device_address: [ 15374 features_ffi 15375 .features_vulkan12 15376 .map(|s| s.buffer_device_address), 15377 features_ffi 15378 .features_buffer_device_address 15379 .map(|s| s.buffer_device_address), 15380 features_ffi 15381 .features_buffer_device_address_ext 15382 .map(|s| s.buffer_device_address), 15383 ] 15384 .into_iter() 15385 .flatten() 15386 .next() 15387 .unwrap_or(0) 15388 != 0, 15389 buffer_device_address_capture_replay: [ 15390 features_ffi 15391 .features_vulkan12 15392 .map(|s| s.buffer_device_address_capture_replay), 15393 features_ffi 15394 .features_buffer_device_address 15395 .map(|s| s.buffer_device_address_capture_replay), 15396 features_ffi 15397 .features_buffer_device_address_ext 15398 .map(|s| s.buffer_device_address_capture_replay), 15399 ] 15400 .into_iter() 15401 .flatten() 15402 .next() 15403 .unwrap_or(0) 15404 != 0, 15405 buffer_device_address_multi_device: [ 15406 features_ffi 15407 .features_vulkan12 15408 .map(|s| s.buffer_device_address_multi_device), 15409 features_ffi 15410 .features_buffer_device_address 15411 .map(|s| s.buffer_device_address_multi_device), 15412 features_ffi 15413 .features_buffer_device_address_ext 15414 .map(|s| s.buffer_device_address_multi_device), 15415 ] 15416 .into_iter() 15417 .flatten() 15418 .next() 15419 .unwrap_or(0) 15420 != 0, 15421 color_write_enable: [features_ffi 15422 .features_color_write_enable_ext 15423 .map(|s| s.color_write_enable)] 15424 .into_iter() 15425 .flatten() 15426 .next() 15427 .unwrap_or(0) 15428 != 0, 15429 compute_derivative_group_linear: [features_ffi 15430 .features_compute_shader_derivatives_nv 15431 .map(|s| s.compute_derivative_group_linear)] 15432 .into_iter() 15433 .flatten() 15434 .next() 15435 .unwrap_or(0) 15436 != 0, 15437 compute_derivative_group_quads: [features_ffi 15438 .features_compute_shader_derivatives_nv 15439 .map(|s| s.compute_derivative_group_quads)] 15440 .into_iter() 15441 .flatten() 15442 .next() 15443 .unwrap_or(0) 15444 != 0, 15445 compute_full_subgroups: [ 15446 features_ffi 15447 .features_vulkan13 15448 .map(|s| s.compute_full_subgroups), 15449 features_ffi 15450 .features_subgroup_size_control 15451 .map(|s| s.compute_full_subgroups), 15452 ] 15453 .into_iter() 15454 .flatten() 15455 .next() 15456 .unwrap_or(0) 15457 != 0, 15458 conditional_rendering: [features_ffi 15459 .features_conditional_rendering_ext 15460 .map(|s| s.conditional_rendering)] 15461 .into_iter() 15462 .flatten() 15463 .next() 15464 .unwrap_or(0) 15465 != 0, 15466 constant_alpha_color_blend_factors: [features_ffi 15467 .features_portability_subset_khr 15468 .map(|s| s.constant_alpha_color_blend_factors)] 15469 .into_iter() 15470 .flatten() 15471 .next() 15472 .unwrap_or(0) 15473 != 0, 15474 cooperative_matrix: [features_ffi 15475 .features_cooperative_matrix_nv 15476 .map(|s| s.cooperative_matrix)] 15477 .into_iter() 15478 .flatten() 15479 .next() 15480 .unwrap_or(0) 15481 != 0, 15482 cooperative_matrix_robust_buffer_access: [features_ffi 15483 .features_cooperative_matrix_nv 15484 .map(|s| s.cooperative_matrix_robust_buffer_access)] 15485 .into_iter() 15486 .flatten() 15487 .next() 15488 .unwrap_or(0) 15489 != 0, 15490 corner_sampled_image: [features_ffi 15491 .features_corner_sampled_image_nv 15492 .map(|s| s.corner_sampled_image)] 15493 .into_iter() 15494 .flatten() 15495 .next() 15496 .unwrap_or(0) 15497 != 0, 15498 coverage_reduction_mode: [features_ffi 15499 .features_coverage_reduction_mode_nv 15500 .map(|s| s.coverage_reduction_mode)] 15501 .into_iter() 15502 .flatten() 15503 .next() 15504 .unwrap_or(0) 15505 != 0, 15506 custom_border_color_without_format: [features_ffi 15507 .features_custom_border_color_ext 15508 .map(|s| s.custom_border_color_without_format)] 15509 .into_iter() 15510 .flatten() 15511 .next() 15512 .unwrap_or(0) 15513 != 0, 15514 custom_border_colors: [features_ffi 15515 .features_custom_border_color_ext 15516 .map(|s| s.custom_border_colors)] 15517 .into_iter() 15518 .flatten() 15519 .next() 15520 .unwrap_or(0) 15521 != 0, 15522 decode_mode_shared_exponent: [features_ffi 15523 .features_astc_decode_ext 15524 .map(|s| s.decode_mode_shared_exponent)] 15525 .into_iter() 15526 .flatten() 15527 .next() 15528 .unwrap_or(0) 15529 != 0, 15530 dedicated_allocation_image_aliasing: [features_ffi 15531 .features_dedicated_allocation_image_aliasing_nv 15532 .map(|s| s.dedicated_allocation_image_aliasing)] 15533 .into_iter() 15534 .flatten() 15535 .next() 15536 .unwrap_or(0) 15537 != 0, 15538 depth_bias_clamp: [features_ffi.features_vulkan10.features.depth_bias_clamp] 15539 .into_iter() 15540 .next() 15541 .unwrap_or(0) 15542 != 0, 15543 depth_bounds: [features_ffi.features_vulkan10.features.depth_bounds] 15544 .into_iter() 15545 .next() 15546 .unwrap_or(0) 15547 != 0, 15548 depth_clamp: [features_ffi.features_vulkan10.features.depth_clamp] 15549 .into_iter() 15550 .next() 15551 .unwrap_or(0) 15552 != 0, 15553 depth_clamp_zero_one: [features_ffi 15554 .features_depth_clamp_zero_one_ext 15555 .map(|s| s.depth_clamp_zero_one)] 15556 .into_iter() 15557 .flatten() 15558 .next() 15559 .unwrap_or(0) 15560 != 0, 15561 depth_clip_control: [features_ffi 15562 .features_depth_clip_control_ext 15563 .map(|s| s.depth_clip_control)] 15564 .into_iter() 15565 .flatten() 15566 .next() 15567 .unwrap_or(0) 15568 != 0, 15569 depth_clip_enable: [features_ffi 15570 .features_depth_clip_enable_ext 15571 .map(|s| s.depth_clip_enable)] 15572 .into_iter() 15573 .flatten() 15574 .next() 15575 .unwrap_or(0) 15576 != 0, 15577 descriptor_binding_acceleration_structure_update_after_bind: [features_ffi 15578 .features_acceleration_structure_khr 15579 .map(|s| s.descriptor_binding_acceleration_structure_update_after_bind)] 15580 .into_iter() 15581 .flatten() 15582 .next() 15583 .unwrap_or(0) 15584 != 0, 15585 descriptor_binding_inline_uniform_block_update_after_bind: [ 15586 features_ffi 15587 .features_vulkan13 15588 .map(|s| s.descriptor_binding_inline_uniform_block_update_after_bind), 15589 features_ffi 15590 .features_inline_uniform_block 15591 .map(|s| s.descriptor_binding_inline_uniform_block_update_after_bind), 15592 ] 15593 .into_iter() 15594 .flatten() 15595 .next() 15596 .unwrap_or(0) 15597 != 0, 15598 descriptor_binding_partially_bound: [ 15599 features_ffi 15600 .features_vulkan12 15601 .map(|s| s.descriptor_binding_partially_bound), 15602 features_ffi 15603 .features_descriptor_indexing 15604 .map(|s| s.descriptor_binding_partially_bound), 15605 ] 15606 .into_iter() 15607 .flatten() 15608 .next() 15609 .unwrap_or(0) 15610 != 0, 15611 descriptor_binding_sampled_image_update_after_bind: [ 15612 features_ffi 15613 .features_vulkan12 15614 .map(|s| s.descriptor_binding_sampled_image_update_after_bind), 15615 features_ffi 15616 .features_descriptor_indexing 15617 .map(|s| s.descriptor_binding_sampled_image_update_after_bind), 15618 ] 15619 .into_iter() 15620 .flatten() 15621 .next() 15622 .unwrap_or(0) 15623 != 0, 15624 descriptor_binding_storage_buffer_update_after_bind: [ 15625 features_ffi 15626 .features_vulkan12 15627 .map(|s| s.descriptor_binding_storage_buffer_update_after_bind), 15628 features_ffi 15629 .features_descriptor_indexing 15630 .map(|s| s.descriptor_binding_storage_buffer_update_after_bind), 15631 ] 15632 .into_iter() 15633 .flatten() 15634 .next() 15635 .unwrap_or(0) 15636 != 0, 15637 descriptor_binding_storage_image_update_after_bind: [ 15638 features_ffi 15639 .features_vulkan12 15640 .map(|s| s.descriptor_binding_storage_image_update_after_bind), 15641 features_ffi 15642 .features_descriptor_indexing 15643 .map(|s| s.descriptor_binding_storage_image_update_after_bind), 15644 ] 15645 .into_iter() 15646 .flatten() 15647 .next() 15648 .unwrap_or(0) 15649 != 0, 15650 descriptor_binding_storage_texel_buffer_update_after_bind: [ 15651 features_ffi 15652 .features_vulkan12 15653 .map(|s| s.descriptor_binding_storage_texel_buffer_update_after_bind), 15654 features_ffi 15655 .features_descriptor_indexing 15656 .map(|s| s.descriptor_binding_storage_texel_buffer_update_after_bind), 15657 ] 15658 .into_iter() 15659 .flatten() 15660 .next() 15661 .unwrap_or(0) 15662 != 0, 15663 descriptor_binding_uniform_buffer_update_after_bind: [ 15664 features_ffi 15665 .features_vulkan12 15666 .map(|s| s.descriptor_binding_uniform_buffer_update_after_bind), 15667 features_ffi 15668 .features_descriptor_indexing 15669 .map(|s| s.descriptor_binding_uniform_buffer_update_after_bind), 15670 ] 15671 .into_iter() 15672 .flatten() 15673 .next() 15674 .unwrap_or(0) 15675 != 0, 15676 descriptor_binding_uniform_texel_buffer_update_after_bind: [ 15677 features_ffi 15678 .features_vulkan12 15679 .map(|s| s.descriptor_binding_uniform_texel_buffer_update_after_bind), 15680 features_ffi 15681 .features_descriptor_indexing 15682 .map(|s| s.descriptor_binding_uniform_texel_buffer_update_after_bind), 15683 ] 15684 .into_iter() 15685 .flatten() 15686 .next() 15687 .unwrap_or(0) 15688 != 0, 15689 descriptor_binding_update_unused_while_pending: [ 15690 features_ffi 15691 .features_vulkan12 15692 .map(|s| s.descriptor_binding_update_unused_while_pending), 15693 features_ffi 15694 .features_descriptor_indexing 15695 .map(|s| s.descriptor_binding_update_unused_while_pending), 15696 ] 15697 .into_iter() 15698 .flatten() 15699 .next() 15700 .unwrap_or(0) 15701 != 0, 15702 descriptor_binding_variable_descriptor_count: [ 15703 features_ffi 15704 .features_vulkan12 15705 .map(|s| s.descriptor_binding_variable_descriptor_count), 15706 features_ffi 15707 .features_descriptor_indexing 15708 .map(|s| s.descriptor_binding_variable_descriptor_count), 15709 ] 15710 .into_iter() 15711 .flatten() 15712 .next() 15713 .unwrap_or(0) 15714 != 0, 15715 descriptor_buffer: [features_ffi 15716 .features_descriptor_buffer_ext 15717 .map(|s| s.descriptor_buffer)] 15718 .into_iter() 15719 .flatten() 15720 .next() 15721 .unwrap_or(0) 15722 != 0, 15723 descriptor_buffer_capture_replay: [features_ffi 15724 .features_descriptor_buffer_ext 15725 .map(|s| s.descriptor_buffer_capture_replay)] 15726 .into_iter() 15727 .flatten() 15728 .next() 15729 .unwrap_or(0) 15730 != 0, 15731 descriptor_buffer_image_layout_ignored: [features_ffi 15732 .features_descriptor_buffer_ext 15733 .map(|s| s.descriptor_buffer_image_layout_ignored)] 15734 .into_iter() 15735 .flatten() 15736 .next() 15737 .unwrap_or(0) 15738 != 0, 15739 descriptor_buffer_push_descriptors: [features_ffi 15740 .features_descriptor_buffer_ext 15741 .map(|s| s.descriptor_buffer_push_descriptors)] 15742 .into_iter() 15743 .flatten() 15744 .next() 15745 .unwrap_or(0) 15746 != 0, 15747 descriptor_indexing: [features_ffi 15748 .features_vulkan12 15749 .map(|s| s.descriptor_indexing)] 15750 .into_iter() 15751 .flatten() 15752 .next() 15753 .unwrap_or(0) 15754 != 0, 15755 descriptor_set_host_mapping: [features_ffi 15756 .features_descriptor_set_host_mapping_valve 15757 .map(|s| s.descriptor_set_host_mapping)] 15758 .into_iter() 15759 .flatten() 15760 .next() 15761 .unwrap_or(0) 15762 != 0, 15763 device_coherent_memory: [features_ffi 15764 .features_coherent_memory_amd 15765 .map(|s| s.device_coherent_memory)] 15766 .into_iter() 15767 .flatten() 15768 .next() 15769 .unwrap_or(0) 15770 != 0, 15771 device_fault: [features_ffi.features_fault_ext.map(|s| s.device_fault)] 15772 .into_iter() 15773 .flatten() 15774 .next() 15775 .unwrap_or(0) 15776 != 0, 15777 device_fault_vendor_binary: [features_ffi 15778 .features_fault_ext 15779 .map(|s| s.device_fault_vendor_binary)] 15780 .into_iter() 15781 .flatten() 15782 .next() 15783 .unwrap_or(0) 15784 != 0, 15785 device_generated_commands: [features_ffi 15786 .features_device_generated_commands_nv 15787 .map(|s| s.device_generated_commands)] 15788 .into_iter() 15789 .flatten() 15790 .next() 15791 .unwrap_or(0) 15792 != 0, 15793 device_memory_report: [features_ffi 15794 .features_device_memory_report_ext 15795 .map(|s| s.device_memory_report)] 15796 .into_iter() 15797 .flatten() 15798 .next() 15799 .unwrap_or(0) 15800 != 0, 15801 diagnostics_config: [features_ffi 15802 .features_diagnostics_config_nv 15803 .map(|s| s.diagnostics_config)] 15804 .into_iter() 15805 .flatten() 15806 .next() 15807 .unwrap_or(0) 15808 != 0, 15809 draw_indirect_count: [features_ffi 15810 .features_vulkan12 15811 .map(|s| s.draw_indirect_count)] 15812 .into_iter() 15813 .flatten() 15814 .next() 15815 .unwrap_or(0) 15816 != 0, 15817 draw_indirect_first_instance: [features_ffi 15818 .features_vulkan10 15819 .features 15820 .draw_indirect_first_instance] 15821 .into_iter() 15822 .next() 15823 .unwrap_or(0) 15824 != 0, 15825 dual_src_blend: [features_ffi.features_vulkan10.features.dual_src_blend] 15826 .into_iter() 15827 .next() 15828 .unwrap_or(0) 15829 != 0, 15830 dynamic_rendering: [ 15831 features_ffi.features_vulkan13.map(|s| s.dynamic_rendering), 15832 features_ffi 15833 .features_dynamic_rendering 15834 .map(|s| s.dynamic_rendering), 15835 ] 15836 .into_iter() 15837 .flatten() 15838 .next() 15839 .unwrap_or(0) 15840 != 0, 15841 events: [features_ffi 15842 .features_portability_subset_khr 15843 .map(|s| s.events)] 15844 .into_iter() 15845 .flatten() 15846 .next() 15847 .unwrap_or(0) 15848 != 0, 15849 exclusive_scissor: [features_ffi 15850 .features_exclusive_scissor_nv 15851 .map(|s| s.exclusive_scissor)] 15852 .into_iter() 15853 .flatten() 15854 .next() 15855 .unwrap_or(0) 15856 != 0, 15857 extended_dynamic_state: [features_ffi 15858 .features_extended_dynamic_state_ext 15859 .map(|s| s.extended_dynamic_state)] 15860 .into_iter() 15861 .flatten() 15862 .next() 15863 .unwrap_or(0) 15864 != 0, 15865 extended_dynamic_state2: [features_ffi 15866 .features_extended_dynamic_state2_ext 15867 .map(|s| s.extended_dynamic_state2)] 15868 .into_iter() 15869 .flatten() 15870 .next() 15871 .unwrap_or(0) 15872 != 0, 15873 extended_dynamic_state2_logic_op: [features_ffi 15874 .features_extended_dynamic_state2_ext 15875 .map(|s| s.extended_dynamic_state2_logic_op)] 15876 .into_iter() 15877 .flatten() 15878 .next() 15879 .unwrap_or(0) 15880 != 0, 15881 extended_dynamic_state2_patch_control_points: [features_ffi 15882 .features_extended_dynamic_state2_ext 15883 .map(|s| s.extended_dynamic_state2_patch_control_points)] 15884 .into_iter() 15885 .flatten() 15886 .next() 15887 .unwrap_or(0) 15888 != 0, 15889 extended_dynamic_state3_alpha_to_coverage_enable: [features_ffi 15890 .features_extended_dynamic_state3_ext 15891 .map(|s| s.extended_dynamic_state3_alpha_to_coverage_enable)] 15892 .into_iter() 15893 .flatten() 15894 .next() 15895 .unwrap_or(0) 15896 != 0, 15897 extended_dynamic_state3_alpha_to_one_enable: [features_ffi 15898 .features_extended_dynamic_state3_ext 15899 .map(|s| s.extended_dynamic_state3_alpha_to_one_enable)] 15900 .into_iter() 15901 .flatten() 15902 .next() 15903 .unwrap_or(0) 15904 != 0, 15905 extended_dynamic_state3_color_blend_advanced: [features_ffi 15906 .features_extended_dynamic_state3_ext 15907 .map(|s| s.extended_dynamic_state3_color_blend_advanced)] 15908 .into_iter() 15909 .flatten() 15910 .next() 15911 .unwrap_or(0) 15912 != 0, 15913 extended_dynamic_state3_color_blend_enable: [features_ffi 15914 .features_extended_dynamic_state3_ext 15915 .map(|s| s.extended_dynamic_state3_color_blend_enable)] 15916 .into_iter() 15917 .flatten() 15918 .next() 15919 .unwrap_or(0) 15920 != 0, 15921 extended_dynamic_state3_color_blend_equation: [features_ffi 15922 .features_extended_dynamic_state3_ext 15923 .map(|s| s.extended_dynamic_state3_color_blend_equation)] 15924 .into_iter() 15925 .flatten() 15926 .next() 15927 .unwrap_or(0) 15928 != 0, 15929 extended_dynamic_state3_color_write_mask: [features_ffi 15930 .features_extended_dynamic_state3_ext 15931 .map(|s| s.extended_dynamic_state3_color_write_mask)] 15932 .into_iter() 15933 .flatten() 15934 .next() 15935 .unwrap_or(0) 15936 != 0, 15937 extended_dynamic_state3_conservative_rasterization_mode: [features_ffi 15938 .features_extended_dynamic_state3_ext 15939 .map(|s| s.extended_dynamic_state3_conservative_rasterization_mode)] 15940 .into_iter() 15941 .flatten() 15942 .next() 15943 .unwrap_or(0) 15944 != 0, 15945 extended_dynamic_state3_coverage_modulation_mode: [features_ffi 15946 .features_extended_dynamic_state3_ext 15947 .map(|s| s.extended_dynamic_state3_coverage_modulation_mode)] 15948 .into_iter() 15949 .flatten() 15950 .next() 15951 .unwrap_or(0) 15952 != 0, 15953 extended_dynamic_state3_coverage_modulation_table: [features_ffi 15954 .features_extended_dynamic_state3_ext 15955 .map(|s| s.extended_dynamic_state3_coverage_modulation_table)] 15956 .into_iter() 15957 .flatten() 15958 .next() 15959 .unwrap_or(0) 15960 != 0, 15961 extended_dynamic_state3_coverage_modulation_table_enable: [features_ffi 15962 .features_extended_dynamic_state3_ext 15963 .map(|s| s.extended_dynamic_state3_coverage_modulation_table_enable)] 15964 .into_iter() 15965 .flatten() 15966 .next() 15967 .unwrap_or(0) 15968 != 0, 15969 extended_dynamic_state3_coverage_reduction_mode: [features_ffi 15970 .features_extended_dynamic_state3_ext 15971 .map(|s| s.extended_dynamic_state3_coverage_reduction_mode)] 15972 .into_iter() 15973 .flatten() 15974 .next() 15975 .unwrap_or(0) 15976 != 0, 15977 extended_dynamic_state3_coverage_to_color_enable: [features_ffi 15978 .features_extended_dynamic_state3_ext 15979 .map(|s| s.extended_dynamic_state3_coverage_to_color_enable)] 15980 .into_iter() 15981 .flatten() 15982 .next() 15983 .unwrap_or(0) 15984 != 0, 15985 extended_dynamic_state3_coverage_to_color_location: [features_ffi 15986 .features_extended_dynamic_state3_ext 15987 .map(|s| s.extended_dynamic_state3_coverage_to_color_location)] 15988 .into_iter() 15989 .flatten() 15990 .next() 15991 .unwrap_or(0) 15992 != 0, 15993 extended_dynamic_state3_depth_clamp_enable: [features_ffi 15994 .features_extended_dynamic_state3_ext 15995 .map(|s| s.extended_dynamic_state3_depth_clamp_enable)] 15996 .into_iter() 15997 .flatten() 15998 .next() 15999 .unwrap_or(0) 16000 != 0, 16001 extended_dynamic_state3_depth_clip_enable: [features_ffi 16002 .features_extended_dynamic_state3_ext 16003 .map(|s| s.extended_dynamic_state3_depth_clip_enable)] 16004 .into_iter() 16005 .flatten() 16006 .next() 16007 .unwrap_or(0) 16008 != 0, 16009 extended_dynamic_state3_depth_clip_negative_one_to_one: [features_ffi 16010 .features_extended_dynamic_state3_ext 16011 .map(|s| s.extended_dynamic_state3_depth_clip_negative_one_to_one)] 16012 .into_iter() 16013 .flatten() 16014 .next() 16015 .unwrap_or(0) 16016 != 0, 16017 extended_dynamic_state3_extra_primitive_overestimation_size: [features_ffi 16018 .features_extended_dynamic_state3_ext 16019 .map(|s| s.extended_dynamic_state3_extra_primitive_overestimation_size)] 16020 .into_iter() 16021 .flatten() 16022 .next() 16023 .unwrap_or(0) 16024 != 0, 16025 extended_dynamic_state3_line_rasterization_mode: [features_ffi 16026 .features_extended_dynamic_state3_ext 16027 .map(|s| s.extended_dynamic_state3_line_rasterization_mode)] 16028 .into_iter() 16029 .flatten() 16030 .next() 16031 .unwrap_or(0) 16032 != 0, 16033 extended_dynamic_state3_line_stipple_enable: [features_ffi 16034 .features_extended_dynamic_state3_ext 16035 .map(|s| s.extended_dynamic_state3_line_stipple_enable)] 16036 .into_iter() 16037 .flatten() 16038 .next() 16039 .unwrap_or(0) 16040 != 0, 16041 extended_dynamic_state3_logic_op_enable: [features_ffi 16042 .features_extended_dynamic_state3_ext 16043 .map(|s| s.extended_dynamic_state3_logic_op_enable)] 16044 .into_iter() 16045 .flatten() 16046 .next() 16047 .unwrap_or(0) 16048 != 0, 16049 extended_dynamic_state3_polygon_mode: [features_ffi 16050 .features_extended_dynamic_state3_ext 16051 .map(|s| s.extended_dynamic_state3_polygon_mode)] 16052 .into_iter() 16053 .flatten() 16054 .next() 16055 .unwrap_or(0) 16056 != 0, 16057 extended_dynamic_state3_provoking_vertex_mode: [features_ffi 16058 .features_extended_dynamic_state3_ext 16059 .map(|s| s.extended_dynamic_state3_provoking_vertex_mode)] 16060 .into_iter() 16061 .flatten() 16062 .next() 16063 .unwrap_or(0) 16064 != 0, 16065 extended_dynamic_state3_rasterization_samples: [features_ffi 16066 .features_extended_dynamic_state3_ext 16067 .map(|s| s.extended_dynamic_state3_rasterization_samples)] 16068 .into_iter() 16069 .flatten() 16070 .next() 16071 .unwrap_or(0) 16072 != 0, 16073 extended_dynamic_state3_rasterization_stream: [features_ffi 16074 .features_extended_dynamic_state3_ext 16075 .map(|s| s.extended_dynamic_state3_rasterization_stream)] 16076 .into_iter() 16077 .flatten() 16078 .next() 16079 .unwrap_or(0) 16080 != 0, 16081 extended_dynamic_state3_representative_fragment_test_enable: [features_ffi 16082 .features_extended_dynamic_state3_ext 16083 .map(|s| s.extended_dynamic_state3_representative_fragment_test_enable)] 16084 .into_iter() 16085 .flatten() 16086 .next() 16087 .unwrap_or(0) 16088 != 0, 16089 extended_dynamic_state3_sample_locations_enable: [features_ffi 16090 .features_extended_dynamic_state3_ext 16091 .map(|s| s.extended_dynamic_state3_sample_locations_enable)] 16092 .into_iter() 16093 .flatten() 16094 .next() 16095 .unwrap_or(0) 16096 != 0, 16097 extended_dynamic_state3_sample_mask: [features_ffi 16098 .features_extended_dynamic_state3_ext 16099 .map(|s| s.extended_dynamic_state3_sample_mask)] 16100 .into_iter() 16101 .flatten() 16102 .next() 16103 .unwrap_or(0) 16104 != 0, 16105 extended_dynamic_state3_shading_rate_image_enable: [features_ffi 16106 .features_extended_dynamic_state3_ext 16107 .map(|s| s.extended_dynamic_state3_shading_rate_image_enable)] 16108 .into_iter() 16109 .flatten() 16110 .next() 16111 .unwrap_or(0) 16112 != 0, 16113 extended_dynamic_state3_tessellation_domain_origin: [features_ffi 16114 .features_extended_dynamic_state3_ext 16115 .map(|s| s.extended_dynamic_state3_tessellation_domain_origin)] 16116 .into_iter() 16117 .flatten() 16118 .next() 16119 .unwrap_or(0) 16120 != 0, 16121 extended_dynamic_state3_viewport_swizzle: [features_ffi 16122 .features_extended_dynamic_state3_ext 16123 .map(|s| s.extended_dynamic_state3_viewport_swizzle)] 16124 .into_iter() 16125 .flatten() 16126 .next() 16127 .unwrap_or(0) 16128 != 0, 16129 extended_dynamic_state3_viewport_w_scaling_enable: [features_ffi 16130 .features_extended_dynamic_state3_ext 16131 .map(|s| s.extended_dynamic_state3_viewport_w_scaling_enable)] 16132 .into_iter() 16133 .flatten() 16134 .next() 16135 .unwrap_or(0) 16136 != 0, 16137 external_memory_rdma: [features_ffi 16138 .features_external_memory_rdma_nv 16139 .map(|s| s.external_memory_rdma)] 16140 .into_iter() 16141 .flatten() 16142 .next() 16143 .unwrap_or(0) 16144 != 0, 16145 fill_mode_non_solid: [features_ffi.features_vulkan10.features.fill_mode_non_solid] 16146 .into_iter() 16147 .next() 16148 .unwrap_or(0) 16149 != 0, 16150 format_a4b4g4r4: [features_ffi 16151 .features_4444formats_ext 16152 .map(|s| s.format_a4b4g4r4)] 16153 .into_iter() 16154 .flatten() 16155 .next() 16156 .unwrap_or(0) 16157 != 0, 16158 format_a4r4g4b4: [features_ffi 16159 .features_4444formats_ext 16160 .map(|s| s.format_a4r4g4b4)] 16161 .into_iter() 16162 .flatten() 16163 .next() 16164 .unwrap_or(0) 16165 != 0, 16166 format_rgba10x6_without_y_cb_cr_sampler: [features_ffi 16167 .features_rgba10x6_formats_ext 16168 .map(|s| s.format_rgba10x6_without_y_cb_cr_sampler)] 16169 .into_iter() 16170 .flatten() 16171 .next() 16172 .unwrap_or(0) 16173 != 0, 16174 fragment_density_map: [features_ffi 16175 .features_fragment_density_map_ext 16176 .map(|s| s.fragment_density_map)] 16177 .into_iter() 16178 .flatten() 16179 .next() 16180 .unwrap_or(0) 16181 != 0, 16182 fragment_density_map_deferred: [features_ffi 16183 .features_fragment_density_map2_ext 16184 .map(|s| s.fragment_density_map_deferred)] 16185 .into_iter() 16186 .flatten() 16187 .next() 16188 .unwrap_or(0) 16189 != 0, 16190 fragment_density_map_dynamic: [features_ffi 16191 .features_fragment_density_map_ext 16192 .map(|s| s.fragment_density_map_dynamic)] 16193 .into_iter() 16194 .flatten() 16195 .next() 16196 .unwrap_or(0) 16197 != 0, 16198 fragment_density_map_non_subsampled_images: [features_ffi 16199 .features_fragment_density_map_ext 16200 .map(|s| s.fragment_density_map_non_subsampled_images)] 16201 .into_iter() 16202 .flatten() 16203 .next() 16204 .unwrap_or(0) 16205 != 0, 16206 fragment_density_map_offset: [features_ffi 16207 .features_fragment_density_map_offset_qcom 16208 .map(|s| s.fragment_density_map_offset)] 16209 .into_iter() 16210 .flatten() 16211 .next() 16212 .unwrap_or(0) 16213 != 0, 16214 fragment_shader_barycentric: [features_ffi 16215 .features_fragment_shader_barycentric_khr 16216 .map(|s| s.fragment_shader_barycentric)] 16217 .into_iter() 16218 .flatten() 16219 .next() 16220 .unwrap_or(0) 16221 != 0, 16222 fragment_shader_pixel_interlock: [features_ffi 16223 .features_fragment_shader_interlock_ext 16224 .map(|s| s.fragment_shader_pixel_interlock)] 16225 .into_iter() 16226 .flatten() 16227 .next() 16228 .unwrap_or(0) 16229 != 0, 16230 fragment_shader_sample_interlock: [features_ffi 16231 .features_fragment_shader_interlock_ext 16232 .map(|s| s.fragment_shader_sample_interlock)] 16233 .into_iter() 16234 .flatten() 16235 .next() 16236 .unwrap_or(0) 16237 != 0, 16238 fragment_shader_shading_rate_interlock: [features_ffi 16239 .features_fragment_shader_interlock_ext 16240 .map(|s| s.fragment_shader_shading_rate_interlock)] 16241 .into_iter() 16242 .flatten() 16243 .next() 16244 .unwrap_or(0) 16245 != 0, 16246 fragment_shading_rate_enums: [features_ffi 16247 .features_fragment_shading_rate_enums_nv 16248 .map(|s| s.fragment_shading_rate_enums)] 16249 .into_iter() 16250 .flatten() 16251 .next() 16252 .unwrap_or(0) 16253 != 0, 16254 fragment_stores_and_atomics: [features_ffi 16255 .features_vulkan10 16256 .features 16257 .fragment_stores_and_atomics] 16258 .into_iter() 16259 .next() 16260 .unwrap_or(0) 16261 != 0, 16262 full_draw_index_uint32: [features_ffi 16263 .features_vulkan10 16264 .features 16265 .full_draw_index_uint32] 16266 .into_iter() 16267 .next() 16268 .unwrap_or(0) 16269 != 0, 16270 geometry_shader: [features_ffi.features_vulkan10.features.geometry_shader] 16271 .into_iter() 16272 .next() 16273 .unwrap_or(0) 16274 != 0, 16275 geometry_streams: [features_ffi 16276 .features_transform_feedback_ext 16277 .map(|s| s.geometry_streams)] 16278 .into_iter() 16279 .flatten() 16280 .next() 16281 .unwrap_or(0) 16282 != 0, 16283 global_priority_query: [features_ffi 16284 .features_global_priority_query_khr 16285 .map(|s| s.global_priority_query)] 16286 .into_iter() 16287 .flatten() 16288 .next() 16289 .unwrap_or(0) 16290 != 0, 16291 graphics_pipeline_library: [features_ffi 16292 .features_graphics_pipeline_library_ext 16293 .map(|s| s.graphics_pipeline_library)] 16294 .into_iter() 16295 .flatten() 16296 .next() 16297 .unwrap_or(0) 16298 != 0, 16299 host_query_reset: [ 16300 features_ffi.features_vulkan12.map(|s| s.host_query_reset), 16301 features_ffi 16302 .features_host_query_reset 16303 .map(|s| s.host_query_reset), 16304 ] 16305 .into_iter() 16306 .flatten() 16307 .next() 16308 .unwrap_or(0) 16309 != 0, 16310 image2_d_view_of3_d: [features_ffi 16311 .features_image2_d_view_of3_d_ext 16312 .map(|s| s.image2_d_view_of3_d)] 16313 .into_iter() 16314 .flatten() 16315 .next() 16316 .unwrap_or(0) 16317 != 0, 16318 image_compression_control: [features_ffi 16319 .features_image_compression_control_ext 16320 .map(|s| s.image_compression_control)] 16321 .into_iter() 16322 .flatten() 16323 .next() 16324 .unwrap_or(0) 16325 != 0, 16326 image_compression_control_swapchain: [features_ffi 16327 .features_image_compression_control_swapchain_ext 16328 .map(|s| s.image_compression_control_swapchain)] 16329 .into_iter() 16330 .flatten() 16331 .next() 16332 .unwrap_or(0) 16333 != 0, 16334 image_cube_array: [features_ffi.features_vulkan10.features.image_cube_array] 16335 .into_iter() 16336 .next() 16337 .unwrap_or(0) 16338 != 0, 16339 image_footprint: [features_ffi 16340 .features_shader_image_footprint_nv 16341 .map(|s| s.image_footprint)] 16342 .into_iter() 16343 .flatten() 16344 .next() 16345 .unwrap_or(0) 16346 != 0, 16347 image_view2_d_on3_d_image: [features_ffi 16348 .features_portability_subset_khr 16349 .map(|s| s.image_view2_d_on3_d_image)] 16350 .into_iter() 16351 .flatten() 16352 .next() 16353 .unwrap_or(0) 16354 != 0, 16355 image_view_format_reinterpretation: [features_ffi 16356 .features_portability_subset_khr 16357 .map(|s| s.image_view_format_reinterpretation)] 16358 .into_iter() 16359 .flatten() 16360 .next() 16361 .unwrap_or(0) 16362 != 0, 16363 image_view_format_swizzle: [features_ffi 16364 .features_portability_subset_khr 16365 .map(|s| s.image_view_format_swizzle)] 16366 .into_iter() 16367 .flatten() 16368 .next() 16369 .unwrap_or(0) 16370 != 0, 16371 imageless_framebuffer: [ 16372 features_ffi 16373 .features_vulkan12 16374 .map(|s| s.imageless_framebuffer), 16375 features_ffi 16376 .features_imageless_framebuffer 16377 .map(|s| s.imageless_framebuffer), 16378 ] 16379 .into_iter() 16380 .flatten() 16381 .next() 16382 .unwrap_or(0) 16383 != 0, 16384 independent_blend: [features_ffi.features_vulkan10.features.independent_blend] 16385 .into_iter() 16386 .next() 16387 .unwrap_or(0) 16388 != 0, 16389 index_type_uint8: [features_ffi 16390 .features_index_type_uint8_ext 16391 .map(|s| s.index_type_uint8)] 16392 .into_iter() 16393 .flatten() 16394 .next() 16395 .unwrap_or(0) 16396 != 0, 16397 indirect_copy: [features_ffi 16398 .features_copy_memory_indirect_nv 16399 .map(|s| s.indirect_copy)] 16400 .into_iter() 16401 .flatten() 16402 .next() 16403 .unwrap_or(0) 16404 != 0, 16405 inherited_conditional_rendering: [features_ffi 16406 .features_conditional_rendering_ext 16407 .map(|s| s.inherited_conditional_rendering)] 16408 .into_iter() 16409 .flatten() 16410 .next() 16411 .unwrap_or(0) 16412 != 0, 16413 inherited_queries: [features_ffi.features_vulkan10.features.inherited_queries] 16414 .into_iter() 16415 .next() 16416 .unwrap_or(0) 16417 != 0, 16418 inherited_viewport_scissor2_d: [features_ffi 16419 .features_inherited_viewport_scissor_nv 16420 .map(|s| s.inherited_viewport_scissor2_d)] 16421 .into_iter() 16422 .flatten() 16423 .next() 16424 .unwrap_or(0) 16425 != 0, 16426 inline_uniform_block: [ 16427 features_ffi 16428 .features_vulkan13 16429 .map(|s| s.inline_uniform_block), 16430 features_ffi 16431 .features_inline_uniform_block 16432 .map(|s| s.inline_uniform_block), 16433 ] 16434 .into_iter() 16435 .flatten() 16436 .next() 16437 .unwrap_or(0) 16438 != 0, 16439 invocation_mask: [features_ffi 16440 .features_invocation_mask_huawei 16441 .map(|s| s.invocation_mask)] 16442 .into_iter() 16443 .flatten() 16444 .next() 16445 .unwrap_or(0) 16446 != 0, 16447 large_points: [features_ffi.features_vulkan10.features.large_points] 16448 .into_iter() 16449 .next() 16450 .unwrap_or(0) 16451 != 0, 16452 legacy_dithering: [features_ffi 16453 .features_legacy_dithering_ext 16454 .map(|s| s.legacy_dithering)] 16455 .into_iter() 16456 .flatten() 16457 .next() 16458 .unwrap_or(0) 16459 != 0, 16460 linear_color_attachment: [features_ffi 16461 .features_linear_color_attachment_nv 16462 .map(|s| s.linear_color_attachment)] 16463 .into_iter() 16464 .flatten() 16465 .next() 16466 .unwrap_or(0) 16467 != 0, 16468 logic_op: [features_ffi.features_vulkan10.features.logic_op] 16469 .into_iter() 16470 .next() 16471 .unwrap_or(0) 16472 != 0, 16473 maintenance4: [ 16474 features_ffi.features_vulkan13.map(|s| s.maintenance4), 16475 features_ffi.features_maintenance4.map(|s| s.maintenance4), 16476 ] 16477 .into_iter() 16478 .flatten() 16479 .next() 16480 .unwrap_or(0) 16481 != 0, 16482 memory_decompression: [features_ffi 16483 .features_memory_decompression_nv 16484 .map(|s| s.memory_decompression)] 16485 .into_iter() 16486 .flatten() 16487 .next() 16488 .unwrap_or(0) 16489 != 0, 16490 memory_priority: [features_ffi 16491 .features_memory_priority_ext 16492 .map(|s| s.memory_priority)] 16493 .into_iter() 16494 .flatten() 16495 .next() 16496 .unwrap_or(0) 16497 != 0, 16498 mesh_shader: [ 16499 features_ffi.features_mesh_shader_ext.map(|s| s.mesh_shader), 16500 features_ffi.features_mesh_shader_nv.map(|s| s.mesh_shader), 16501 ] 16502 .into_iter() 16503 .flatten() 16504 .next() 16505 .unwrap_or(0) 16506 != 0, 16507 mesh_shader_queries: [features_ffi 16508 .features_mesh_shader_ext 16509 .map(|s| s.mesh_shader_queries)] 16510 .into_iter() 16511 .flatten() 16512 .next() 16513 .unwrap_or(0) 16514 != 0, 16515 micromap: [features_ffi 16516 .features_opacity_micromap_ext 16517 .map(|s| s.micromap)] 16518 .into_iter() 16519 .flatten() 16520 .next() 16521 .unwrap_or(0) 16522 != 0, 16523 micromap_capture_replay: [features_ffi 16524 .features_opacity_micromap_ext 16525 .map(|s| s.micromap_capture_replay)] 16526 .into_iter() 16527 .flatten() 16528 .next() 16529 .unwrap_or(0) 16530 != 0, 16531 micromap_host_commands: [features_ffi 16532 .features_opacity_micromap_ext 16533 .map(|s| s.micromap_host_commands)] 16534 .into_iter() 16535 .flatten() 16536 .next() 16537 .unwrap_or(0) 16538 != 0, 16539 min_lod: [features_ffi 16540 .features_image_view_min_lod_ext 16541 .map(|s| s.min_lod)] 16542 .into_iter() 16543 .flatten() 16544 .next() 16545 .unwrap_or(0) 16546 != 0, 16547 multi_draw: [features_ffi.features_multi_draw_ext.map(|s| s.multi_draw)] 16548 .into_iter() 16549 .flatten() 16550 .next() 16551 .unwrap_or(0) 16552 != 0, 16553 multi_draw_indirect: [features_ffi.features_vulkan10.features.multi_draw_indirect] 16554 .into_iter() 16555 .next() 16556 .unwrap_or(0) 16557 != 0, 16558 multi_viewport: [features_ffi.features_vulkan10.features.multi_viewport] 16559 .into_iter() 16560 .next() 16561 .unwrap_or(0) 16562 != 0, 16563 multisample_array_image: [features_ffi 16564 .features_portability_subset_khr 16565 .map(|s| s.multisample_array_image)] 16566 .into_iter() 16567 .flatten() 16568 .next() 16569 .unwrap_or(0) 16570 != 0, 16571 multisampled_render_to_single_sampled: [features_ffi 16572 .features_multisampled_render_to_single_sampled_ext 16573 .map(|s| s.multisampled_render_to_single_sampled)] 16574 .into_iter() 16575 .flatten() 16576 .next() 16577 .unwrap_or(0) 16578 != 0, 16579 multiview: [ 16580 features_ffi.features_vulkan11.map(|s| s.multiview), 16581 features_ffi.features_multiview.map(|s| s.multiview), 16582 ] 16583 .into_iter() 16584 .flatten() 16585 .next() 16586 .unwrap_or(0) 16587 != 0, 16588 multiview_geometry_shader: [ 16589 features_ffi 16590 .features_vulkan11 16591 .map(|s| s.multiview_geometry_shader), 16592 features_ffi 16593 .features_multiview 16594 .map(|s| s.multiview_geometry_shader), 16595 ] 16596 .into_iter() 16597 .flatten() 16598 .next() 16599 .unwrap_or(0) 16600 != 0, 16601 multiview_mesh_shader: [features_ffi 16602 .features_mesh_shader_ext 16603 .map(|s| s.multiview_mesh_shader)] 16604 .into_iter() 16605 .flatten() 16606 .next() 16607 .unwrap_or(0) 16608 != 0, 16609 multiview_per_view_viewports: [features_ffi 16610 .features_multiview_per_view_viewports_qcom 16611 .map(|s| s.multiview_per_view_viewports)] 16612 .into_iter() 16613 .flatten() 16614 .next() 16615 .unwrap_or(0) 16616 != 0, 16617 multiview_tessellation_shader: [ 16618 features_ffi 16619 .features_vulkan11 16620 .map(|s| s.multiview_tessellation_shader), 16621 features_ffi 16622 .features_multiview 16623 .map(|s| s.multiview_tessellation_shader), 16624 ] 16625 .into_iter() 16626 .flatten() 16627 .next() 16628 .unwrap_or(0) 16629 != 0, 16630 mutable_comparison_samplers: [features_ffi 16631 .features_portability_subset_khr 16632 .map(|s| s.mutable_comparison_samplers)] 16633 .into_iter() 16634 .flatten() 16635 .next() 16636 .unwrap_or(0) 16637 != 0, 16638 mutable_descriptor_type: [features_ffi 16639 .features_mutable_descriptor_type_ext 16640 .map(|s| s.mutable_descriptor_type)] 16641 .into_iter() 16642 .flatten() 16643 .next() 16644 .unwrap_or(0) 16645 != 0, 16646 no_invocation_fragment_shading_rates: [features_ffi 16647 .features_fragment_shading_rate_enums_nv 16648 .map(|s| s.no_invocation_fragment_shading_rates)] 16649 .into_iter() 16650 .flatten() 16651 .next() 16652 .unwrap_or(0) 16653 != 0, 16654 non_seamless_cube_map: [features_ffi 16655 .features_non_seamless_cube_map_ext 16656 .map(|s| s.non_seamless_cube_map)] 16657 .into_iter() 16658 .flatten() 16659 .next() 16660 .unwrap_or(0) 16661 != 0, 16662 null_descriptor: [features_ffi 16663 .features_robustness2_ext 16664 .map(|s| s.null_descriptor)] 16665 .into_iter() 16666 .flatten() 16667 .next() 16668 .unwrap_or(0) 16669 != 0, 16670 occlusion_query_precise: [features_ffi 16671 .features_vulkan10 16672 .features 16673 .occlusion_query_precise] 16674 .into_iter() 16675 .next() 16676 .unwrap_or(0) 16677 != 0, 16678 optical_flow: [features_ffi 16679 .features_optical_flow_nv 16680 .map(|s| s.optical_flow)] 16681 .into_iter() 16682 .flatten() 16683 .next() 16684 .unwrap_or(0) 16685 != 0, 16686 pageable_device_local_memory: [features_ffi 16687 .features_pageable_device_local_memory_ext 16688 .map(|s| s.pageable_device_local_memory)] 16689 .into_iter() 16690 .flatten() 16691 .next() 16692 .unwrap_or(0) 16693 != 0, 16694 performance_counter_multiple_query_pools: [features_ffi 16695 .features_performance_query_khr 16696 .map(|s| s.performance_counter_multiple_query_pools)] 16697 .into_iter() 16698 .flatten() 16699 .next() 16700 .unwrap_or(0) 16701 != 0, 16702 performance_counter_query_pools: [features_ffi 16703 .features_performance_query_khr 16704 .map(|s| s.performance_counter_query_pools)] 16705 .into_iter() 16706 .flatten() 16707 .next() 16708 .unwrap_or(0) 16709 != 0, 16710 pipeline_creation_cache_control: [ 16711 features_ffi 16712 .features_vulkan13 16713 .map(|s| s.pipeline_creation_cache_control), 16714 features_ffi 16715 .features_pipeline_creation_cache_control 16716 .map(|s| s.pipeline_creation_cache_control), 16717 ] 16718 .into_iter() 16719 .flatten() 16720 .next() 16721 .unwrap_or(0) 16722 != 0, 16723 pipeline_executable_info: [features_ffi 16724 .features_pipeline_executable_properties_khr 16725 .map(|s| s.pipeline_executable_info)] 16726 .into_iter() 16727 .flatten() 16728 .next() 16729 .unwrap_or(0) 16730 != 0, 16731 pipeline_fragment_shading_rate: [features_ffi 16732 .features_fragment_shading_rate_khr 16733 .map(|s| s.pipeline_fragment_shading_rate)] 16734 .into_iter() 16735 .flatten() 16736 .next() 16737 .unwrap_or(0) 16738 != 0, 16739 pipeline_properties_identifier: [features_ffi 16740 .features_pipeline_properties_ext 16741 .map(|s| s.pipeline_properties_identifier)] 16742 .into_iter() 16743 .flatten() 16744 .next() 16745 .unwrap_or(0) 16746 != 0, 16747 pipeline_protected_access: [features_ffi 16748 .features_pipeline_protected_access_ext 16749 .map(|s| s.pipeline_protected_access)] 16750 .into_iter() 16751 .flatten() 16752 .next() 16753 .unwrap_or(0) 16754 != 0, 16755 pipeline_robustness: [features_ffi 16756 .features_pipeline_robustness_ext 16757 .map(|s| s.pipeline_robustness)] 16758 .into_iter() 16759 .flatten() 16760 .next() 16761 .unwrap_or(0) 16762 != 0, 16763 pipeline_statistics_query: [features_ffi 16764 .features_vulkan10 16765 .features 16766 .pipeline_statistics_query] 16767 .into_iter() 16768 .next() 16769 .unwrap_or(0) 16770 != 0, 16771 point_polygons: [features_ffi 16772 .features_portability_subset_khr 16773 .map(|s| s.point_polygons)] 16774 .into_iter() 16775 .flatten() 16776 .next() 16777 .unwrap_or(0) 16778 != 0, 16779 present_barrier: [features_ffi 16780 .features_present_barrier_nv 16781 .map(|s| s.present_barrier)] 16782 .into_iter() 16783 .flatten() 16784 .next() 16785 .unwrap_or(0) 16786 != 0, 16787 present_id: [features_ffi.features_present_id_khr.map(|s| s.present_id)] 16788 .into_iter() 16789 .flatten() 16790 .next() 16791 .unwrap_or(0) 16792 != 0, 16793 present_wait: [features_ffi 16794 .features_present_wait_khr 16795 .map(|s| s.present_wait)] 16796 .into_iter() 16797 .flatten() 16798 .next() 16799 .unwrap_or(0) 16800 != 0, 16801 primitive_fragment_shading_rate: [features_ffi 16802 .features_fragment_shading_rate_khr 16803 .map(|s| s.primitive_fragment_shading_rate)] 16804 .into_iter() 16805 .flatten() 16806 .next() 16807 .unwrap_or(0) 16808 != 0, 16809 primitive_fragment_shading_rate_mesh_shader: [features_ffi 16810 .features_mesh_shader_ext 16811 .map(|s| s.primitive_fragment_shading_rate_mesh_shader)] 16812 .into_iter() 16813 .flatten() 16814 .next() 16815 .unwrap_or(0) 16816 != 0, 16817 primitive_topology_list_restart: [features_ffi 16818 .features_primitive_topology_list_restart_ext 16819 .map(|s| s.primitive_topology_list_restart)] 16820 .into_iter() 16821 .flatten() 16822 .next() 16823 .unwrap_or(0) 16824 != 0, 16825 primitive_topology_patch_list_restart: [features_ffi 16826 .features_primitive_topology_list_restart_ext 16827 .map(|s| s.primitive_topology_patch_list_restart)] 16828 .into_iter() 16829 .flatten() 16830 .next() 16831 .unwrap_or(0) 16832 != 0, 16833 primitives_generated_query: [features_ffi 16834 .features_primitives_generated_query_ext 16835 .map(|s| s.primitives_generated_query)] 16836 .into_iter() 16837 .flatten() 16838 .next() 16839 .unwrap_or(0) 16840 != 0, 16841 primitives_generated_query_with_non_zero_streams: [features_ffi 16842 .features_primitives_generated_query_ext 16843 .map(|s| s.primitives_generated_query_with_non_zero_streams)] 16844 .into_iter() 16845 .flatten() 16846 .next() 16847 .unwrap_or(0) 16848 != 0, 16849 primitives_generated_query_with_rasterizer_discard: [features_ffi 16850 .features_primitives_generated_query_ext 16851 .map(|s| s.primitives_generated_query_with_rasterizer_discard)] 16852 .into_iter() 16853 .flatten() 16854 .next() 16855 .unwrap_or(0) 16856 != 0, 16857 private_data: [ 16858 features_ffi.features_vulkan13.map(|s| s.private_data), 16859 features_ffi.features_private_data.map(|s| s.private_data), 16860 ] 16861 .into_iter() 16862 .flatten() 16863 .next() 16864 .unwrap_or(0) 16865 != 0, 16866 protected_memory: [ 16867 features_ffi.features_vulkan11.map(|s| s.protected_memory), 16868 features_ffi 16869 .features_protected_memory 16870 .map(|s| s.protected_memory), 16871 ] 16872 .into_iter() 16873 .flatten() 16874 .next() 16875 .unwrap_or(0) 16876 != 0, 16877 provoking_vertex_last: [features_ffi 16878 .features_provoking_vertex_ext 16879 .map(|s| s.provoking_vertex_last)] 16880 .into_iter() 16881 .flatten() 16882 .next() 16883 .unwrap_or(0) 16884 != 0, 16885 rasterization_order_color_attachment_access: [features_ffi 16886 .features_rasterization_order_attachment_access_ext 16887 .map(|s| s.rasterization_order_color_attachment_access)] 16888 .into_iter() 16889 .flatten() 16890 .next() 16891 .unwrap_or(0) 16892 != 0, 16893 rasterization_order_depth_attachment_access: [features_ffi 16894 .features_rasterization_order_attachment_access_ext 16895 .map(|s| s.rasterization_order_depth_attachment_access)] 16896 .into_iter() 16897 .flatten() 16898 .next() 16899 .unwrap_or(0) 16900 != 0, 16901 rasterization_order_stencil_attachment_access: [features_ffi 16902 .features_rasterization_order_attachment_access_ext 16903 .map(|s| s.rasterization_order_stencil_attachment_access)] 16904 .into_iter() 16905 .flatten() 16906 .next() 16907 .unwrap_or(0) 16908 != 0, 16909 ray_query: [features_ffi.features_ray_query_khr.map(|s| s.ray_query)] 16910 .into_iter() 16911 .flatten() 16912 .next() 16913 .unwrap_or(0) 16914 != 0, 16915 ray_tracing_invocation_reorder: [features_ffi 16916 .features_ray_tracing_invocation_reorder_nv 16917 .map(|s| s.ray_tracing_invocation_reorder)] 16918 .into_iter() 16919 .flatten() 16920 .next() 16921 .unwrap_or(0) 16922 != 0, 16923 ray_tracing_maintenance1: [features_ffi 16924 .features_ray_tracing_maintenance1_khr 16925 .map(|s| s.ray_tracing_maintenance1)] 16926 .into_iter() 16927 .flatten() 16928 .next() 16929 .unwrap_or(0) 16930 != 0, 16931 ray_tracing_motion_blur: [features_ffi 16932 .features_ray_tracing_motion_blur_nv 16933 .map(|s| s.ray_tracing_motion_blur)] 16934 .into_iter() 16935 .flatten() 16936 .next() 16937 .unwrap_or(0) 16938 != 0, 16939 ray_tracing_motion_blur_pipeline_trace_rays_indirect: [features_ffi 16940 .features_ray_tracing_motion_blur_nv 16941 .map(|s| s.ray_tracing_motion_blur_pipeline_trace_rays_indirect)] 16942 .into_iter() 16943 .flatten() 16944 .next() 16945 .unwrap_or(0) 16946 != 0, 16947 ray_tracing_pipeline: [features_ffi 16948 .features_ray_tracing_pipeline_khr 16949 .map(|s| s.ray_tracing_pipeline)] 16950 .into_iter() 16951 .flatten() 16952 .next() 16953 .unwrap_or(0) 16954 != 0, 16955 ray_tracing_pipeline_shader_group_handle_capture_replay: [features_ffi 16956 .features_ray_tracing_pipeline_khr 16957 .map(|s| s.ray_tracing_pipeline_shader_group_handle_capture_replay)] 16958 .into_iter() 16959 .flatten() 16960 .next() 16961 .unwrap_or(0) 16962 != 0, 16963 ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: [features_ffi 16964 .features_ray_tracing_pipeline_khr 16965 .map(|s| s.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed)] 16966 .into_iter() 16967 .flatten() 16968 .next() 16969 .unwrap_or(0) 16970 != 0, 16971 ray_tracing_pipeline_trace_rays_indirect: [features_ffi 16972 .features_ray_tracing_pipeline_khr 16973 .map(|s| s.ray_tracing_pipeline_trace_rays_indirect)] 16974 .into_iter() 16975 .flatten() 16976 .next() 16977 .unwrap_or(0) 16978 != 0, 16979 ray_tracing_pipeline_trace_rays_indirect2: [features_ffi 16980 .features_ray_tracing_maintenance1_khr 16981 .map(|s| s.ray_tracing_pipeline_trace_rays_indirect2)] 16982 .into_iter() 16983 .flatten() 16984 .next() 16985 .unwrap_or(0) 16986 != 0, 16987 ray_traversal_primitive_culling: [features_ffi 16988 .features_ray_tracing_pipeline_khr 16989 .map(|s| s.ray_traversal_primitive_culling)] 16990 .into_iter() 16991 .flatten() 16992 .next() 16993 .unwrap_or(0) 16994 != 0, 16995 rectangular_lines: [features_ffi 16996 .features_line_rasterization_ext 16997 .map(|s| s.rectangular_lines)] 16998 .into_iter() 16999 .flatten() 17000 .next() 17001 .unwrap_or(0) 17002 != 0, 17003 report_address_binding: [features_ffi 17004 .features_address_binding_report_ext 17005 .map(|s| s.report_address_binding)] 17006 .into_iter() 17007 .flatten() 17008 .next() 17009 .unwrap_or(0) 17010 != 0, 17011 representative_fragment_test: [features_ffi 17012 .features_representative_fragment_test_nv 17013 .map(|s| s.representative_fragment_test)] 17014 .into_iter() 17015 .flatten() 17016 .next() 17017 .unwrap_or(0) 17018 != 0, 17019 robust_buffer_access: [features_ffi.features_vulkan10.features.robust_buffer_access] 17020 .into_iter() 17021 .next() 17022 .unwrap_or(0) 17023 != 0, 17024 robust_buffer_access2: [features_ffi 17025 .features_robustness2_ext 17026 .map(|s| s.robust_buffer_access2)] 17027 .into_iter() 17028 .flatten() 17029 .next() 17030 .unwrap_or(0) 17031 != 0, 17032 robust_image_access: [ 17033 features_ffi 17034 .features_vulkan13 17035 .map(|s| s.robust_image_access), 17036 features_ffi 17037 .features_image_robustness 17038 .map(|s| s.robust_image_access), 17039 ] 17040 .into_iter() 17041 .flatten() 17042 .next() 17043 .unwrap_or(0) 17044 != 0, 17045 robust_image_access2: [features_ffi 17046 .features_robustness2_ext 17047 .map(|s| s.robust_image_access2)] 17048 .into_iter() 17049 .flatten() 17050 .next() 17051 .unwrap_or(0) 17052 != 0, 17053 runtime_descriptor_array: [ 17054 features_ffi 17055 .features_vulkan12 17056 .map(|s| s.runtime_descriptor_array), 17057 features_ffi 17058 .features_descriptor_indexing 17059 .map(|s| s.runtime_descriptor_array), 17060 ] 17061 .into_iter() 17062 .flatten() 17063 .next() 17064 .unwrap_or(0) 17065 != 0, 17066 sample_rate_shading: [features_ffi.features_vulkan10.features.sample_rate_shading] 17067 .into_iter() 17068 .next() 17069 .unwrap_or(0) 17070 != 0, 17071 sampler2_d_view_of3_d: [features_ffi 17072 .features_image2_d_view_of3_d_ext 17073 .map(|s| s.sampler2_d_view_of3_d)] 17074 .into_iter() 17075 .flatten() 17076 .next() 17077 .unwrap_or(0) 17078 != 0, 17079 sampler_anisotropy: [features_ffi.features_vulkan10.features.sampler_anisotropy] 17080 .into_iter() 17081 .next() 17082 .unwrap_or(0) 17083 != 0, 17084 sampler_filter_minmax: [features_ffi 17085 .features_vulkan12 17086 .map(|s| s.sampler_filter_minmax)] 17087 .into_iter() 17088 .flatten() 17089 .next() 17090 .unwrap_or(0) 17091 != 0, 17092 sampler_mip_lod_bias: [features_ffi 17093 .features_portability_subset_khr 17094 .map(|s| s.sampler_mip_lod_bias)] 17095 .into_iter() 17096 .flatten() 17097 .next() 17098 .unwrap_or(0) 17099 != 0, 17100 sampler_mirror_clamp_to_edge: [features_ffi 17101 .features_vulkan12 17102 .map(|s| s.sampler_mirror_clamp_to_edge)] 17103 .into_iter() 17104 .flatten() 17105 .next() 17106 .unwrap_or(0) 17107 != 0, 17108 sampler_ycbcr_conversion: [ 17109 features_ffi 17110 .features_vulkan11 17111 .map(|s| s.sampler_ycbcr_conversion), 17112 features_ffi 17113 .features_sampler_ycbcr_conversion 17114 .map(|s| s.sampler_ycbcr_conversion), 17115 ] 17116 .into_iter() 17117 .flatten() 17118 .next() 17119 .unwrap_or(0) 17120 != 0, 17121 scalar_block_layout: [ 17122 features_ffi 17123 .features_vulkan12 17124 .map(|s| s.scalar_block_layout), 17125 features_ffi 17126 .features_scalar_block_layout 17127 .map(|s| s.scalar_block_layout), 17128 ] 17129 .into_iter() 17130 .flatten() 17131 .next() 17132 .unwrap_or(0) 17133 != 0, 17134 separate_depth_stencil_layouts: [ 17135 features_ffi 17136 .features_vulkan12 17137 .map(|s| s.separate_depth_stencil_layouts), 17138 features_ffi 17139 .features_separate_depth_stencil_layouts 17140 .map(|s| s.separate_depth_stencil_layouts), 17141 ] 17142 .into_iter() 17143 .flatten() 17144 .next() 17145 .unwrap_or(0) 17146 != 0, 17147 separate_stencil_mask_ref: [features_ffi 17148 .features_portability_subset_khr 17149 .map(|s| s.separate_stencil_mask_ref)] 17150 .into_iter() 17151 .flatten() 17152 .next() 17153 .unwrap_or(0) 17154 != 0, 17155 shader_buffer_float16_atomic_add: [features_ffi 17156 .features_shader_atomic_float2_ext 17157 .map(|s| s.shader_buffer_float16_atomic_add)] 17158 .into_iter() 17159 .flatten() 17160 .next() 17161 .unwrap_or(0) 17162 != 0, 17163 shader_buffer_float16_atomic_min_max: [features_ffi 17164 .features_shader_atomic_float2_ext 17165 .map(|s| s.shader_buffer_float16_atomic_min_max)] 17166 .into_iter() 17167 .flatten() 17168 .next() 17169 .unwrap_or(0) 17170 != 0, 17171 shader_buffer_float16_atomics: [features_ffi 17172 .features_shader_atomic_float2_ext 17173 .map(|s| s.shader_buffer_float16_atomics)] 17174 .into_iter() 17175 .flatten() 17176 .next() 17177 .unwrap_or(0) 17178 != 0, 17179 shader_buffer_float32_atomic_add: [features_ffi 17180 .features_shader_atomic_float_ext 17181 .map(|s| s.shader_buffer_float32_atomic_add)] 17182 .into_iter() 17183 .flatten() 17184 .next() 17185 .unwrap_or(0) 17186 != 0, 17187 shader_buffer_float32_atomic_min_max: [features_ffi 17188 .features_shader_atomic_float2_ext 17189 .map(|s| s.shader_buffer_float32_atomic_min_max)] 17190 .into_iter() 17191 .flatten() 17192 .next() 17193 .unwrap_or(0) 17194 != 0, 17195 shader_buffer_float32_atomics: [features_ffi 17196 .features_shader_atomic_float_ext 17197 .map(|s| s.shader_buffer_float32_atomics)] 17198 .into_iter() 17199 .flatten() 17200 .next() 17201 .unwrap_or(0) 17202 != 0, 17203 shader_buffer_float64_atomic_add: [features_ffi 17204 .features_shader_atomic_float_ext 17205 .map(|s| s.shader_buffer_float64_atomic_add)] 17206 .into_iter() 17207 .flatten() 17208 .next() 17209 .unwrap_or(0) 17210 != 0, 17211 shader_buffer_float64_atomic_min_max: [features_ffi 17212 .features_shader_atomic_float2_ext 17213 .map(|s| s.shader_buffer_float64_atomic_min_max)] 17214 .into_iter() 17215 .flatten() 17216 .next() 17217 .unwrap_or(0) 17218 != 0, 17219 shader_buffer_float64_atomics: [features_ffi 17220 .features_shader_atomic_float_ext 17221 .map(|s| s.shader_buffer_float64_atomics)] 17222 .into_iter() 17223 .flatten() 17224 .next() 17225 .unwrap_or(0) 17226 != 0, 17227 shader_buffer_int64_atomics: [ 17228 features_ffi 17229 .features_vulkan12 17230 .map(|s| s.shader_buffer_int64_atomics), 17231 features_ffi 17232 .features_shader_atomic_int64 17233 .map(|s| s.shader_buffer_int64_atomics), 17234 ] 17235 .into_iter() 17236 .flatten() 17237 .next() 17238 .unwrap_or(0) 17239 != 0, 17240 shader_clip_distance: [features_ffi.features_vulkan10.features.shader_clip_distance] 17241 .into_iter() 17242 .next() 17243 .unwrap_or(0) 17244 != 0, 17245 shader_core_builtins: [features_ffi 17246 .features_shader_core_builtins_arm 17247 .map(|s| s.shader_core_builtins)] 17248 .into_iter() 17249 .flatten() 17250 .next() 17251 .unwrap_or(0) 17252 != 0, 17253 shader_cull_distance: [features_ffi.features_vulkan10.features.shader_cull_distance] 17254 .into_iter() 17255 .next() 17256 .unwrap_or(0) 17257 != 0, 17258 shader_demote_to_helper_invocation: [ 17259 features_ffi 17260 .features_vulkan13 17261 .map(|s| s.shader_demote_to_helper_invocation), 17262 features_ffi 17263 .features_shader_demote_to_helper_invocation 17264 .map(|s| s.shader_demote_to_helper_invocation), 17265 ] 17266 .into_iter() 17267 .flatten() 17268 .next() 17269 .unwrap_or(0) 17270 != 0, 17271 shader_device_clock: [features_ffi 17272 .features_shader_clock_khr 17273 .map(|s| s.shader_device_clock)] 17274 .into_iter() 17275 .flatten() 17276 .next() 17277 .unwrap_or(0) 17278 != 0, 17279 shader_draw_parameters: [ 17280 features_ffi 17281 .features_vulkan11 17282 .map(|s| s.shader_draw_parameters), 17283 features_ffi 17284 .features_shader_draw_parameters 17285 .map(|s| s.shader_draw_parameters), 17286 ] 17287 .into_iter() 17288 .flatten() 17289 .next() 17290 .unwrap_or(0) 17291 != 0, 17292 shader_early_and_late_fragment_tests: [features_ffi 17293 .features_shader_early_and_late_fragment_tests_amd 17294 .map(|s| s.shader_early_and_late_fragment_tests)] 17295 .into_iter() 17296 .flatten() 17297 .next() 17298 .unwrap_or(0) 17299 != 0, 17300 shader_float16: [ 17301 features_ffi.features_vulkan12.map(|s| s.shader_float16), 17302 features_ffi 17303 .features_shader_float16_int8 17304 .map(|s| s.shader_float16), 17305 ] 17306 .into_iter() 17307 .flatten() 17308 .next() 17309 .unwrap_or(0) 17310 != 0, 17311 shader_float64: [features_ffi.features_vulkan10.features.shader_float64] 17312 .into_iter() 17313 .next() 17314 .unwrap_or(0) 17315 != 0, 17316 shader_image_float32_atomic_add: [features_ffi 17317 .features_shader_atomic_float_ext 17318 .map(|s| s.shader_image_float32_atomic_add)] 17319 .into_iter() 17320 .flatten() 17321 .next() 17322 .unwrap_or(0) 17323 != 0, 17324 shader_image_float32_atomic_min_max: [features_ffi 17325 .features_shader_atomic_float2_ext 17326 .map(|s| s.shader_image_float32_atomic_min_max)] 17327 .into_iter() 17328 .flatten() 17329 .next() 17330 .unwrap_or(0) 17331 != 0, 17332 shader_image_float32_atomics: [features_ffi 17333 .features_shader_atomic_float_ext 17334 .map(|s| s.shader_image_float32_atomics)] 17335 .into_iter() 17336 .flatten() 17337 .next() 17338 .unwrap_or(0) 17339 != 0, 17340 shader_image_gather_extended: [features_ffi 17341 .features_vulkan10 17342 .features 17343 .shader_image_gather_extended] 17344 .into_iter() 17345 .next() 17346 .unwrap_or(0) 17347 != 0, 17348 shader_image_int64_atomics: [features_ffi 17349 .features_shader_image_atomic_int64_ext 17350 .map(|s| s.shader_image_int64_atomics)] 17351 .into_iter() 17352 .flatten() 17353 .next() 17354 .unwrap_or(0) 17355 != 0, 17356 shader_input_attachment_array_dynamic_indexing: [ 17357 features_ffi 17358 .features_vulkan12 17359 .map(|s| s.shader_input_attachment_array_dynamic_indexing), 17360 features_ffi 17361 .features_descriptor_indexing 17362 .map(|s| s.shader_input_attachment_array_dynamic_indexing), 17363 ] 17364 .into_iter() 17365 .flatten() 17366 .next() 17367 .unwrap_or(0) 17368 != 0, 17369 shader_input_attachment_array_non_uniform_indexing: [ 17370 features_ffi 17371 .features_vulkan12 17372 .map(|s| s.shader_input_attachment_array_non_uniform_indexing), 17373 features_ffi 17374 .features_descriptor_indexing 17375 .map(|s| s.shader_input_attachment_array_non_uniform_indexing), 17376 ] 17377 .into_iter() 17378 .flatten() 17379 .next() 17380 .unwrap_or(0) 17381 != 0, 17382 shader_int16: [features_ffi.features_vulkan10.features.shader_int16] 17383 .into_iter() 17384 .next() 17385 .unwrap_or(0) 17386 != 0, 17387 shader_int64: [features_ffi.features_vulkan10.features.shader_int64] 17388 .into_iter() 17389 .next() 17390 .unwrap_or(0) 17391 != 0, 17392 shader_int8: [ 17393 features_ffi.features_vulkan12.map(|s| s.shader_int8), 17394 features_ffi 17395 .features_shader_float16_int8 17396 .map(|s| s.shader_int8), 17397 ] 17398 .into_iter() 17399 .flatten() 17400 .next() 17401 .unwrap_or(0) 17402 != 0, 17403 shader_integer_dot_product: [ 17404 features_ffi 17405 .features_vulkan13 17406 .map(|s| s.shader_integer_dot_product), 17407 features_ffi 17408 .features_shader_integer_dot_product 17409 .map(|s| s.shader_integer_dot_product), 17410 ] 17411 .into_iter() 17412 .flatten() 17413 .next() 17414 .unwrap_or(0) 17415 != 0, 17416 shader_integer_functions2: [features_ffi 17417 .features_shader_integer_functions2_intel 17418 .map(|s| s.shader_integer_functions2)] 17419 .into_iter() 17420 .flatten() 17421 .next() 17422 .unwrap_or(0) 17423 != 0, 17424 shader_module_identifier: [features_ffi 17425 .features_shader_module_identifier_ext 17426 .map(|s| s.shader_module_identifier)] 17427 .into_iter() 17428 .flatten() 17429 .next() 17430 .unwrap_or(0) 17431 != 0, 17432 shader_output_layer: [features_ffi 17433 .features_vulkan12 17434 .map(|s| s.shader_output_layer)] 17435 .into_iter() 17436 .flatten() 17437 .next() 17438 .unwrap_or(0) 17439 != 0, 17440 shader_output_viewport_index: [features_ffi 17441 .features_vulkan12 17442 .map(|s| s.shader_output_viewport_index)] 17443 .into_iter() 17444 .flatten() 17445 .next() 17446 .unwrap_or(0) 17447 != 0, 17448 shader_resource_min_lod: [features_ffi 17449 .features_vulkan10 17450 .features 17451 .shader_resource_min_lod] 17452 .into_iter() 17453 .next() 17454 .unwrap_or(0) 17455 != 0, 17456 shader_resource_residency: [features_ffi 17457 .features_vulkan10 17458 .features 17459 .shader_resource_residency] 17460 .into_iter() 17461 .next() 17462 .unwrap_or(0) 17463 != 0, 17464 shader_sample_rate_interpolation_functions: [features_ffi 17465 .features_portability_subset_khr 17466 .map(|s| s.shader_sample_rate_interpolation_functions)] 17467 .into_iter() 17468 .flatten() 17469 .next() 17470 .unwrap_or(0) 17471 != 0, 17472 shader_sampled_image_array_dynamic_indexing: [features_ffi 17473 .features_vulkan10 17474 .features 17475 .shader_sampled_image_array_dynamic_indexing] 17476 .into_iter() 17477 .next() 17478 .unwrap_or(0) 17479 != 0, 17480 shader_sampled_image_array_non_uniform_indexing: [ 17481 features_ffi 17482 .features_vulkan12 17483 .map(|s| s.shader_sampled_image_array_non_uniform_indexing), 17484 features_ffi 17485 .features_descriptor_indexing 17486 .map(|s| s.shader_sampled_image_array_non_uniform_indexing), 17487 ] 17488 .into_iter() 17489 .flatten() 17490 .next() 17491 .unwrap_or(0) 17492 != 0, 17493 shader_shared_float16_atomic_add: [features_ffi 17494 .features_shader_atomic_float2_ext 17495 .map(|s| s.shader_shared_float16_atomic_add)] 17496 .into_iter() 17497 .flatten() 17498 .next() 17499 .unwrap_or(0) 17500 != 0, 17501 shader_shared_float16_atomic_min_max: [features_ffi 17502 .features_shader_atomic_float2_ext 17503 .map(|s| s.shader_shared_float16_atomic_min_max)] 17504 .into_iter() 17505 .flatten() 17506 .next() 17507 .unwrap_or(0) 17508 != 0, 17509 shader_shared_float16_atomics: [features_ffi 17510 .features_shader_atomic_float2_ext 17511 .map(|s| s.shader_shared_float16_atomics)] 17512 .into_iter() 17513 .flatten() 17514 .next() 17515 .unwrap_or(0) 17516 != 0, 17517 shader_shared_float32_atomic_add: [features_ffi 17518 .features_shader_atomic_float_ext 17519 .map(|s| s.shader_shared_float32_atomic_add)] 17520 .into_iter() 17521 .flatten() 17522 .next() 17523 .unwrap_or(0) 17524 != 0, 17525 shader_shared_float32_atomic_min_max: [features_ffi 17526 .features_shader_atomic_float2_ext 17527 .map(|s| s.shader_shared_float32_atomic_min_max)] 17528 .into_iter() 17529 .flatten() 17530 .next() 17531 .unwrap_or(0) 17532 != 0, 17533 shader_shared_float32_atomics: [features_ffi 17534 .features_shader_atomic_float_ext 17535 .map(|s| s.shader_shared_float32_atomics)] 17536 .into_iter() 17537 .flatten() 17538 .next() 17539 .unwrap_or(0) 17540 != 0, 17541 shader_shared_float64_atomic_add: [features_ffi 17542 .features_shader_atomic_float_ext 17543 .map(|s| s.shader_shared_float64_atomic_add)] 17544 .into_iter() 17545 .flatten() 17546 .next() 17547 .unwrap_or(0) 17548 != 0, 17549 shader_shared_float64_atomic_min_max: [features_ffi 17550 .features_shader_atomic_float2_ext 17551 .map(|s| s.shader_shared_float64_atomic_min_max)] 17552 .into_iter() 17553 .flatten() 17554 .next() 17555 .unwrap_or(0) 17556 != 0, 17557 shader_shared_float64_atomics: [features_ffi 17558 .features_shader_atomic_float_ext 17559 .map(|s| s.shader_shared_float64_atomics)] 17560 .into_iter() 17561 .flatten() 17562 .next() 17563 .unwrap_or(0) 17564 != 0, 17565 shader_shared_int64_atomics: [ 17566 features_ffi 17567 .features_vulkan12 17568 .map(|s| s.shader_shared_int64_atomics), 17569 features_ffi 17570 .features_shader_atomic_int64 17571 .map(|s| s.shader_shared_int64_atomics), 17572 ] 17573 .into_iter() 17574 .flatten() 17575 .next() 17576 .unwrap_or(0) 17577 != 0, 17578 shader_sm_builtins: [features_ffi 17579 .features_shader_sm_builtins_nv 17580 .map(|s| s.shader_sm_builtins)] 17581 .into_iter() 17582 .flatten() 17583 .next() 17584 .unwrap_or(0) 17585 != 0, 17586 shader_storage_buffer_array_dynamic_indexing: [features_ffi 17587 .features_vulkan10 17588 .features 17589 .shader_storage_buffer_array_dynamic_indexing] 17590 .into_iter() 17591 .next() 17592 .unwrap_or(0) 17593 != 0, 17594 shader_storage_buffer_array_non_uniform_indexing: [ 17595 features_ffi 17596 .features_vulkan12 17597 .map(|s| s.shader_storage_buffer_array_non_uniform_indexing), 17598 features_ffi 17599 .features_descriptor_indexing 17600 .map(|s| s.shader_storage_buffer_array_non_uniform_indexing), 17601 ] 17602 .into_iter() 17603 .flatten() 17604 .next() 17605 .unwrap_or(0) 17606 != 0, 17607 shader_storage_image_array_dynamic_indexing: [features_ffi 17608 .features_vulkan10 17609 .features 17610 .shader_storage_image_array_dynamic_indexing] 17611 .into_iter() 17612 .next() 17613 .unwrap_or(0) 17614 != 0, 17615 shader_storage_image_array_non_uniform_indexing: [ 17616 features_ffi 17617 .features_vulkan12 17618 .map(|s| s.shader_storage_image_array_non_uniform_indexing), 17619 features_ffi 17620 .features_descriptor_indexing 17621 .map(|s| s.shader_storage_image_array_non_uniform_indexing), 17622 ] 17623 .into_iter() 17624 .flatten() 17625 .next() 17626 .unwrap_or(0) 17627 != 0, 17628 shader_storage_image_extended_formats: [features_ffi 17629 .features_vulkan10 17630 .features 17631 .shader_storage_image_extended_formats] 17632 .into_iter() 17633 .next() 17634 .unwrap_or(0) 17635 != 0, 17636 shader_storage_image_multisample: [features_ffi 17637 .features_vulkan10 17638 .features 17639 .shader_storage_image_multisample] 17640 .into_iter() 17641 .next() 17642 .unwrap_or(0) 17643 != 0, 17644 shader_storage_image_read_without_format: [features_ffi 17645 .features_vulkan10 17646 .features 17647 .shader_storage_image_read_without_format] 17648 .into_iter() 17649 .next() 17650 .unwrap_or(0) 17651 != 0, 17652 shader_storage_image_write_without_format: [features_ffi 17653 .features_vulkan10 17654 .features 17655 .shader_storage_image_write_without_format] 17656 .into_iter() 17657 .next() 17658 .unwrap_or(0) 17659 != 0, 17660 shader_storage_texel_buffer_array_dynamic_indexing: [ 17661 features_ffi 17662 .features_vulkan12 17663 .map(|s| s.shader_storage_texel_buffer_array_dynamic_indexing), 17664 features_ffi 17665 .features_descriptor_indexing 17666 .map(|s| s.shader_storage_texel_buffer_array_dynamic_indexing), 17667 ] 17668 .into_iter() 17669 .flatten() 17670 .next() 17671 .unwrap_or(0) 17672 != 0, 17673 shader_storage_texel_buffer_array_non_uniform_indexing: [ 17674 features_ffi 17675 .features_vulkan12 17676 .map(|s| s.shader_storage_texel_buffer_array_non_uniform_indexing), 17677 features_ffi 17678 .features_descriptor_indexing 17679 .map(|s| s.shader_storage_texel_buffer_array_non_uniform_indexing), 17680 ] 17681 .into_iter() 17682 .flatten() 17683 .next() 17684 .unwrap_or(0) 17685 != 0, 17686 shader_subgroup_clock: [features_ffi 17687 .features_shader_clock_khr 17688 .map(|s| s.shader_subgroup_clock)] 17689 .into_iter() 17690 .flatten() 17691 .next() 17692 .unwrap_or(0) 17693 != 0, 17694 shader_subgroup_extended_types: [ 17695 features_ffi 17696 .features_vulkan12 17697 .map(|s| s.shader_subgroup_extended_types), 17698 features_ffi 17699 .features_shader_subgroup_extended_types 17700 .map(|s| s.shader_subgroup_extended_types), 17701 ] 17702 .into_iter() 17703 .flatten() 17704 .next() 17705 .unwrap_or(0) 17706 != 0, 17707 shader_subgroup_uniform_control_flow: [features_ffi 17708 .features_shader_subgroup_uniform_control_flow_khr 17709 .map(|s| s.shader_subgroup_uniform_control_flow)] 17710 .into_iter() 17711 .flatten() 17712 .next() 17713 .unwrap_or(0) 17714 != 0, 17715 shader_terminate_invocation: [ 17716 features_ffi 17717 .features_vulkan13 17718 .map(|s| s.shader_terminate_invocation), 17719 features_ffi 17720 .features_shader_terminate_invocation 17721 .map(|s| s.shader_terminate_invocation), 17722 ] 17723 .into_iter() 17724 .flatten() 17725 .next() 17726 .unwrap_or(0) 17727 != 0, 17728 shader_tessellation_and_geometry_point_size: [features_ffi 17729 .features_vulkan10 17730 .features 17731 .shader_tessellation_and_geometry_point_size] 17732 .into_iter() 17733 .next() 17734 .unwrap_or(0) 17735 != 0, 17736 shader_uniform_buffer_array_dynamic_indexing: [features_ffi 17737 .features_vulkan10 17738 .features 17739 .shader_uniform_buffer_array_dynamic_indexing] 17740 .into_iter() 17741 .next() 17742 .unwrap_or(0) 17743 != 0, 17744 shader_uniform_buffer_array_non_uniform_indexing: [ 17745 features_ffi 17746 .features_vulkan12 17747 .map(|s| s.shader_uniform_buffer_array_non_uniform_indexing), 17748 features_ffi 17749 .features_descriptor_indexing 17750 .map(|s| s.shader_uniform_buffer_array_non_uniform_indexing), 17751 ] 17752 .into_iter() 17753 .flatten() 17754 .next() 17755 .unwrap_or(0) 17756 != 0, 17757 shader_uniform_texel_buffer_array_dynamic_indexing: [ 17758 features_ffi 17759 .features_vulkan12 17760 .map(|s| s.shader_uniform_texel_buffer_array_dynamic_indexing), 17761 features_ffi 17762 .features_descriptor_indexing 17763 .map(|s| s.shader_uniform_texel_buffer_array_dynamic_indexing), 17764 ] 17765 .into_iter() 17766 .flatten() 17767 .next() 17768 .unwrap_or(0) 17769 != 0, 17770 shader_uniform_texel_buffer_array_non_uniform_indexing: [ 17771 features_ffi 17772 .features_vulkan12 17773 .map(|s| s.shader_uniform_texel_buffer_array_non_uniform_indexing), 17774 features_ffi 17775 .features_descriptor_indexing 17776 .map(|s| s.shader_uniform_texel_buffer_array_non_uniform_indexing), 17777 ] 17778 .into_iter() 17779 .flatten() 17780 .next() 17781 .unwrap_or(0) 17782 != 0, 17783 shader_zero_initialize_workgroup_memory: [ 17784 features_ffi 17785 .features_vulkan13 17786 .map(|s| s.shader_zero_initialize_workgroup_memory), 17787 features_ffi 17788 .features_zero_initialize_workgroup_memory 17789 .map(|s| s.shader_zero_initialize_workgroup_memory), 17790 ] 17791 .into_iter() 17792 .flatten() 17793 .next() 17794 .unwrap_or(0) 17795 != 0, 17796 shading_rate_coarse_sample_order: [features_ffi 17797 .features_shading_rate_image_nv 17798 .map(|s| s.shading_rate_coarse_sample_order)] 17799 .into_iter() 17800 .flatten() 17801 .next() 17802 .unwrap_or(0) 17803 != 0, 17804 shading_rate_image: [features_ffi 17805 .features_shading_rate_image_nv 17806 .map(|s| s.shading_rate_image)] 17807 .into_iter() 17808 .flatten() 17809 .next() 17810 .unwrap_or(0) 17811 != 0, 17812 smooth_lines: [features_ffi 17813 .features_line_rasterization_ext 17814 .map(|s| s.smooth_lines)] 17815 .into_iter() 17816 .flatten() 17817 .next() 17818 .unwrap_or(0) 17819 != 0, 17820 sparse_binding: [features_ffi.features_vulkan10.features.sparse_binding] 17821 .into_iter() 17822 .next() 17823 .unwrap_or(0) 17824 != 0, 17825 sparse_image_float32_atomic_add: [features_ffi 17826 .features_shader_atomic_float_ext 17827 .map(|s| s.sparse_image_float32_atomic_add)] 17828 .into_iter() 17829 .flatten() 17830 .next() 17831 .unwrap_or(0) 17832 != 0, 17833 sparse_image_float32_atomic_min_max: [features_ffi 17834 .features_shader_atomic_float2_ext 17835 .map(|s| s.sparse_image_float32_atomic_min_max)] 17836 .into_iter() 17837 .flatten() 17838 .next() 17839 .unwrap_or(0) 17840 != 0, 17841 sparse_image_float32_atomics: [features_ffi 17842 .features_shader_atomic_float_ext 17843 .map(|s| s.sparse_image_float32_atomics)] 17844 .into_iter() 17845 .flatten() 17846 .next() 17847 .unwrap_or(0) 17848 != 0, 17849 sparse_image_int64_atomics: [features_ffi 17850 .features_shader_image_atomic_int64_ext 17851 .map(|s| s.sparse_image_int64_atomics)] 17852 .into_iter() 17853 .flatten() 17854 .next() 17855 .unwrap_or(0) 17856 != 0, 17857 sparse_residency16_samples: [features_ffi 17858 .features_vulkan10 17859 .features 17860 .sparse_residency16_samples] 17861 .into_iter() 17862 .next() 17863 .unwrap_or(0) 17864 != 0, 17865 sparse_residency2_samples: [features_ffi 17866 .features_vulkan10 17867 .features 17868 .sparse_residency2_samples] 17869 .into_iter() 17870 .next() 17871 .unwrap_or(0) 17872 != 0, 17873 sparse_residency4_samples: [features_ffi 17874 .features_vulkan10 17875 .features 17876 .sparse_residency4_samples] 17877 .into_iter() 17878 .next() 17879 .unwrap_or(0) 17880 != 0, 17881 sparse_residency8_samples: [features_ffi 17882 .features_vulkan10 17883 .features 17884 .sparse_residency8_samples] 17885 .into_iter() 17886 .next() 17887 .unwrap_or(0) 17888 != 0, 17889 sparse_residency_aliased: [features_ffi 17890 .features_vulkan10 17891 .features 17892 .sparse_residency_aliased] 17893 .into_iter() 17894 .next() 17895 .unwrap_or(0) 17896 != 0, 17897 sparse_residency_buffer: [features_ffi 17898 .features_vulkan10 17899 .features 17900 .sparse_residency_buffer] 17901 .into_iter() 17902 .next() 17903 .unwrap_or(0) 17904 != 0, 17905 sparse_residency_image2_d: [features_ffi 17906 .features_vulkan10 17907 .features 17908 .sparse_residency_image2_d] 17909 .into_iter() 17910 .next() 17911 .unwrap_or(0) 17912 != 0, 17913 sparse_residency_image3_d: [features_ffi 17914 .features_vulkan10 17915 .features 17916 .sparse_residency_image3_d] 17917 .into_iter() 17918 .next() 17919 .unwrap_or(0) 17920 != 0, 17921 stippled_bresenham_lines: [features_ffi 17922 .features_line_rasterization_ext 17923 .map(|s| s.stippled_bresenham_lines)] 17924 .into_iter() 17925 .flatten() 17926 .next() 17927 .unwrap_or(0) 17928 != 0, 17929 stippled_rectangular_lines: [features_ffi 17930 .features_line_rasterization_ext 17931 .map(|s| s.stippled_rectangular_lines)] 17932 .into_iter() 17933 .flatten() 17934 .next() 17935 .unwrap_or(0) 17936 != 0, 17937 stippled_smooth_lines: [features_ffi 17938 .features_line_rasterization_ext 17939 .map(|s| s.stippled_smooth_lines)] 17940 .into_iter() 17941 .flatten() 17942 .next() 17943 .unwrap_or(0) 17944 != 0, 17945 storage_buffer16_bit_access: [ 17946 features_ffi 17947 .features_vulkan11 17948 .map(|s| s.storage_buffer16_bit_access), 17949 features_ffi 17950 .features_16bit_storage 17951 .map(|s| s.storage_buffer16_bit_access), 17952 ] 17953 .into_iter() 17954 .flatten() 17955 .next() 17956 .unwrap_or(0) 17957 != 0, 17958 storage_buffer8_bit_access: [ 17959 features_ffi 17960 .features_vulkan12 17961 .map(|s| s.storage_buffer8_bit_access), 17962 features_ffi 17963 .features_8bit_storage 17964 .map(|s| s.storage_buffer8_bit_access), 17965 ] 17966 .into_iter() 17967 .flatten() 17968 .next() 17969 .unwrap_or(0) 17970 != 0, 17971 storage_input_output16: [ 17972 features_ffi 17973 .features_vulkan11 17974 .map(|s| s.storage_input_output16), 17975 features_ffi 17976 .features_16bit_storage 17977 .map(|s| s.storage_input_output16), 17978 ] 17979 .into_iter() 17980 .flatten() 17981 .next() 17982 .unwrap_or(0) 17983 != 0, 17984 storage_push_constant16: [ 17985 features_ffi 17986 .features_vulkan11 17987 .map(|s| s.storage_push_constant16), 17988 features_ffi 17989 .features_16bit_storage 17990 .map(|s| s.storage_push_constant16), 17991 ] 17992 .into_iter() 17993 .flatten() 17994 .next() 17995 .unwrap_or(0) 17996 != 0, 17997 storage_push_constant8: [ 17998 features_ffi 17999 .features_vulkan12 18000 .map(|s| s.storage_push_constant8), 18001 features_ffi 18002 .features_8bit_storage 18003 .map(|s| s.storage_push_constant8), 18004 ] 18005 .into_iter() 18006 .flatten() 18007 .next() 18008 .unwrap_or(0) 18009 != 0, 18010 subgroup_broadcast_dynamic_id: [features_ffi 18011 .features_vulkan12 18012 .map(|s| s.subgroup_broadcast_dynamic_id)] 18013 .into_iter() 18014 .flatten() 18015 .next() 18016 .unwrap_or(0) 18017 != 0, 18018 subgroup_size_control: [ 18019 features_ffi 18020 .features_vulkan13 18021 .map(|s| s.subgroup_size_control), 18022 features_ffi 18023 .features_subgroup_size_control 18024 .map(|s| s.subgroup_size_control), 18025 ] 18026 .into_iter() 18027 .flatten() 18028 .next() 18029 .unwrap_or(0) 18030 != 0, 18031 subpass_merge_feedback: [features_ffi 18032 .features_subpass_merge_feedback_ext 18033 .map(|s| s.subpass_merge_feedback)] 18034 .into_iter() 18035 .flatten() 18036 .next() 18037 .unwrap_or(0) 18038 != 0, 18039 subpass_shading: [features_ffi 18040 .features_subpass_shading_huawei 18041 .map(|s| s.subpass_shading)] 18042 .into_iter() 18043 .flatten() 18044 .next() 18045 .unwrap_or(0) 18046 != 0, 18047 supersample_fragment_shading_rates: [features_ffi 18048 .features_fragment_shading_rate_enums_nv 18049 .map(|s| s.supersample_fragment_shading_rates)] 18050 .into_iter() 18051 .flatten() 18052 .next() 18053 .unwrap_or(0) 18054 != 0, 18055 swapchain_maintenance1: [features_ffi 18056 .features_swapchain_maintenance1_ext 18057 .map(|s| s.swapchain_maintenance1)] 18058 .into_iter() 18059 .flatten() 18060 .next() 18061 .unwrap_or(0) 18062 != 0, 18063 synchronization2: [ 18064 features_ffi.features_vulkan13.map(|s| s.synchronization2), 18065 features_ffi 18066 .features_synchronization2 18067 .map(|s| s.synchronization2), 18068 ] 18069 .into_iter() 18070 .flatten() 18071 .next() 18072 .unwrap_or(0) 18073 != 0, 18074 task_shader: [ 18075 features_ffi.features_mesh_shader_ext.map(|s| s.task_shader), 18076 features_ffi.features_mesh_shader_nv.map(|s| s.task_shader), 18077 ] 18078 .into_iter() 18079 .flatten() 18080 .next() 18081 .unwrap_or(0) 18082 != 0, 18083 tessellation_isolines: [features_ffi 18084 .features_portability_subset_khr 18085 .map(|s| s.tessellation_isolines)] 18086 .into_iter() 18087 .flatten() 18088 .next() 18089 .unwrap_or(0) 18090 != 0, 18091 tessellation_point_mode: [features_ffi 18092 .features_portability_subset_khr 18093 .map(|s| s.tessellation_point_mode)] 18094 .into_iter() 18095 .flatten() 18096 .next() 18097 .unwrap_or(0) 18098 != 0, 18099 tessellation_shader: [features_ffi.features_vulkan10.features.tessellation_shader] 18100 .into_iter() 18101 .next() 18102 .unwrap_or(0) 18103 != 0, 18104 texel_buffer_alignment: [features_ffi 18105 .features_texel_buffer_alignment_ext 18106 .map(|s| s.texel_buffer_alignment)] 18107 .into_iter() 18108 .flatten() 18109 .next() 18110 .unwrap_or(0) 18111 != 0, 18112 texture_block_match: [features_ffi 18113 .features_image_processing_qcom 18114 .map(|s| s.texture_block_match)] 18115 .into_iter() 18116 .flatten() 18117 .next() 18118 .unwrap_or(0) 18119 != 0, 18120 texture_box_filter: [features_ffi 18121 .features_image_processing_qcom 18122 .map(|s| s.texture_box_filter)] 18123 .into_iter() 18124 .flatten() 18125 .next() 18126 .unwrap_or(0) 18127 != 0, 18128 texture_compression_astc_hdr: [ 18129 features_ffi 18130 .features_vulkan13 18131 .map(|s| s.texture_compression_astc_hdr), 18132 features_ffi 18133 .features_texture_compression_astchdr 18134 .map(|s| s.texture_compression_astc_hdr), 18135 ] 18136 .into_iter() 18137 .flatten() 18138 .next() 18139 .unwrap_or(0) 18140 != 0, 18141 texture_compression_astc_ldr: [features_ffi 18142 .features_vulkan10 18143 .features 18144 .texture_compression_astc_ldr] 18145 .into_iter() 18146 .next() 18147 .unwrap_or(0) 18148 != 0, 18149 texture_compression_bc: [features_ffi 18150 .features_vulkan10 18151 .features 18152 .texture_compression_bc] 18153 .into_iter() 18154 .next() 18155 .unwrap_or(0) 18156 != 0, 18157 texture_compression_etc2: [features_ffi 18158 .features_vulkan10 18159 .features 18160 .texture_compression_etc2] 18161 .into_iter() 18162 .next() 18163 .unwrap_or(0) 18164 != 0, 18165 texture_sample_weighted: [features_ffi 18166 .features_image_processing_qcom 18167 .map(|s| s.texture_sample_weighted)] 18168 .into_iter() 18169 .flatten() 18170 .next() 18171 .unwrap_or(0) 18172 != 0, 18173 tile_properties: [features_ffi 18174 .features_tile_properties_qcom 18175 .map(|s| s.tile_properties)] 18176 .into_iter() 18177 .flatten() 18178 .next() 18179 .unwrap_or(0) 18180 != 0, 18181 timeline_semaphore: [ 18182 features_ffi.features_vulkan12.map(|s| s.timeline_semaphore), 18183 features_ffi 18184 .features_timeline_semaphore 18185 .map(|s| s.timeline_semaphore), 18186 ] 18187 .into_iter() 18188 .flatten() 18189 .next() 18190 .unwrap_or(0) 18191 != 0, 18192 transform_feedback: [features_ffi 18193 .features_transform_feedback_ext 18194 .map(|s| s.transform_feedback)] 18195 .into_iter() 18196 .flatten() 18197 .next() 18198 .unwrap_or(0) 18199 != 0, 18200 transform_feedback_preserves_provoking_vertex: [features_ffi 18201 .features_provoking_vertex_ext 18202 .map(|s| s.transform_feedback_preserves_provoking_vertex)] 18203 .into_iter() 18204 .flatten() 18205 .next() 18206 .unwrap_or(0) 18207 != 0, 18208 triangle_fans: [features_ffi 18209 .features_portability_subset_khr 18210 .map(|s| s.triangle_fans)] 18211 .into_iter() 18212 .flatten() 18213 .next() 18214 .unwrap_or(0) 18215 != 0, 18216 uniform_and_storage_buffer16_bit_access: [ 18217 features_ffi 18218 .features_vulkan11 18219 .map(|s| s.uniform_and_storage_buffer16_bit_access), 18220 features_ffi 18221 .features_16bit_storage 18222 .map(|s| s.uniform_and_storage_buffer16_bit_access), 18223 ] 18224 .into_iter() 18225 .flatten() 18226 .next() 18227 .unwrap_or(0) 18228 != 0, 18229 uniform_and_storage_buffer8_bit_access: [ 18230 features_ffi 18231 .features_vulkan12 18232 .map(|s| s.uniform_and_storage_buffer8_bit_access), 18233 features_ffi 18234 .features_8bit_storage 18235 .map(|s| s.uniform_and_storage_buffer8_bit_access), 18236 ] 18237 .into_iter() 18238 .flatten() 18239 .next() 18240 .unwrap_or(0) 18241 != 0, 18242 uniform_buffer_standard_layout: [ 18243 features_ffi 18244 .features_vulkan12 18245 .map(|s| s.uniform_buffer_standard_layout), 18246 features_ffi 18247 .features_uniform_buffer_standard_layout 18248 .map(|s| s.uniform_buffer_standard_layout), 18249 ] 18250 .into_iter() 18251 .flatten() 18252 .next() 18253 .unwrap_or(0) 18254 != 0, 18255 variable_multisample_rate: [features_ffi 18256 .features_vulkan10 18257 .features 18258 .variable_multisample_rate] 18259 .into_iter() 18260 .next() 18261 .unwrap_or(0) 18262 != 0, 18263 variable_pointers: [ 18264 features_ffi.features_vulkan11.map(|s| s.variable_pointers), 18265 features_ffi 18266 .features_variable_pointers 18267 .map(|s| s.variable_pointers), 18268 ] 18269 .into_iter() 18270 .flatten() 18271 .next() 18272 .unwrap_or(0) 18273 != 0, 18274 variable_pointers_storage_buffer: [ 18275 features_ffi 18276 .features_vulkan11 18277 .map(|s| s.variable_pointers_storage_buffer), 18278 features_ffi 18279 .features_variable_pointers 18280 .map(|s| s.variable_pointers_storage_buffer), 18281 ] 18282 .into_iter() 18283 .flatten() 18284 .next() 18285 .unwrap_or(0) 18286 != 0, 18287 vertex_attribute_access_beyond_stride: [features_ffi 18288 .features_portability_subset_khr 18289 .map(|s| s.vertex_attribute_access_beyond_stride)] 18290 .into_iter() 18291 .flatten() 18292 .next() 18293 .unwrap_or(0) 18294 != 0, 18295 vertex_attribute_instance_rate_divisor: [features_ffi 18296 .features_vertex_attribute_divisor_ext 18297 .map(|s| s.vertex_attribute_instance_rate_divisor)] 18298 .into_iter() 18299 .flatten() 18300 .next() 18301 .unwrap_or(0) 18302 != 0, 18303 vertex_attribute_instance_rate_zero_divisor: [features_ffi 18304 .features_vertex_attribute_divisor_ext 18305 .map(|s| s.vertex_attribute_instance_rate_zero_divisor)] 18306 .into_iter() 18307 .flatten() 18308 .next() 18309 .unwrap_or(0) 18310 != 0, 18311 vertex_input_dynamic_state: [features_ffi 18312 .features_vertex_input_dynamic_state_ext 18313 .map(|s| s.vertex_input_dynamic_state)] 18314 .into_iter() 18315 .flatten() 18316 .next() 18317 .unwrap_or(0) 18318 != 0, 18319 vertex_pipeline_stores_and_atomics: [features_ffi 18320 .features_vulkan10 18321 .features 18322 .vertex_pipeline_stores_and_atomics] 18323 .into_iter() 18324 .next() 18325 .unwrap_or(0) 18326 != 0, 18327 vulkan_memory_model: [ 18328 features_ffi 18329 .features_vulkan12 18330 .map(|s| s.vulkan_memory_model), 18331 features_ffi 18332 .features_vulkan_memory_model 18333 .map(|s| s.vulkan_memory_model), 18334 ] 18335 .into_iter() 18336 .flatten() 18337 .next() 18338 .unwrap_or(0) 18339 != 0, 18340 vulkan_memory_model_availability_visibility_chains: [ 18341 features_ffi 18342 .features_vulkan12 18343 .map(|s| s.vulkan_memory_model_availability_visibility_chains), 18344 features_ffi 18345 .features_vulkan_memory_model 18346 .map(|s| s.vulkan_memory_model_availability_visibility_chains), 18347 ] 18348 .into_iter() 18349 .flatten() 18350 .next() 18351 .unwrap_or(0) 18352 != 0, 18353 vulkan_memory_model_device_scope: [ 18354 features_ffi 18355 .features_vulkan12 18356 .map(|s| s.vulkan_memory_model_device_scope), 18357 features_ffi 18358 .features_vulkan_memory_model 18359 .map(|s| s.vulkan_memory_model_device_scope), 18360 ] 18361 .into_iter() 18362 .flatten() 18363 .next() 18364 .unwrap_or(0) 18365 != 0, 18366 wide_lines: [features_ffi.features_vulkan10.features.wide_lines] 18367 .into_iter() 18368 .next() 18369 .unwrap_or(0) 18370 != 0, 18371 workgroup_memory_explicit_layout: [features_ffi 18372 .features_workgroup_memory_explicit_layout_khr 18373 .map(|s| s.workgroup_memory_explicit_layout)] 18374 .into_iter() 18375 .flatten() 18376 .next() 18377 .unwrap_or(0) 18378 != 0, 18379 workgroup_memory_explicit_layout16_bit_access: [features_ffi 18380 .features_workgroup_memory_explicit_layout_khr 18381 .map(|s| s.workgroup_memory_explicit_layout16_bit_access)] 18382 .into_iter() 18383 .flatten() 18384 .next() 18385 .unwrap_or(0) 18386 != 0, 18387 workgroup_memory_explicit_layout8_bit_access: [features_ffi 18388 .features_workgroup_memory_explicit_layout_khr 18389 .map(|s| s.workgroup_memory_explicit_layout8_bit_access)] 18390 .into_iter() 18391 .flatten() 18392 .next() 18393 .unwrap_or(0) 18394 != 0, 18395 workgroup_memory_explicit_layout_scalar_block_layout: [features_ffi 18396 .features_workgroup_memory_explicit_layout_khr 18397 .map(|s| s.workgroup_memory_explicit_layout_scalar_block_layout)] 18398 .into_iter() 18399 .flatten() 18400 .next() 18401 .unwrap_or(0) 18402 != 0, 18403 ycbcr2plane444_formats: [features_ffi 18404 .features_ycbcr2_plane444_formats_ext 18405 .map(|s| s.ycbcr2plane444_formats)] 18406 .into_iter() 18407 .flatten() 18408 .next() 18409 .unwrap_or(0) 18410 != 0, 18411 ycbcr_image_arrays: [features_ffi 18412 .features_ycbcr_image_arrays_ext 18413 .map(|s| s.ycbcr_image_arrays)] 18414 .into_iter() 18415 .flatten() 18416 .next() 18417 .unwrap_or(0) 18418 != 0, 18419 _ne: crate::NonExhaustive(()), 18420 } 18421 } 18422 } 18423 impl IntoIterator for Features { 18424 type Item = (&'static str, bool); 18425 type IntoIter = std::array::IntoIter<Self::Item, 363usize>; 18426 #[inline] into_iter(self) -> Self::IntoIter18427 fn into_iter(self) -> Self::IntoIter { 18428 [ 18429 ("accelerationStructure", self.acceleration_structure), 18430 ( 18431 "accelerationStructureCaptureReplay", 18432 self.acceleration_structure_capture_replay, 18433 ), 18434 ( 18435 "accelerationStructureHostCommands", 18436 self.acceleration_structure_host_commands, 18437 ), 18438 ( 18439 "accelerationStructureIndirectBuild", 18440 self.acceleration_structure_indirect_build, 18441 ), 18442 ( 18443 "advancedBlendCoherentOperations", 18444 self.advanced_blend_coherent_operations, 18445 ), 18446 ("alphaToOne", self.alpha_to_one), 18447 ("amigoProfiling", self.amigo_profiling), 18448 ( 18449 "attachmentFeedbackLoopLayout", 18450 self.attachment_feedback_loop_layout, 18451 ), 18452 ( 18453 "attachmentFragmentShadingRate", 18454 self.attachment_fragment_shading_rate, 18455 ), 18456 ("borderColorSwizzle", self.border_color_swizzle), 18457 ( 18458 "borderColorSwizzleFromImage", 18459 self.border_color_swizzle_from_image, 18460 ), 18461 ("bresenhamLines", self.bresenham_lines), 18462 ("bufferDeviceAddress", self.buffer_device_address), 18463 ( 18464 "bufferDeviceAddressCaptureReplay", 18465 self.buffer_device_address_capture_replay, 18466 ), 18467 ( 18468 "bufferDeviceAddressMultiDevice", 18469 self.buffer_device_address_multi_device, 18470 ), 18471 ("colorWriteEnable", self.color_write_enable), 18472 ( 18473 "computeDerivativeGroupLinear", 18474 self.compute_derivative_group_linear, 18475 ), 18476 ( 18477 "computeDerivativeGroupQuads", 18478 self.compute_derivative_group_quads, 18479 ), 18480 ("computeFullSubgroups", self.compute_full_subgroups), 18481 ("conditionalRendering", self.conditional_rendering), 18482 ( 18483 "constantAlphaColorBlendFactors", 18484 self.constant_alpha_color_blend_factors, 18485 ), 18486 ("cooperativeMatrix", self.cooperative_matrix), 18487 ( 18488 "cooperativeMatrixRobustBufferAccess", 18489 self.cooperative_matrix_robust_buffer_access, 18490 ), 18491 ("cornerSampledImage", self.corner_sampled_image), 18492 ("coverageReductionMode", self.coverage_reduction_mode), 18493 ( 18494 "customBorderColorWithoutFormat", 18495 self.custom_border_color_without_format, 18496 ), 18497 ("customBorderColors", self.custom_border_colors), 18498 ("decodeModeSharedExponent", self.decode_mode_shared_exponent), 18499 ( 18500 "dedicatedAllocationImageAliasing", 18501 self.dedicated_allocation_image_aliasing, 18502 ), 18503 ("depthBiasClamp", self.depth_bias_clamp), 18504 ("depthBounds", self.depth_bounds), 18505 ("depthClamp", self.depth_clamp), 18506 ("depthClampZeroOne", self.depth_clamp_zero_one), 18507 ("depthClipControl", self.depth_clip_control), 18508 ("depthClipEnable", self.depth_clip_enable), 18509 ( 18510 "descriptorBindingAccelerationStructureUpdateAfterBind", 18511 self.descriptor_binding_acceleration_structure_update_after_bind, 18512 ), 18513 ( 18514 "descriptorBindingInlineUniformBlockUpdateAfterBind", 18515 self.descriptor_binding_inline_uniform_block_update_after_bind, 18516 ), 18517 ( 18518 "descriptorBindingPartiallyBound", 18519 self.descriptor_binding_partially_bound, 18520 ), 18521 ( 18522 "descriptorBindingSampledImageUpdateAfterBind", 18523 self.descriptor_binding_sampled_image_update_after_bind, 18524 ), 18525 ( 18526 "descriptorBindingStorageBufferUpdateAfterBind", 18527 self.descriptor_binding_storage_buffer_update_after_bind, 18528 ), 18529 ( 18530 "descriptorBindingStorageImageUpdateAfterBind", 18531 self.descriptor_binding_storage_image_update_after_bind, 18532 ), 18533 ( 18534 "descriptorBindingStorageTexelBufferUpdateAfterBind", 18535 self.descriptor_binding_storage_texel_buffer_update_after_bind, 18536 ), 18537 ( 18538 "descriptorBindingUniformBufferUpdateAfterBind", 18539 self.descriptor_binding_uniform_buffer_update_after_bind, 18540 ), 18541 ( 18542 "descriptorBindingUniformTexelBufferUpdateAfterBind", 18543 self.descriptor_binding_uniform_texel_buffer_update_after_bind, 18544 ), 18545 ( 18546 "descriptorBindingUpdateUnusedWhilePending", 18547 self.descriptor_binding_update_unused_while_pending, 18548 ), 18549 ( 18550 "descriptorBindingVariableDescriptorCount", 18551 self.descriptor_binding_variable_descriptor_count, 18552 ), 18553 ("descriptorBuffer", self.descriptor_buffer), 18554 ( 18555 "descriptorBufferCaptureReplay", 18556 self.descriptor_buffer_capture_replay, 18557 ), 18558 ( 18559 "descriptorBufferImageLayoutIgnored", 18560 self.descriptor_buffer_image_layout_ignored, 18561 ), 18562 ( 18563 "descriptorBufferPushDescriptors", 18564 self.descriptor_buffer_push_descriptors, 18565 ), 18566 ("descriptorIndexing", self.descriptor_indexing), 18567 ("descriptorSetHostMapping", self.descriptor_set_host_mapping), 18568 ("deviceCoherentMemory", self.device_coherent_memory), 18569 ("deviceFault", self.device_fault), 18570 ("deviceFaultVendorBinary", self.device_fault_vendor_binary), 18571 ("deviceGeneratedCommands", self.device_generated_commands), 18572 ("deviceMemoryReport", self.device_memory_report), 18573 ("diagnosticsConfig", self.diagnostics_config), 18574 ("drawIndirectCount", self.draw_indirect_count), 18575 ( 18576 "drawIndirectFirstInstance", 18577 self.draw_indirect_first_instance, 18578 ), 18579 ("dualSrcBlend", self.dual_src_blend), 18580 ("dynamicRendering", self.dynamic_rendering), 18581 ("events", self.events), 18582 ("exclusiveScissor", self.exclusive_scissor), 18583 ("extendedDynamicState", self.extended_dynamic_state), 18584 ("extendedDynamicState2", self.extended_dynamic_state2), 18585 ( 18586 "extendedDynamicState2LogicOp", 18587 self.extended_dynamic_state2_logic_op, 18588 ), 18589 ( 18590 "extendedDynamicState2PatchControlPoints", 18591 self.extended_dynamic_state2_patch_control_points, 18592 ), 18593 ( 18594 "extendedDynamicState3AlphaToCoverageEnable", 18595 self.extended_dynamic_state3_alpha_to_coverage_enable, 18596 ), 18597 ( 18598 "extendedDynamicState3AlphaToOneEnable", 18599 self.extended_dynamic_state3_alpha_to_one_enable, 18600 ), 18601 ( 18602 "extendedDynamicState3ColorBlendAdvanced", 18603 self.extended_dynamic_state3_color_blend_advanced, 18604 ), 18605 ( 18606 "extendedDynamicState3ColorBlendEnable", 18607 self.extended_dynamic_state3_color_blend_enable, 18608 ), 18609 ( 18610 "extendedDynamicState3ColorBlendEquation", 18611 self.extended_dynamic_state3_color_blend_equation, 18612 ), 18613 ( 18614 "extendedDynamicState3ColorWriteMask", 18615 self.extended_dynamic_state3_color_write_mask, 18616 ), 18617 ( 18618 "extendedDynamicState3ConservativeRasterizationMode", 18619 self.extended_dynamic_state3_conservative_rasterization_mode, 18620 ), 18621 ( 18622 "extendedDynamicState3CoverageModulationMode", 18623 self.extended_dynamic_state3_coverage_modulation_mode, 18624 ), 18625 ( 18626 "extendedDynamicState3CoverageModulationTable", 18627 self.extended_dynamic_state3_coverage_modulation_table, 18628 ), 18629 ( 18630 "extendedDynamicState3CoverageModulationTableEnable", 18631 self.extended_dynamic_state3_coverage_modulation_table_enable, 18632 ), 18633 ( 18634 "extendedDynamicState3CoverageReductionMode", 18635 self.extended_dynamic_state3_coverage_reduction_mode, 18636 ), 18637 ( 18638 "extendedDynamicState3CoverageToColorEnable", 18639 self.extended_dynamic_state3_coverage_to_color_enable, 18640 ), 18641 ( 18642 "extendedDynamicState3CoverageToColorLocation", 18643 self.extended_dynamic_state3_coverage_to_color_location, 18644 ), 18645 ( 18646 "extendedDynamicState3DepthClampEnable", 18647 self.extended_dynamic_state3_depth_clamp_enable, 18648 ), 18649 ( 18650 "extendedDynamicState3DepthClipEnable", 18651 self.extended_dynamic_state3_depth_clip_enable, 18652 ), 18653 ( 18654 "extendedDynamicState3DepthClipNegativeOneToOne", 18655 self.extended_dynamic_state3_depth_clip_negative_one_to_one, 18656 ), 18657 ( 18658 "extendedDynamicState3ExtraPrimitiveOverestimationSize", 18659 self.extended_dynamic_state3_extra_primitive_overestimation_size, 18660 ), 18661 ( 18662 "extendedDynamicState3LineRasterizationMode", 18663 self.extended_dynamic_state3_line_rasterization_mode, 18664 ), 18665 ( 18666 "extendedDynamicState3LineStippleEnable", 18667 self.extended_dynamic_state3_line_stipple_enable, 18668 ), 18669 ( 18670 "extendedDynamicState3LogicOpEnable", 18671 self.extended_dynamic_state3_logic_op_enable, 18672 ), 18673 ( 18674 "extendedDynamicState3PolygonMode", 18675 self.extended_dynamic_state3_polygon_mode, 18676 ), 18677 ( 18678 "extendedDynamicState3ProvokingVertexMode", 18679 self.extended_dynamic_state3_provoking_vertex_mode, 18680 ), 18681 ( 18682 "extendedDynamicState3RasterizationSamples", 18683 self.extended_dynamic_state3_rasterization_samples, 18684 ), 18685 ( 18686 "extendedDynamicState3RasterizationStream", 18687 self.extended_dynamic_state3_rasterization_stream, 18688 ), 18689 ( 18690 "extendedDynamicState3RepresentativeFragmentTestEnable", 18691 self.extended_dynamic_state3_representative_fragment_test_enable, 18692 ), 18693 ( 18694 "extendedDynamicState3SampleLocationsEnable", 18695 self.extended_dynamic_state3_sample_locations_enable, 18696 ), 18697 ( 18698 "extendedDynamicState3SampleMask", 18699 self.extended_dynamic_state3_sample_mask, 18700 ), 18701 ( 18702 "extendedDynamicState3ShadingRateImageEnable", 18703 self.extended_dynamic_state3_shading_rate_image_enable, 18704 ), 18705 ( 18706 "extendedDynamicState3TessellationDomainOrigin", 18707 self.extended_dynamic_state3_tessellation_domain_origin, 18708 ), 18709 ( 18710 "extendedDynamicState3ViewportSwizzle", 18711 self.extended_dynamic_state3_viewport_swizzle, 18712 ), 18713 ( 18714 "extendedDynamicState3ViewportWScalingEnable", 18715 self.extended_dynamic_state3_viewport_w_scaling_enable, 18716 ), 18717 ("externalMemoryRDMA", self.external_memory_rdma), 18718 ("fillModeNonSolid", self.fill_mode_non_solid), 18719 ("formatA4B4G4R4", self.format_a4b4g4r4), 18720 ("formatA4R4G4B4", self.format_a4r4g4b4), 18721 ( 18722 "formatRgba10x6WithoutYCbCrSampler", 18723 self.format_rgba10x6_without_y_cb_cr_sampler, 18724 ), 18725 ("fragmentDensityMap", self.fragment_density_map), 18726 ( 18727 "fragmentDensityMapDeferred", 18728 self.fragment_density_map_deferred, 18729 ), 18730 ( 18731 "fragmentDensityMapDynamic", 18732 self.fragment_density_map_dynamic, 18733 ), 18734 ( 18735 "fragmentDensityMapNonSubsampledImages", 18736 self.fragment_density_map_non_subsampled_images, 18737 ), 18738 ("fragmentDensityMapOffset", self.fragment_density_map_offset), 18739 ( 18740 "fragmentShaderBarycentric", 18741 self.fragment_shader_barycentric, 18742 ), 18743 ( 18744 "fragmentShaderPixelInterlock", 18745 self.fragment_shader_pixel_interlock, 18746 ), 18747 ( 18748 "fragmentShaderSampleInterlock", 18749 self.fragment_shader_sample_interlock, 18750 ), 18751 ( 18752 "fragmentShaderShadingRateInterlock", 18753 self.fragment_shader_shading_rate_interlock, 18754 ), 18755 ("fragmentShadingRateEnums", self.fragment_shading_rate_enums), 18756 ("fragmentStoresAndAtomics", self.fragment_stores_and_atomics), 18757 ("fullDrawIndexUint32", self.full_draw_index_uint32), 18758 ("geometryShader", self.geometry_shader), 18759 ("geometryStreams", self.geometry_streams), 18760 ("globalPriorityQuery", self.global_priority_query), 18761 ("graphicsPipelineLibrary", self.graphics_pipeline_library), 18762 ("hostQueryReset", self.host_query_reset), 18763 ("image2DViewOf3D", self.image2_d_view_of3_d), 18764 ("imageCompressionControl", self.image_compression_control), 18765 ( 18766 "imageCompressionControlSwapchain", 18767 self.image_compression_control_swapchain, 18768 ), 18769 ("imageCubeArray", self.image_cube_array), 18770 ("imageFootprint", self.image_footprint), 18771 ("imageView2DOn3DImage", self.image_view2_d_on3_d_image), 18772 ( 18773 "imageViewFormatReinterpretation", 18774 self.image_view_format_reinterpretation, 18775 ), 18776 ("imageViewFormatSwizzle", self.image_view_format_swizzle), 18777 ("imagelessFramebuffer", self.imageless_framebuffer), 18778 ("independentBlend", self.independent_blend), 18779 ("indexTypeUint8", self.index_type_uint8), 18780 ("indirectCopy", self.indirect_copy), 18781 ( 18782 "inheritedConditionalRendering", 18783 self.inherited_conditional_rendering, 18784 ), 18785 ("inheritedQueries", self.inherited_queries), 18786 ( 18787 "inheritedViewportScissor2D", 18788 self.inherited_viewport_scissor2_d, 18789 ), 18790 ("inlineUniformBlock", self.inline_uniform_block), 18791 ("invocationMask", self.invocation_mask), 18792 ("largePoints", self.large_points), 18793 ("legacyDithering", self.legacy_dithering), 18794 ("linearColorAttachment", self.linear_color_attachment), 18795 ("logicOp", self.logic_op), 18796 ("maintenance4", self.maintenance4), 18797 ("memoryDecompression", self.memory_decompression), 18798 ("memoryPriority", self.memory_priority), 18799 ("meshShader", self.mesh_shader), 18800 ("meshShaderQueries", self.mesh_shader_queries), 18801 ("micromap", self.micromap), 18802 ("micromapCaptureReplay", self.micromap_capture_replay), 18803 ("micromapHostCommands", self.micromap_host_commands), 18804 ("minLod", self.min_lod), 18805 ("multiDraw", self.multi_draw), 18806 ("multiDrawIndirect", self.multi_draw_indirect), 18807 ("multiViewport", self.multi_viewport), 18808 ("multisampleArrayImage", self.multisample_array_image), 18809 ( 18810 "multisampledRenderToSingleSampled", 18811 self.multisampled_render_to_single_sampled, 18812 ), 18813 ("multiview", self.multiview), 18814 ("multiviewGeometryShader", self.multiview_geometry_shader), 18815 ("multiviewMeshShader", self.multiview_mesh_shader), 18816 ( 18817 "multiviewPerViewViewports", 18818 self.multiview_per_view_viewports, 18819 ), 18820 ( 18821 "multiviewTessellationShader", 18822 self.multiview_tessellation_shader, 18823 ), 18824 ( 18825 "mutableComparisonSamplers", 18826 self.mutable_comparison_samplers, 18827 ), 18828 ("mutableDescriptorType", self.mutable_descriptor_type), 18829 ( 18830 "noInvocationFragmentShadingRates", 18831 self.no_invocation_fragment_shading_rates, 18832 ), 18833 ("nonSeamlessCubeMap", self.non_seamless_cube_map), 18834 ("nullDescriptor", self.null_descriptor), 18835 ("occlusionQueryPrecise", self.occlusion_query_precise), 18836 ("opticalFlow", self.optical_flow), 18837 ( 18838 "pageableDeviceLocalMemory", 18839 self.pageable_device_local_memory, 18840 ), 18841 ( 18842 "performanceCounterMultipleQueryPools", 18843 self.performance_counter_multiple_query_pools, 18844 ), 18845 ( 18846 "performanceCounterQueryPools", 18847 self.performance_counter_query_pools, 18848 ), 18849 ( 18850 "pipelineCreationCacheControl", 18851 self.pipeline_creation_cache_control, 18852 ), 18853 ("pipelineExecutableInfo", self.pipeline_executable_info), 18854 ( 18855 "pipelineFragmentShadingRate", 18856 self.pipeline_fragment_shading_rate, 18857 ), 18858 ( 18859 "pipelinePropertiesIdentifier", 18860 self.pipeline_properties_identifier, 18861 ), 18862 ("pipelineProtectedAccess", self.pipeline_protected_access), 18863 ("pipelineRobustness", self.pipeline_robustness), 18864 ("pipelineStatisticsQuery", self.pipeline_statistics_query), 18865 ("pointPolygons", self.point_polygons), 18866 ("presentBarrier", self.present_barrier), 18867 ("presentId", self.present_id), 18868 ("presentWait", self.present_wait), 18869 ( 18870 "primitiveFragmentShadingRate", 18871 self.primitive_fragment_shading_rate, 18872 ), 18873 ( 18874 "primitiveFragmentShadingRateMeshShader", 18875 self.primitive_fragment_shading_rate_mesh_shader, 18876 ), 18877 ( 18878 "primitiveTopologyListRestart", 18879 self.primitive_topology_list_restart, 18880 ), 18881 ( 18882 "primitiveTopologyPatchListRestart", 18883 self.primitive_topology_patch_list_restart, 18884 ), 18885 ("primitivesGeneratedQuery", self.primitives_generated_query), 18886 ( 18887 "primitivesGeneratedQueryWithNonZeroStreams", 18888 self.primitives_generated_query_with_non_zero_streams, 18889 ), 18890 ( 18891 "primitivesGeneratedQueryWithRasterizerDiscard", 18892 self.primitives_generated_query_with_rasterizer_discard, 18893 ), 18894 ("privateData", self.private_data), 18895 ("protectedMemory", self.protected_memory), 18896 ("provokingVertexLast", self.provoking_vertex_last), 18897 ( 18898 "rasterizationOrderColorAttachmentAccess", 18899 self.rasterization_order_color_attachment_access, 18900 ), 18901 ( 18902 "rasterizationOrderDepthAttachmentAccess", 18903 self.rasterization_order_depth_attachment_access, 18904 ), 18905 ( 18906 "rasterizationOrderStencilAttachmentAccess", 18907 self.rasterization_order_stencil_attachment_access, 18908 ), 18909 ("rayQuery", self.ray_query), 18910 ( 18911 "rayTracingInvocationReorder", 18912 self.ray_tracing_invocation_reorder, 18913 ), 18914 ("rayTracingMaintenance1", self.ray_tracing_maintenance1), 18915 ("rayTracingMotionBlur", self.ray_tracing_motion_blur), 18916 ( 18917 "rayTracingMotionBlurPipelineTraceRaysIndirect", 18918 self.ray_tracing_motion_blur_pipeline_trace_rays_indirect, 18919 ), 18920 ("rayTracingPipeline", self.ray_tracing_pipeline), 18921 ( 18922 "rayTracingPipelineShaderGroupHandleCaptureReplay", 18923 self.ray_tracing_pipeline_shader_group_handle_capture_replay, 18924 ), 18925 ( 18926 "rayTracingPipelineShaderGroupHandleCaptureReplayMixed", 18927 self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed, 18928 ), 18929 ( 18930 "rayTracingPipelineTraceRaysIndirect", 18931 self.ray_tracing_pipeline_trace_rays_indirect, 18932 ), 18933 ( 18934 "rayTracingPipelineTraceRaysIndirect2", 18935 self.ray_tracing_pipeline_trace_rays_indirect2, 18936 ), 18937 ( 18938 "rayTraversalPrimitiveCulling", 18939 self.ray_traversal_primitive_culling, 18940 ), 18941 ("rectangularLines", self.rectangular_lines), 18942 ("reportAddressBinding", self.report_address_binding), 18943 ( 18944 "representativeFragmentTest", 18945 self.representative_fragment_test, 18946 ), 18947 ("robustBufferAccess", self.robust_buffer_access), 18948 ("robustBufferAccess2", self.robust_buffer_access2), 18949 ("robustImageAccess", self.robust_image_access), 18950 ("robustImageAccess2", self.robust_image_access2), 18951 ("runtimeDescriptorArray", self.runtime_descriptor_array), 18952 ("sampleRateShading", self.sample_rate_shading), 18953 ("sampler2DViewOf3D", self.sampler2_d_view_of3_d), 18954 ("samplerAnisotropy", self.sampler_anisotropy), 18955 ("samplerFilterMinmax", self.sampler_filter_minmax), 18956 ("samplerMipLodBias", self.sampler_mip_lod_bias), 18957 ( 18958 "samplerMirrorClampToEdge", 18959 self.sampler_mirror_clamp_to_edge, 18960 ), 18961 ("samplerYcbcrConversion", self.sampler_ycbcr_conversion), 18962 ("scalarBlockLayout", self.scalar_block_layout), 18963 ( 18964 "separateDepthStencilLayouts", 18965 self.separate_depth_stencil_layouts, 18966 ), 18967 ("separateStencilMaskRef", self.separate_stencil_mask_ref), 18968 ( 18969 "shaderBufferFloat16AtomicAdd", 18970 self.shader_buffer_float16_atomic_add, 18971 ), 18972 ( 18973 "shaderBufferFloat16AtomicMinMax", 18974 self.shader_buffer_float16_atomic_min_max, 18975 ), 18976 ( 18977 "shaderBufferFloat16Atomics", 18978 self.shader_buffer_float16_atomics, 18979 ), 18980 ( 18981 "shaderBufferFloat32AtomicAdd", 18982 self.shader_buffer_float32_atomic_add, 18983 ), 18984 ( 18985 "shaderBufferFloat32AtomicMinMax", 18986 self.shader_buffer_float32_atomic_min_max, 18987 ), 18988 ( 18989 "shaderBufferFloat32Atomics", 18990 self.shader_buffer_float32_atomics, 18991 ), 18992 ( 18993 "shaderBufferFloat64AtomicAdd", 18994 self.shader_buffer_float64_atomic_add, 18995 ), 18996 ( 18997 "shaderBufferFloat64AtomicMinMax", 18998 self.shader_buffer_float64_atomic_min_max, 18999 ), 19000 ( 19001 "shaderBufferFloat64Atomics", 19002 self.shader_buffer_float64_atomics, 19003 ), 19004 ("shaderBufferInt64Atomics", self.shader_buffer_int64_atomics), 19005 ("shaderClipDistance", self.shader_clip_distance), 19006 ("shaderCoreBuiltins", self.shader_core_builtins), 19007 ("shaderCullDistance", self.shader_cull_distance), 19008 ( 19009 "shaderDemoteToHelperInvocation", 19010 self.shader_demote_to_helper_invocation, 19011 ), 19012 ("shaderDeviceClock", self.shader_device_clock), 19013 ("shaderDrawParameters", self.shader_draw_parameters), 19014 ( 19015 "shaderEarlyAndLateFragmentTests", 19016 self.shader_early_and_late_fragment_tests, 19017 ), 19018 ("shaderFloat16", self.shader_float16), 19019 ("shaderFloat64", self.shader_float64), 19020 ( 19021 "shaderImageFloat32AtomicAdd", 19022 self.shader_image_float32_atomic_add, 19023 ), 19024 ( 19025 "shaderImageFloat32AtomicMinMax", 19026 self.shader_image_float32_atomic_min_max, 19027 ), 19028 ( 19029 "shaderImageFloat32Atomics", 19030 self.shader_image_float32_atomics, 19031 ), 19032 ( 19033 "shaderImageGatherExtended", 19034 self.shader_image_gather_extended, 19035 ), 19036 ("shaderImageInt64Atomics", self.shader_image_int64_atomics), 19037 ( 19038 "shaderInputAttachmentArrayDynamicIndexing", 19039 self.shader_input_attachment_array_dynamic_indexing, 19040 ), 19041 ( 19042 "shaderInputAttachmentArrayNonUniformIndexing", 19043 self.shader_input_attachment_array_non_uniform_indexing, 19044 ), 19045 ("shaderInt16", self.shader_int16), 19046 ("shaderInt64", self.shader_int64), 19047 ("shaderInt8", self.shader_int8), 19048 ("shaderIntegerDotProduct", self.shader_integer_dot_product), 19049 ("shaderIntegerFunctions2", self.shader_integer_functions2), 19050 ("shaderModuleIdentifier", self.shader_module_identifier), 19051 ("shaderOutputLayer", self.shader_output_layer), 19052 ( 19053 "shaderOutputViewportIndex", 19054 self.shader_output_viewport_index, 19055 ), 19056 ("shaderResourceMinLod", self.shader_resource_min_lod), 19057 ("shaderResourceResidency", self.shader_resource_residency), 19058 ( 19059 "shaderSampleRateInterpolationFunctions", 19060 self.shader_sample_rate_interpolation_functions, 19061 ), 19062 ( 19063 "shaderSampledImageArrayDynamicIndexing", 19064 self.shader_sampled_image_array_dynamic_indexing, 19065 ), 19066 ( 19067 "shaderSampledImageArrayNonUniformIndexing", 19068 self.shader_sampled_image_array_non_uniform_indexing, 19069 ), 19070 ( 19071 "shaderSharedFloat16AtomicAdd", 19072 self.shader_shared_float16_atomic_add, 19073 ), 19074 ( 19075 "shaderSharedFloat16AtomicMinMax", 19076 self.shader_shared_float16_atomic_min_max, 19077 ), 19078 ( 19079 "shaderSharedFloat16Atomics", 19080 self.shader_shared_float16_atomics, 19081 ), 19082 ( 19083 "shaderSharedFloat32AtomicAdd", 19084 self.shader_shared_float32_atomic_add, 19085 ), 19086 ( 19087 "shaderSharedFloat32AtomicMinMax", 19088 self.shader_shared_float32_atomic_min_max, 19089 ), 19090 ( 19091 "shaderSharedFloat32Atomics", 19092 self.shader_shared_float32_atomics, 19093 ), 19094 ( 19095 "shaderSharedFloat64AtomicAdd", 19096 self.shader_shared_float64_atomic_add, 19097 ), 19098 ( 19099 "shaderSharedFloat64AtomicMinMax", 19100 self.shader_shared_float64_atomic_min_max, 19101 ), 19102 ( 19103 "shaderSharedFloat64Atomics", 19104 self.shader_shared_float64_atomics, 19105 ), 19106 ("shaderSharedInt64Atomics", self.shader_shared_int64_atomics), 19107 ("shaderSMBuiltins", self.shader_sm_builtins), 19108 ( 19109 "shaderStorageBufferArrayDynamicIndexing", 19110 self.shader_storage_buffer_array_dynamic_indexing, 19111 ), 19112 ( 19113 "shaderStorageBufferArrayNonUniformIndexing", 19114 self.shader_storage_buffer_array_non_uniform_indexing, 19115 ), 19116 ( 19117 "shaderStorageImageArrayDynamicIndexing", 19118 self.shader_storage_image_array_dynamic_indexing, 19119 ), 19120 ( 19121 "shaderStorageImageArrayNonUniformIndexing", 19122 self.shader_storage_image_array_non_uniform_indexing, 19123 ), 19124 ( 19125 "shaderStorageImageExtendedFormats", 19126 self.shader_storage_image_extended_formats, 19127 ), 19128 ( 19129 "shaderStorageImageMultisample", 19130 self.shader_storage_image_multisample, 19131 ), 19132 ( 19133 "shaderStorageImageReadWithoutFormat", 19134 self.shader_storage_image_read_without_format, 19135 ), 19136 ( 19137 "shaderStorageImageWriteWithoutFormat", 19138 self.shader_storage_image_write_without_format, 19139 ), 19140 ( 19141 "shaderStorageTexelBufferArrayDynamicIndexing", 19142 self.shader_storage_texel_buffer_array_dynamic_indexing, 19143 ), 19144 ( 19145 "shaderStorageTexelBufferArrayNonUniformIndexing", 19146 self.shader_storage_texel_buffer_array_non_uniform_indexing, 19147 ), 19148 ("shaderSubgroupClock", self.shader_subgroup_clock), 19149 ( 19150 "shaderSubgroupExtendedTypes", 19151 self.shader_subgroup_extended_types, 19152 ), 19153 ( 19154 "shaderSubgroupUniformControlFlow", 19155 self.shader_subgroup_uniform_control_flow, 19156 ), 19157 ( 19158 "shaderTerminateInvocation", 19159 self.shader_terminate_invocation, 19160 ), 19161 ( 19162 "shaderTessellationAndGeometryPointSize", 19163 self.shader_tessellation_and_geometry_point_size, 19164 ), 19165 ( 19166 "shaderUniformBufferArrayDynamicIndexing", 19167 self.shader_uniform_buffer_array_dynamic_indexing, 19168 ), 19169 ( 19170 "shaderUniformBufferArrayNonUniformIndexing", 19171 self.shader_uniform_buffer_array_non_uniform_indexing, 19172 ), 19173 ( 19174 "shaderUniformTexelBufferArrayDynamicIndexing", 19175 self.shader_uniform_texel_buffer_array_dynamic_indexing, 19176 ), 19177 ( 19178 "shaderUniformTexelBufferArrayNonUniformIndexing", 19179 self.shader_uniform_texel_buffer_array_non_uniform_indexing, 19180 ), 19181 ( 19182 "shaderZeroInitializeWorkgroupMemory", 19183 self.shader_zero_initialize_workgroup_memory, 19184 ), 19185 ( 19186 "shadingRateCoarseSampleOrder", 19187 self.shading_rate_coarse_sample_order, 19188 ), 19189 ("shadingRateImage", self.shading_rate_image), 19190 ("smoothLines", self.smooth_lines), 19191 ("sparseBinding", self.sparse_binding), 19192 ( 19193 "sparseImageFloat32AtomicAdd", 19194 self.sparse_image_float32_atomic_add, 19195 ), 19196 ( 19197 "sparseImageFloat32AtomicMinMax", 19198 self.sparse_image_float32_atomic_min_max, 19199 ), 19200 ( 19201 "sparseImageFloat32Atomics", 19202 self.sparse_image_float32_atomics, 19203 ), 19204 ("sparseImageInt64Atomics", self.sparse_image_int64_atomics), 19205 ("sparseResidency16Samples", self.sparse_residency16_samples), 19206 ("sparseResidency2Samples", self.sparse_residency2_samples), 19207 ("sparseResidency4Samples", self.sparse_residency4_samples), 19208 ("sparseResidency8Samples", self.sparse_residency8_samples), 19209 ("sparseResidencyAliased", self.sparse_residency_aliased), 19210 ("sparseResidencyBuffer", self.sparse_residency_buffer), 19211 ("sparseResidencyImage2D", self.sparse_residency_image2_d), 19212 ("sparseResidencyImage3D", self.sparse_residency_image3_d), 19213 ("stippledBresenhamLines", self.stippled_bresenham_lines), 19214 ("stippledRectangularLines", self.stippled_rectangular_lines), 19215 ("stippledSmoothLines", self.stippled_smooth_lines), 19216 ("storageBuffer16BitAccess", self.storage_buffer16_bit_access), 19217 ("storageBuffer8BitAccess", self.storage_buffer8_bit_access), 19218 ("storageInputOutput16", self.storage_input_output16), 19219 ("storagePushConstant16", self.storage_push_constant16), 19220 ("storagePushConstant8", self.storage_push_constant8), 19221 ( 19222 "subgroupBroadcastDynamicId", 19223 self.subgroup_broadcast_dynamic_id, 19224 ), 19225 ("subgroupSizeControl", self.subgroup_size_control), 19226 ("subpassMergeFeedback", self.subpass_merge_feedback), 19227 ("subpassShading", self.subpass_shading), 19228 ( 19229 "supersampleFragmentShadingRates", 19230 self.supersample_fragment_shading_rates, 19231 ), 19232 ("swapchainMaintenance1", self.swapchain_maintenance1), 19233 ("synchronization2", self.synchronization2), 19234 ("taskShader", self.task_shader), 19235 ("tessellationIsolines", self.tessellation_isolines), 19236 ("tessellationPointMode", self.tessellation_point_mode), 19237 ("tessellationShader", self.tessellation_shader), 19238 ("texelBufferAlignment", self.texel_buffer_alignment), 19239 ("textureBlockMatch", self.texture_block_match), 19240 ("textureBoxFilter", self.texture_box_filter), 19241 ( 19242 "textureCompressionASTC_HDR", 19243 self.texture_compression_astc_hdr, 19244 ), 19245 ( 19246 "textureCompressionASTC_LDR", 19247 self.texture_compression_astc_ldr, 19248 ), 19249 ("textureCompressionBC", self.texture_compression_bc), 19250 ("textureCompressionETC2", self.texture_compression_etc2), 19251 ("textureSampleWeighted", self.texture_sample_weighted), 19252 ("tileProperties", self.tile_properties), 19253 ("timelineSemaphore", self.timeline_semaphore), 19254 ("transformFeedback", self.transform_feedback), 19255 ( 19256 "transformFeedbackPreservesProvokingVertex", 19257 self.transform_feedback_preserves_provoking_vertex, 19258 ), 19259 ("triangleFans", self.triangle_fans), 19260 ( 19261 "uniformAndStorageBuffer16BitAccess", 19262 self.uniform_and_storage_buffer16_bit_access, 19263 ), 19264 ( 19265 "uniformAndStorageBuffer8BitAccess", 19266 self.uniform_and_storage_buffer8_bit_access, 19267 ), 19268 ( 19269 "uniformBufferStandardLayout", 19270 self.uniform_buffer_standard_layout, 19271 ), 19272 ("variableMultisampleRate", self.variable_multisample_rate), 19273 ("variablePointers", self.variable_pointers), 19274 ( 19275 "variablePointersStorageBuffer", 19276 self.variable_pointers_storage_buffer, 19277 ), 19278 ( 19279 "vertexAttributeAccessBeyondStride", 19280 self.vertex_attribute_access_beyond_stride, 19281 ), 19282 ( 19283 "vertexAttributeInstanceRateDivisor", 19284 self.vertex_attribute_instance_rate_divisor, 19285 ), 19286 ( 19287 "vertexAttributeInstanceRateZeroDivisor", 19288 self.vertex_attribute_instance_rate_zero_divisor, 19289 ), 19290 ("vertexInputDynamicState", self.vertex_input_dynamic_state), 19291 ( 19292 "vertexPipelineStoresAndAtomics", 19293 self.vertex_pipeline_stores_and_atomics, 19294 ), 19295 ("vulkanMemoryModel", self.vulkan_memory_model), 19296 ( 19297 "vulkanMemoryModelAvailabilityVisibilityChains", 19298 self.vulkan_memory_model_availability_visibility_chains, 19299 ), 19300 ( 19301 "vulkanMemoryModelDeviceScope", 19302 self.vulkan_memory_model_device_scope, 19303 ), 19304 ("wideLines", self.wide_lines), 19305 ( 19306 "workgroupMemoryExplicitLayout", 19307 self.workgroup_memory_explicit_layout, 19308 ), 19309 ( 19310 "workgroupMemoryExplicitLayout16BitAccess", 19311 self.workgroup_memory_explicit_layout16_bit_access, 19312 ), 19313 ( 19314 "workgroupMemoryExplicitLayout8BitAccess", 19315 self.workgroup_memory_explicit_layout8_bit_access, 19316 ), 19317 ( 19318 "workgroupMemoryExplicitLayoutScalarBlockLayout", 19319 self.workgroup_memory_explicit_layout_scalar_block_layout, 19320 ), 19321 ("ycbcr2plane444Formats", self.ycbcr2plane444_formats), 19322 ("ycbcrImageArrays", self.ycbcr_image_arrays), 19323 ] 19324 .into_iter() 19325 } 19326 } 19327 #[derive(Default)] 19328 pub(crate) struct FeaturesFfi { 19329 features_vulkan10: ash::vk::PhysicalDeviceFeatures2KHR, 19330 features_vulkan11: Option<ash::vk::PhysicalDeviceVulkan11Features>, 19331 features_vulkan12: Option<ash::vk::PhysicalDeviceVulkan12Features>, 19332 features_vulkan13: Option<ash::vk::PhysicalDeviceVulkan13Features>, 19333 features_16bit_storage: Option<ash::vk::PhysicalDevice16BitStorageFeatures>, 19334 features_multiview: Option<ash::vk::PhysicalDeviceMultiviewFeatures>, 19335 features_protected_memory: Option<ash::vk::PhysicalDeviceProtectedMemoryFeatures>, 19336 features_sampler_ycbcr_conversion: 19337 Option<ash::vk::PhysicalDeviceSamplerYcbcrConversionFeatures>, 19338 features_shader_draw_parameters: Option<ash::vk::PhysicalDeviceShaderDrawParametersFeatures>, 19339 features_variable_pointers: Option<ash::vk::PhysicalDeviceVariablePointersFeatures>, 19340 features_8bit_storage: Option<ash::vk::PhysicalDevice8BitStorageFeatures>, 19341 features_buffer_device_address: Option<ash::vk::PhysicalDeviceBufferDeviceAddressFeatures>, 19342 features_descriptor_indexing: Option<ash::vk::PhysicalDeviceDescriptorIndexingFeatures>, 19343 features_host_query_reset: Option<ash::vk::PhysicalDeviceHostQueryResetFeatures>, 19344 features_imageless_framebuffer: Option<ash::vk::PhysicalDeviceImagelessFramebufferFeatures>, 19345 features_scalar_block_layout: Option<ash::vk::PhysicalDeviceScalarBlockLayoutFeatures>, 19346 features_separate_depth_stencil_layouts: 19347 Option<ash::vk::PhysicalDeviceSeparateDepthStencilLayoutsFeatures>, 19348 features_shader_atomic_int64: Option<ash::vk::PhysicalDeviceShaderAtomicInt64Features>, 19349 features_shader_float16_int8: Option<ash::vk::PhysicalDeviceShaderFloat16Int8Features>, 19350 features_shader_subgroup_extended_types: 19351 Option<ash::vk::PhysicalDeviceShaderSubgroupExtendedTypesFeatures>, 19352 features_timeline_semaphore: Option<ash::vk::PhysicalDeviceTimelineSemaphoreFeatures>, 19353 features_uniform_buffer_standard_layout: 19354 Option<ash::vk::PhysicalDeviceUniformBufferStandardLayoutFeatures>, 19355 features_vulkan_memory_model: Option<ash::vk::PhysicalDeviceVulkanMemoryModelFeatures>, 19356 features_dynamic_rendering: Option<ash::vk::PhysicalDeviceDynamicRenderingFeatures>, 19357 features_image_robustness: Option<ash::vk::PhysicalDeviceImageRobustnessFeatures>, 19358 features_inline_uniform_block: Option<ash::vk::PhysicalDeviceInlineUniformBlockFeatures>, 19359 features_maintenance4: Option<ash::vk::PhysicalDeviceMaintenance4Features>, 19360 features_pipeline_creation_cache_control: 19361 Option<ash::vk::PhysicalDevicePipelineCreationCacheControlFeatures>, 19362 features_private_data: Option<ash::vk::PhysicalDevicePrivateDataFeatures>, 19363 features_shader_demote_to_helper_invocation: 19364 Option<ash::vk::PhysicalDeviceShaderDemoteToHelperInvocationFeatures>, 19365 features_shader_integer_dot_product: 19366 Option<ash::vk::PhysicalDeviceShaderIntegerDotProductFeatures>, 19367 features_shader_terminate_invocation: 19368 Option<ash::vk::PhysicalDeviceShaderTerminateInvocationFeatures>, 19369 features_subgroup_size_control: Option<ash::vk::PhysicalDeviceSubgroupSizeControlFeatures>, 19370 features_synchronization2: Option<ash::vk::PhysicalDeviceSynchronization2Features>, 19371 features_texture_compression_astchdr: 19372 Option<ash::vk::PhysicalDeviceTextureCompressionASTCHDRFeatures>, 19373 features_zero_initialize_workgroup_memory: 19374 Option<ash::vk::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>, 19375 features_acceleration_structure_khr: 19376 Option<ash::vk::PhysicalDeviceAccelerationStructureFeaturesKHR>, 19377 features_fragment_shader_barycentric_khr: 19378 Option<ash::vk::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR>, 19379 features_fragment_shading_rate_khr: 19380 Option<ash::vk::PhysicalDeviceFragmentShadingRateFeaturesKHR>, 19381 features_global_priority_query_khr: 19382 Option<ash::vk::PhysicalDeviceGlobalPriorityQueryFeaturesKHR>, 19383 features_performance_query_khr: Option<ash::vk::PhysicalDevicePerformanceQueryFeaturesKHR>, 19384 features_pipeline_executable_properties_khr: 19385 Option<ash::vk::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR>, 19386 features_portability_subset_khr: Option<ash::vk::PhysicalDevicePortabilitySubsetFeaturesKHR>, 19387 features_present_id_khr: Option<ash::vk::PhysicalDevicePresentIdFeaturesKHR>, 19388 features_present_wait_khr: Option<ash::vk::PhysicalDevicePresentWaitFeaturesKHR>, 19389 features_ray_query_khr: Option<ash::vk::PhysicalDeviceRayQueryFeaturesKHR>, 19390 features_ray_tracing_maintenance1_khr: 19391 Option<ash::vk::PhysicalDeviceRayTracingMaintenance1FeaturesKHR>, 19392 features_ray_tracing_pipeline_khr: Option<ash::vk::PhysicalDeviceRayTracingPipelineFeaturesKHR>, 19393 features_shader_clock_khr: Option<ash::vk::PhysicalDeviceShaderClockFeaturesKHR>, 19394 features_shader_subgroup_uniform_control_flow_khr: 19395 Option<ash::vk::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>, 19396 features_workgroup_memory_explicit_layout_khr: 19397 Option<ash::vk::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>, 19398 features_4444formats_ext: Option<ash::vk::PhysicalDevice4444FormatsFeaturesEXT>, 19399 features_astc_decode_ext: Option<ash::vk::PhysicalDeviceASTCDecodeFeaturesEXT>, 19400 features_address_binding_report_ext: 19401 Option<ash::vk::PhysicalDeviceAddressBindingReportFeaturesEXT>, 19402 features_attachment_feedback_loop_layout_ext: 19403 Option<ash::vk::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>, 19404 features_blend_operation_advanced_ext: 19405 Option<ash::vk::PhysicalDeviceBlendOperationAdvancedFeaturesEXT>, 19406 features_border_color_swizzle_ext: Option<ash::vk::PhysicalDeviceBorderColorSwizzleFeaturesEXT>, 19407 features_buffer_device_address_ext: 19408 Option<ash::vk::PhysicalDeviceBufferDeviceAddressFeaturesEXT>, 19409 features_color_write_enable_ext: Option<ash::vk::PhysicalDeviceColorWriteEnableFeaturesEXT>, 19410 features_conditional_rendering_ext: 19411 Option<ash::vk::PhysicalDeviceConditionalRenderingFeaturesEXT>, 19412 features_custom_border_color_ext: Option<ash::vk::PhysicalDeviceCustomBorderColorFeaturesEXT>, 19413 features_depth_clamp_zero_one_ext: Option<ash::vk::PhysicalDeviceDepthClampZeroOneFeaturesEXT>, 19414 features_depth_clip_control_ext: Option<ash::vk::PhysicalDeviceDepthClipControlFeaturesEXT>, 19415 features_depth_clip_enable_ext: Option<ash::vk::PhysicalDeviceDepthClipEnableFeaturesEXT>, 19416 features_descriptor_buffer_ext: Option<ash::vk::PhysicalDeviceDescriptorBufferFeaturesEXT>, 19417 features_device_memory_report_ext: Option<ash::vk::PhysicalDeviceDeviceMemoryReportFeaturesEXT>, 19418 features_extended_dynamic_state2_ext: 19419 Option<ash::vk::PhysicalDeviceExtendedDynamicState2FeaturesEXT>, 19420 features_extended_dynamic_state3_ext: 19421 Option<ash::vk::PhysicalDeviceExtendedDynamicState3FeaturesEXT>, 19422 features_extended_dynamic_state_ext: 19423 Option<ash::vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT>, 19424 features_fault_ext: Option<ash::vk::PhysicalDeviceFaultFeaturesEXT>, 19425 features_fragment_density_map2_ext: 19426 Option<ash::vk::PhysicalDeviceFragmentDensityMap2FeaturesEXT>, 19427 features_fragment_density_map_ext: Option<ash::vk::PhysicalDeviceFragmentDensityMapFeaturesEXT>, 19428 features_fragment_shader_interlock_ext: 19429 Option<ash::vk::PhysicalDeviceFragmentShaderInterlockFeaturesEXT>, 19430 features_graphics_pipeline_library_ext: 19431 Option<ash::vk::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>, 19432 features_image2_d_view_of3_d_ext: Option<ash::vk::PhysicalDeviceImage2DViewOf3DFeaturesEXT>, 19433 features_image_compression_control_ext: 19434 Option<ash::vk::PhysicalDeviceImageCompressionControlFeaturesEXT>, 19435 features_image_compression_control_swapchain_ext: 19436 Option<ash::vk::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>, 19437 features_image_view_min_lod_ext: Option<ash::vk::PhysicalDeviceImageViewMinLodFeaturesEXT>, 19438 features_index_type_uint8_ext: Option<ash::vk::PhysicalDeviceIndexTypeUint8FeaturesEXT>, 19439 features_legacy_dithering_ext: Option<ash::vk::PhysicalDeviceLegacyDitheringFeaturesEXT>, 19440 features_line_rasterization_ext: Option<ash::vk::PhysicalDeviceLineRasterizationFeaturesEXT>, 19441 features_memory_priority_ext: Option<ash::vk::PhysicalDeviceMemoryPriorityFeaturesEXT>, 19442 features_mesh_shader_ext: Option<ash::vk::PhysicalDeviceMeshShaderFeaturesEXT>, 19443 features_multi_draw_ext: Option<ash::vk::PhysicalDeviceMultiDrawFeaturesEXT>, 19444 features_multisampled_render_to_single_sampled_ext: 19445 Option<ash::vk::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT>, 19446 features_mutable_descriptor_type_ext: 19447 Option<ash::vk::PhysicalDeviceMutableDescriptorTypeFeaturesEXT>, 19448 features_non_seamless_cube_map_ext: 19449 Option<ash::vk::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT>, 19450 features_opacity_micromap_ext: Option<ash::vk::PhysicalDeviceOpacityMicromapFeaturesEXT>, 19451 features_pageable_device_local_memory_ext: 19452 Option<ash::vk::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>, 19453 features_pipeline_properties_ext: Option<ash::vk::PhysicalDevicePipelinePropertiesFeaturesEXT>, 19454 features_pipeline_protected_access_ext: 19455 Option<ash::vk::PhysicalDevicePipelineProtectedAccessFeaturesEXT>, 19456 features_pipeline_robustness_ext: Option<ash::vk::PhysicalDevicePipelineRobustnessFeaturesEXT>, 19457 features_primitive_topology_list_restart_ext: 19458 Option<ash::vk::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>, 19459 features_primitives_generated_query_ext: 19460 Option<ash::vk::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>, 19461 features_provoking_vertex_ext: Option<ash::vk::PhysicalDeviceProvokingVertexFeaturesEXT>, 19462 features_rgba10x6_formats_ext: Option<ash::vk::PhysicalDeviceRGBA10X6FormatsFeaturesEXT>, 19463 features_rasterization_order_attachment_access_ext: 19464 Option<ash::vk::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT>, 19465 features_robustness2_ext: Option<ash::vk::PhysicalDeviceRobustness2FeaturesEXT>, 19466 features_shader_atomic_float2_ext: Option<ash::vk::PhysicalDeviceShaderAtomicFloat2FeaturesEXT>, 19467 features_shader_atomic_float_ext: Option<ash::vk::PhysicalDeviceShaderAtomicFloatFeaturesEXT>, 19468 features_shader_image_atomic_int64_ext: 19469 Option<ash::vk::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT>, 19470 features_shader_module_identifier_ext: 19471 Option<ash::vk::PhysicalDeviceShaderModuleIdentifierFeaturesEXT>, 19472 features_subpass_merge_feedback_ext: 19473 Option<ash::vk::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT>, 19474 features_swapchain_maintenance1_ext: 19475 Option<ash::vk::PhysicalDeviceSwapchainMaintenance1FeaturesEXT>, 19476 features_texel_buffer_alignment_ext: 19477 Option<ash::vk::PhysicalDeviceTexelBufferAlignmentFeaturesEXT>, 19478 features_transform_feedback_ext: Option<ash::vk::PhysicalDeviceTransformFeedbackFeaturesEXT>, 19479 features_vertex_attribute_divisor_ext: 19480 Option<ash::vk::PhysicalDeviceVertexAttributeDivisorFeaturesEXT>, 19481 features_vertex_input_dynamic_state_ext: 19482 Option<ash::vk::PhysicalDeviceVertexInputDynamicStateFeaturesEXT>, 19483 features_ycbcr2_plane444_formats_ext: 19484 Option<ash::vk::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>, 19485 features_ycbcr_image_arrays_ext: Option<ash::vk::PhysicalDeviceYcbcrImageArraysFeaturesEXT>, 19486 features_amigo_profiling_sec: Option<ash::vk::PhysicalDeviceAmigoProfilingFeaturesSEC>, 19487 features_coherent_memory_amd: Option<ash::vk::PhysicalDeviceCoherentMemoryFeaturesAMD>, 19488 features_compute_shader_derivatives_nv: 19489 Option<ash::vk::PhysicalDeviceComputeShaderDerivativesFeaturesNV>, 19490 features_cooperative_matrix_nv: Option<ash::vk::PhysicalDeviceCooperativeMatrixFeaturesNV>, 19491 features_copy_memory_indirect_nv: Option<ash::vk::PhysicalDeviceCopyMemoryIndirectFeaturesNV>, 19492 features_corner_sampled_image_nv: Option<ash::vk::PhysicalDeviceCornerSampledImageFeaturesNV>, 19493 features_coverage_reduction_mode_nv: 19494 Option<ash::vk::PhysicalDeviceCoverageReductionModeFeaturesNV>, 19495 features_dedicated_allocation_image_aliasing_nv: 19496 Option<ash::vk::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>, 19497 features_descriptor_set_host_mapping_valve: 19498 Option<ash::vk::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>, 19499 features_device_generated_commands_nv: 19500 Option<ash::vk::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV>, 19501 features_diagnostics_config_nv: Option<ash::vk::PhysicalDeviceDiagnosticsConfigFeaturesNV>, 19502 features_exclusive_scissor_nv: Option<ash::vk::PhysicalDeviceExclusiveScissorFeaturesNV>, 19503 features_external_memory_rdma_nv: Option<ash::vk::PhysicalDeviceExternalMemoryRDMAFeaturesNV>, 19504 features_fragment_density_map_offset_qcom: 19505 Option<ash::vk::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>, 19506 features_fragment_shading_rate_enums_nv: 19507 Option<ash::vk::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV>, 19508 features_image_processing_qcom: Option<ash::vk::PhysicalDeviceImageProcessingFeaturesQCOM>, 19509 features_inherited_viewport_scissor_nv: 19510 Option<ash::vk::PhysicalDeviceInheritedViewportScissorFeaturesNV>, 19511 features_invocation_mask_huawei: Option<ash::vk::PhysicalDeviceInvocationMaskFeaturesHUAWEI>, 19512 features_linear_color_attachment_nv: 19513 Option<ash::vk::PhysicalDeviceLinearColorAttachmentFeaturesNV>, 19514 features_memory_decompression_nv: Option<ash::vk::PhysicalDeviceMemoryDecompressionFeaturesNV>, 19515 features_mesh_shader_nv: Option<ash::vk::PhysicalDeviceMeshShaderFeaturesNV>, 19516 features_multiview_per_view_viewports_qcom: 19517 Option<ash::vk::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM>, 19518 features_optical_flow_nv: Option<ash::vk::PhysicalDeviceOpticalFlowFeaturesNV>, 19519 features_present_barrier_nv: Option<ash::vk::PhysicalDevicePresentBarrierFeaturesNV>, 19520 features_ray_tracing_invocation_reorder_nv: 19521 Option<ash::vk::PhysicalDeviceRayTracingInvocationReorderFeaturesNV>, 19522 features_ray_tracing_motion_blur_nv: 19523 Option<ash::vk::PhysicalDeviceRayTracingMotionBlurFeaturesNV>, 19524 features_representative_fragment_test_nv: 19525 Option<ash::vk::PhysicalDeviceRepresentativeFragmentTestFeaturesNV>, 19526 features_shader_core_builtins_arm: Option<ash::vk::PhysicalDeviceShaderCoreBuiltinsFeaturesARM>, 19527 features_shader_early_and_late_fragment_tests_amd: 19528 Option<ash::vk::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD>, 19529 features_shader_image_footprint_nv: 19530 Option<ash::vk::PhysicalDeviceShaderImageFootprintFeaturesNV>, 19531 features_shader_integer_functions2_intel: 19532 Option<ash::vk::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>, 19533 features_shader_sm_builtins_nv: Option<ash::vk::PhysicalDeviceShaderSMBuiltinsFeaturesNV>, 19534 features_shading_rate_image_nv: Option<ash::vk::PhysicalDeviceShadingRateImageFeaturesNV>, 19535 features_subpass_shading_huawei: Option<ash::vk::PhysicalDeviceSubpassShadingFeaturesHUAWEI>, 19536 features_tile_properties_qcom: Option<ash::vk::PhysicalDeviceTilePropertiesFeaturesQCOM>, 19537 } 19538 impl FeaturesFfi { make_chain( &mut self, api_version: crate::Version, device_extensions: &crate::device::DeviceExtensions, _instance_extensions: &crate::instance::InstanceExtensions, )19539 pub(crate) fn make_chain( 19540 &mut self, 19541 api_version: crate::Version, 19542 device_extensions: &crate::device::DeviceExtensions, 19543 _instance_extensions: &crate::instance::InstanceExtensions, 19544 ) { 19545 self.features_vulkan10 = Default::default(); 19546 let head = &mut self.features_vulkan10; 19547 if [api_version >= crate::Version::V1_2].into_iter().any(|x| x) && [].into_iter().all(|x| x) 19548 { 19549 self.features_vulkan11 = Some(Default::default()); 19550 let member = self.features_vulkan11.as_mut().unwrap(); 19551 member.p_next = head.p_next; 19552 head.p_next = member as *mut _ as _; 19553 } 19554 if [api_version >= crate::Version::V1_2].into_iter().any(|x| x) && [].into_iter().all(|x| x) 19555 { 19556 self.features_vulkan12 = Some(Default::default()); 19557 let member = self.features_vulkan12.as_mut().unwrap(); 19558 member.p_next = head.p_next; 19559 head.p_next = member as *mut _ as _; 19560 } 19561 if [api_version >= crate::Version::V1_3].into_iter().any(|x| x) && [].into_iter().all(|x| x) 19562 { 19563 self.features_vulkan13 = Some(Default::default()); 19564 let member = self.features_vulkan13.as_mut().unwrap(); 19565 member.p_next = head.p_next; 19566 head.p_next = member as *mut _ as _; 19567 } 19568 if [ 19569 api_version >= crate::Version::V1_1, 19570 device_extensions.khr_16bit_storage, 19571 ] 19572 .into_iter() 19573 .any(|x| x) 19574 && [self.features_vulkan11.is_none()].into_iter().all(|x| x) 19575 { 19576 self.features_16bit_storage = Some(Default::default()); 19577 let member = self.features_16bit_storage.as_mut().unwrap(); 19578 member.p_next = head.p_next; 19579 head.p_next = member as *mut _ as _; 19580 } 19581 if [ 19582 api_version >= crate::Version::V1_1, 19583 device_extensions.khr_multiview, 19584 ] 19585 .into_iter() 19586 .any(|x| x) 19587 && [self.features_vulkan11.is_none()].into_iter().all(|x| x) 19588 { 19589 self.features_multiview = Some(Default::default()); 19590 let member = self.features_multiview.as_mut().unwrap(); 19591 member.p_next = head.p_next; 19592 head.p_next = member as *mut _ as _; 19593 } 19594 if [api_version >= crate::Version::V1_1].into_iter().any(|x| x) 19595 && [self.features_vulkan11.is_none()].into_iter().all(|x| x) 19596 { 19597 self.features_protected_memory = Some(Default::default()); 19598 let member = self.features_protected_memory.as_mut().unwrap(); 19599 member.p_next = head.p_next; 19600 head.p_next = member as *mut _ as _; 19601 } 19602 if [ 19603 api_version >= crate::Version::V1_1, 19604 device_extensions.khr_sampler_ycbcr_conversion, 19605 ] 19606 .into_iter() 19607 .any(|x| x) 19608 && [self.features_vulkan11.is_none()].into_iter().all(|x| x) 19609 { 19610 self.features_sampler_ycbcr_conversion = Some(Default::default()); 19611 let member = self.features_sampler_ycbcr_conversion.as_mut().unwrap(); 19612 member.p_next = head.p_next; 19613 head.p_next = member as *mut _ as _; 19614 } 19615 if [api_version >= crate::Version::V1_1].into_iter().any(|x| x) 19616 && [self.features_vulkan11.is_none()].into_iter().all(|x| x) 19617 { 19618 self.features_shader_draw_parameters = Some(Default::default()); 19619 let member = self.features_shader_draw_parameters.as_mut().unwrap(); 19620 member.p_next = head.p_next; 19621 head.p_next = member as *mut _ as _; 19622 } 19623 if [ 19624 api_version >= crate::Version::V1_1, 19625 device_extensions.khr_variable_pointers, 19626 ] 19627 .into_iter() 19628 .any(|x| x) 19629 && [self.features_vulkan11.is_none()].into_iter().all(|x| x) 19630 { 19631 self.features_variable_pointers = Some(Default::default()); 19632 let member = self.features_variable_pointers.as_mut().unwrap(); 19633 member.p_next = head.p_next; 19634 head.p_next = member as *mut _ as _; 19635 } 19636 if [ 19637 api_version >= crate::Version::V1_2, 19638 device_extensions.khr_8bit_storage, 19639 ] 19640 .into_iter() 19641 .any(|x| x) 19642 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19643 { 19644 self.features_8bit_storage = Some(Default::default()); 19645 let member = self.features_8bit_storage.as_mut().unwrap(); 19646 member.p_next = head.p_next; 19647 head.p_next = member as *mut _ as _; 19648 } 19649 if [ 19650 api_version >= crate::Version::V1_2, 19651 device_extensions.khr_buffer_device_address, 19652 ] 19653 .into_iter() 19654 .any(|x| x) 19655 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19656 { 19657 self.features_buffer_device_address = Some(Default::default()); 19658 let member = self.features_buffer_device_address.as_mut().unwrap(); 19659 member.p_next = head.p_next; 19660 head.p_next = member as *mut _ as _; 19661 } 19662 if [ 19663 api_version >= crate::Version::V1_2, 19664 device_extensions.ext_descriptor_indexing, 19665 ] 19666 .into_iter() 19667 .any(|x| x) 19668 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19669 { 19670 self.features_descriptor_indexing = Some(Default::default()); 19671 let member = self.features_descriptor_indexing.as_mut().unwrap(); 19672 member.p_next = head.p_next; 19673 head.p_next = member as *mut _ as _; 19674 } 19675 if [ 19676 api_version >= crate::Version::V1_2, 19677 device_extensions.ext_host_query_reset, 19678 ] 19679 .into_iter() 19680 .any(|x| x) 19681 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19682 { 19683 self.features_host_query_reset = Some(Default::default()); 19684 let member = self.features_host_query_reset.as_mut().unwrap(); 19685 member.p_next = head.p_next; 19686 head.p_next = member as *mut _ as _; 19687 } 19688 if [ 19689 api_version >= crate::Version::V1_2, 19690 device_extensions.khr_imageless_framebuffer, 19691 ] 19692 .into_iter() 19693 .any(|x| x) 19694 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19695 { 19696 self.features_imageless_framebuffer = Some(Default::default()); 19697 let member = self.features_imageless_framebuffer.as_mut().unwrap(); 19698 member.p_next = head.p_next; 19699 head.p_next = member as *mut _ as _; 19700 } 19701 if [ 19702 api_version >= crate::Version::V1_2, 19703 device_extensions.ext_scalar_block_layout, 19704 ] 19705 .into_iter() 19706 .any(|x| x) 19707 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19708 { 19709 self.features_scalar_block_layout = Some(Default::default()); 19710 let member = self.features_scalar_block_layout.as_mut().unwrap(); 19711 member.p_next = head.p_next; 19712 head.p_next = member as *mut _ as _; 19713 } 19714 if [ 19715 api_version >= crate::Version::V1_2, 19716 device_extensions.khr_separate_depth_stencil_layouts, 19717 ] 19718 .into_iter() 19719 .any(|x| x) 19720 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19721 { 19722 self.features_separate_depth_stencil_layouts = Some(Default::default()); 19723 let member = self 19724 .features_separate_depth_stencil_layouts 19725 .as_mut() 19726 .unwrap(); 19727 member.p_next = head.p_next; 19728 head.p_next = member as *mut _ as _; 19729 } 19730 if [ 19731 api_version >= crate::Version::V1_2, 19732 device_extensions.khr_shader_atomic_int64, 19733 ] 19734 .into_iter() 19735 .any(|x| x) 19736 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19737 { 19738 self.features_shader_atomic_int64 = Some(Default::default()); 19739 let member = self.features_shader_atomic_int64.as_mut().unwrap(); 19740 member.p_next = head.p_next; 19741 head.p_next = member as *mut _ as _; 19742 } 19743 if [ 19744 api_version >= crate::Version::V1_2, 19745 device_extensions.khr_shader_float16_int8, 19746 ] 19747 .into_iter() 19748 .any(|x| x) 19749 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19750 { 19751 self.features_shader_float16_int8 = Some(Default::default()); 19752 let member = self.features_shader_float16_int8.as_mut().unwrap(); 19753 member.p_next = head.p_next; 19754 head.p_next = member as *mut _ as _; 19755 } 19756 if [ 19757 api_version >= crate::Version::V1_2, 19758 device_extensions.khr_shader_subgroup_extended_types, 19759 ] 19760 .into_iter() 19761 .any(|x| x) 19762 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19763 { 19764 self.features_shader_subgroup_extended_types = Some(Default::default()); 19765 let member = self 19766 .features_shader_subgroup_extended_types 19767 .as_mut() 19768 .unwrap(); 19769 member.p_next = head.p_next; 19770 head.p_next = member as *mut _ as _; 19771 } 19772 if [ 19773 api_version >= crate::Version::V1_2, 19774 device_extensions.khr_timeline_semaphore, 19775 ] 19776 .into_iter() 19777 .any(|x| x) 19778 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19779 { 19780 self.features_timeline_semaphore = Some(Default::default()); 19781 let member = self.features_timeline_semaphore.as_mut().unwrap(); 19782 member.p_next = head.p_next; 19783 head.p_next = member as *mut _ as _; 19784 } 19785 if [ 19786 api_version >= crate::Version::V1_2, 19787 device_extensions.khr_uniform_buffer_standard_layout, 19788 ] 19789 .into_iter() 19790 .any(|x| x) 19791 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19792 { 19793 self.features_uniform_buffer_standard_layout = Some(Default::default()); 19794 let member = self 19795 .features_uniform_buffer_standard_layout 19796 .as_mut() 19797 .unwrap(); 19798 member.p_next = head.p_next; 19799 head.p_next = member as *mut _ as _; 19800 } 19801 if [ 19802 api_version >= crate::Version::V1_2, 19803 device_extensions.khr_vulkan_memory_model, 19804 ] 19805 .into_iter() 19806 .any(|x| x) 19807 && [self.features_vulkan12.is_none()].into_iter().all(|x| x) 19808 { 19809 self.features_vulkan_memory_model = Some(Default::default()); 19810 let member = self.features_vulkan_memory_model.as_mut().unwrap(); 19811 member.p_next = head.p_next; 19812 head.p_next = member as *mut _ as _; 19813 } 19814 if [ 19815 api_version >= crate::Version::V1_3, 19816 device_extensions.khr_dynamic_rendering, 19817 ] 19818 .into_iter() 19819 .any(|x| x) 19820 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19821 { 19822 self.features_dynamic_rendering = Some(Default::default()); 19823 let member = self.features_dynamic_rendering.as_mut().unwrap(); 19824 member.p_next = head.p_next; 19825 head.p_next = member as *mut _ as _; 19826 } 19827 if [ 19828 api_version >= crate::Version::V1_3, 19829 device_extensions.ext_image_robustness, 19830 ] 19831 .into_iter() 19832 .any(|x| x) 19833 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19834 { 19835 self.features_image_robustness = Some(Default::default()); 19836 let member = self.features_image_robustness.as_mut().unwrap(); 19837 member.p_next = head.p_next; 19838 head.p_next = member as *mut _ as _; 19839 } 19840 if [ 19841 api_version >= crate::Version::V1_3, 19842 device_extensions.ext_inline_uniform_block, 19843 ] 19844 .into_iter() 19845 .any(|x| x) 19846 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19847 { 19848 self.features_inline_uniform_block = Some(Default::default()); 19849 let member = self.features_inline_uniform_block.as_mut().unwrap(); 19850 member.p_next = head.p_next; 19851 head.p_next = member as *mut _ as _; 19852 } 19853 if [ 19854 api_version >= crate::Version::V1_3, 19855 device_extensions.khr_maintenance4, 19856 ] 19857 .into_iter() 19858 .any(|x| x) 19859 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19860 { 19861 self.features_maintenance4 = Some(Default::default()); 19862 let member = self.features_maintenance4.as_mut().unwrap(); 19863 member.p_next = head.p_next; 19864 head.p_next = member as *mut _ as _; 19865 } 19866 if [ 19867 api_version >= crate::Version::V1_3, 19868 device_extensions.ext_pipeline_creation_cache_control, 19869 ] 19870 .into_iter() 19871 .any(|x| x) 19872 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19873 { 19874 self.features_pipeline_creation_cache_control = Some(Default::default()); 19875 let member = self 19876 .features_pipeline_creation_cache_control 19877 .as_mut() 19878 .unwrap(); 19879 member.p_next = head.p_next; 19880 head.p_next = member as *mut _ as _; 19881 } 19882 if [ 19883 api_version >= crate::Version::V1_3, 19884 device_extensions.ext_private_data, 19885 ] 19886 .into_iter() 19887 .any(|x| x) 19888 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19889 { 19890 self.features_private_data = Some(Default::default()); 19891 let member = self.features_private_data.as_mut().unwrap(); 19892 member.p_next = head.p_next; 19893 head.p_next = member as *mut _ as _; 19894 } 19895 if [ 19896 api_version >= crate::Version::V1_3, 19897 device_extensions.ext_shader_demote_to_helper_invocation, 19898 ] 19899 .into_iter() 19900 .any(|x| x) 19901 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19902 { 19903 self.features_shader_demote_to_helper_invocation = Some(Default::default()); 19904 let member = self 19905 .features_shader_demote_to_helper_invocation 19906 .as_mut() 19907 .unwrap(); 19908 member.p_next = head.p_next; 19909 head.p_next = member as *mut _ as _; 19910 } 19911 if [ 19912 api_version >= crate::Version::V1_3, 19913 device_extensions.khr_shader_integer_dot_product, 19914 ] 19915 .into_iter() 19916 .any(|x| x) 19917 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19918 { 19919 self.features_shader_integer_dot_product = Some(Default::default()); 19920 let member = self.features_shader_integer_dot_product.as_mut().unwrap(); 19921 member.p_next = head.p_next; 19922 head.p_next = member as *mut _ as _; 19923 } 19924 if [ 19925 api_version >= crate::Version::V1_3, 19926 device_extensions.khr_shader_terminate_invocation, 19927 ] 19928 .into_iter() 19929 .any(|x| x) 19930 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19931 { 19932 self.features_shader_terminate_invocation = Some(Default::default()); 19933 let member = self.features_shader_terminate_invocation.as_mut().unwrap(); 19934 member.p_next = head.p_next; 19935 head.p_next = member as *mut _ as _; 19936 } 19937 if [ 19938 api_version >= crate::Version::V1_3, 19939 device_extensions.ext_subgroup_size_control, 19940 ] 19941 .into_iter() 19942 .any(|x| x) 19943 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19944 { 19945 self.features_subgroup_size_control = Some(Default::default()); 19946 let member = self.features_subgroup_size_control.as_mut().unwrap(); 19947 member.p_next = head.p_next; 19948 head.p_next = member as *mut _ as _; 19949 } 19950 if [ 19951 api_version >= crate::Version::V1_3, 19952 device_extensions.khr_synchronization2, 19953 ] 19954 .into_iter() 19955 .any(|x| x) 19956 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19957 { 19958 self.features_synchronization2 = Some(Default::default()); 19959 let member = self.features_synchronization2.as_mut().unwrap(); 19960 member.p_next = head.p_next; 19961 head.p_next = member as *mut _ as _; 19962 } 19963 if [ 19964 api_version >= crate::Version::V1_3, 19965 device_extensions.ext_texture_compression_astc_hdr, 19966 ] 19967 .into_iter() 19968 .any(|x| x) 19969 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19970 { 19971 self.features_texture_compression_astchdr = Some(Default::default()); 19972 let member = self.features_texture_compression_astchdr.as_mut().unwrap(); 19973 member.p_next = head.p_next; 19974 head.p_next = member as *mut _ as _; 19975 } 19976 if [ 19977 api_version >= crate::Version::V1_3, 19978 device_extensions.khr_zero_initialize_workgroup_memory, 19979 ] 19980 .into_iter() 19981 .any(|x| x) 19982 && [self.features_vulkan13.is_none()].into_iter().all(|x| x) 19983 { 19984 self.features_zero_initialize_workgroup_memory = Some(Default::default()); 19985 let member = self 19986 .features_zero_initialize_workgroup_memory 19987 .as_mut() 19988 .unwrap(); 19989 member.p_next = head.p_next; 19990 head.p_next = member as *mut _ as _; 19991 } 19992 if [device_extensions.khr_acceleration_structure] 19993 .into_iter() 19994 .any(|x| x) 19995 && [].into_iter().all(|x| x) 19996 { 19997 self.features_acceleration_structure_khr = Some(Default::default()); 19998 let member = self.features_acceleration_structure_khr.as_mut().unwrap(); 19999 member.p_next = head.p_next; 20000 head.p_next = member as *mut _ as _; 20001 } 20002 if [ 20003 device_extensions.khr_fragment_shader_barycentric, 20004 device_extensions.nv_fragment_shader_barycentric, 20005 ] 20006 .into_iter() 20007 .any(|x| x) 20008 && [].into_iter().all(|x| x) 20009 { 20010 self.features_fragment_shader_barycentric_khr = Some(Default::default()); 20011 let member = self 20012 .features_fragment_shader_barycentric_khr 20013 .as_mut() 20014 .unwrap(); 20015 member.p_next = head.p_next; 20016 head.p_next = member as *mut _ as _; 20017 } 20018 if [device_extensions.khr_fragment_shading_rate] 20019 .into_iter() 20020 .any(|x| x) 20021 && [].into_iter().all(|x| x) 20022 { 20023 self.features_fragment_shading_rate_khr = Some(Default::default()); 20024 let member = self.features_fragment_shading_rate_khr.as_mut().unwrap(); 20025 member.p_next = head.p_next; 20026 head.p_next = member as *mut _ as _; 20027 } 20028 if [ 20029 device_extensions.khr_global_priority, 20030 device_extensions.ext_global_priority_query, 20031 ] 20032 .into_iter() 20033 .any(|x| x) 20034 && [].into_iter().all(|x| x) 20035 { 20036 self.features_global_priority_query_khr = Some(Default::default()); 20037 let member = self.features_global_priority_query_khr.as_mut().unwrap(); 20038 member.p_next = head.p_next; 20039 head.p_next = member as *mut _ as _; 20040 } 20041 if [device_extensions.khr_performance_query] 20042 .into_iter() 20043 .any(|x| x) 20044 && [].into_iter().all(|x| x) 20045 { 20046 self.features_performance_query_khr = Some(Default::default()); 20047 let member = self.features_performance_query_khr.as_mut().unwrap(); 20048 member.p_next = head.p_next; 20049 head.p_next = member as *mut _ as _; 20050 } 20051 if [device_extensions.khr_pipeline_executable_properties] 20052 .into_iter() 20053 .any(|x| x) 20054 && [].into_iter().all(|x| x) 20055 { 20056 self.features_pipeline_executable_properties_khr = Some(Default::default()); 20057 let member = self 20058 .features_pipeline_executable_properties_khr 20059 .as_mut() 20060 .unwrap(); 20061 member.p_next = head.p_next; 20062 head.p_next = member as *mut _ as _; 20063 } 20064 if [device_extensions.khr_portability_subset] 20065 .into_iter() 20066 .any(|x| x) 20067 && [].into_iter().all(|x| x) 20068 { 20069 self.features_portability_subset_khr = Some(Default::default()); 20070 let member = self.features_portability_subset_khr.as_mut().unwrap(); 20071 member.p_next = head.p_next; 20072 head.p_next = member as *mut _ as _; 20073 } 20074 if [device_extensions.khr_present_id].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 20075 self.features_present_id_khr = Some(Default::default()); 20076 let member = self.features_present_id_khr.as_mut().unwrap(); 20077 member.p_next = head.p_next; 20078 head.p_next = member as *mut _ as _; 20079 } 20080 if [device_extensions.khr_present_wait].into_iter().any(|x| x) && [].into_iter().all(|x| x) 20081 { 20082 self.features_present_wait_khr = Some(Default::default()); 20083 let member = self.features_present_wait_khr.as_mut().unwrap(); 20084 member.p_next = head.p_next; 20085 head.p_next = member as *mut _ as _; 20086 } 20087 if [device_extensions.khr_ray_query].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 20088 self.features_ray_query_khr = Some(Default::default()); 20089 let member = self.features_ray_query_khr.as_mut().unwrap(); 20090 member.p_next = head.p_next; 20091 head.p_next = member as *mut _ as _; 20092 } 20093 if [device_extensions.khr_ray_tracing_maintenance1] 20094 .into_iter() 20095 .any(|x| x) 20096 && [].into_iter().all(|x| x) 20097 { 20098 self.features_ray_tracing_maintenance1_khr = Some(Default::default()); 20099 let member = self.features_ray_tracing_maintenance1_khr.as_mut().unwrap(); 20100 member.p_next = head.p_next; 20101 head.p_next = member as *mut _ as _; 20102 } 20103 if [device_extensions.khr_ray_tracing_pipeline] 20104 .into_iter() 20105 .any(|x| x) 20106 && [].into_iter().all(|x| x) 20107 { 20108 self.features_ray_tracing_pipeline_khr = Some(Default::default()); 20109 let member = self.features_ray_tracing_pipeline_khr.as_mut().unwrap(); 20110 member.p_next = head.p_next; 20111 head.p_next = member as *mut _ as _; 20112 } 20113 if [device_extensions.khr_shader_clock].into_iter().any(|x| x) && [].into_iter().all(|x| x) 20114 { 20115 self.features_shader_clock_khr = Some(Default::default()); 20116 let member = self.features_shader_clock_khr.as_mut().unwrap(); 20117 member.p_next = head.p_next; 20118 head.p_next = member as *mut _ as _; 20119 } 20120 if [device_extensions.khr_shader_subgroup_uniform_control_flow] 20121 .into_iter() 20122 .any(|x| x) 20123 && [].into_iter().all(|x| x) 20124 { 20125 self.features_shader_subgroup_uniform_control_flow_khr = Some(Default::default()); 20126 let member = self 20127 .features_shader_subgroup_uniform_control_flow_khr 20128 .as_mut() 20129 .unwrap(); 20130 member.p_next = head.p_next; 20131 head.p_next = member as *mut _ as _; 20132 } 20133 if [device_extensions.khr_workgroup_memory_explicit_layout] 20134 .into_iter() 20135 .any(|x| x) 20136 && [].into_iter().all(|x| x) 20137 { 20138 self.features_workgroup_memory_explicit_layout_khr = Some(Default::default()); 20139 let member = self 20140 .features_workgroup_memory_explicit_layout_khr 20141 .as_mut() 20142 .unwrap(); 20143 member.p_next = head.p_next; 20144 head.p_next = member as *mut _ as _; 20145 } 20146 if [device_extensions.ext_4444_formats].into_iter().any(|x| x) && [].into_iter().all(|x| x) 20147 { 20148 self.features_4444formats_ext = Some(Default::default()); 20149 let member = self.features_4444formats_ext.as_mut().unwrap(); 20150 member.p_next = head.p_next; 20151 head.p_next = member as *mut _ as _; 20152 } 20153 if [device_extensions.ext_astc_decode_mode] 20154 .into_iter() 20155 .any(|x| x) 20156 && [].into_iter().all(|x| x) 20157 { 20158 self.features_astc_decode_ext = Some(Default::default()); 20159 let member = self.features_astc_decode_ext.as_mut().unwrap(); 20160 member.p_next = head.p_next; 20161 head.p_next = member as *mut _ as _; 20162 } 20163 if [device_extensions.ext_device_address_binding_report] 20164 .into_iter() 20165 .any(|x| x) 20166 && [].into_iter().all(|x| x) 20167 { 20168 self.features_address_binding_report_ext = Some(Default::default()); 20169 let member = self.features_address_binding_report_ext.as_mut().unwrap(); 20170 member.p_next = head.p_next; 20171 head.p_next = member as *mut _ as _; 20172 } 20173 if [device_extensions.ext_attachment_feedback_loop_layout] 20174 .into_iter() 20175 .any(|x| x) 20176 && [].into_iter().all(|x| x) 20177 { 20178 self.features_attachment_feedback_loop_layout_ext = Some(Default::default()); 20179 let member = self 20180 .features_attachment_feedback_loop_layout_ext 20181 .as_mut() 20182 .unwrap(); 20183 member.p_next = head.p_next; 20184 head.p_next = member as *mut _ as _; 20185 } 20186 if [device_extensions.ext_blend_operation_advanced] 20187 .into_iter() 20188 .any(|x| x) 20189 && [].into_iter().all(|x| x) 20190 { 20191 self.features_blend_operation_advanced_ext = Some(Default::default()); 20192 let member = self.features_blend_operation_advanced_ext.as_mut().unwrap(); 20193 member.p_next = head.p_next; 20194 head.p_next = member as *mut _ as _; 20195 } 20196 if [device_extensions.ext_border_color_swizzle] 20197 .into_iter() 20198 .any(|x| x) 20199 && [].into_iter().all(|x| x) 20200 { 20201 self.features_border_color_swizzle_ext = Some(Default::default()); 20202 let member = self.features_border_color_swizzle_ext.as_mut().unwrap(); 20203 member.p_next = head.p_next; 20204 head.p_next = member as *mut _ as _; 20205 } 20206 if [device_extensions.ext_buffer_device_address] 20207 .into_iter() 20208 .any(|x| x) 20209 && [ 20210 self.features_vulkan12.is_none(), 20211 self.features_buffer_device_address.is_none(), 20212 ] 20213 .into_iter() 20214 .all(|x| x) 20215 { 20216 self.features_buffer_device_address_ext = Some(Default::default()); 20217 let member = self.features_buffer_device_address_ext.as_mut().unwrap(); 20218 member.p_next = head.p_next; 20219 head.p_next = member as *mut _ as _; 20220 } 20221 if [device_extensions.ext_color_write_enable] 20222 .into_iter() 20223 .any(|x| x) 20224 && [].into_iter().all(|x| x) 20225 { 20226 self.features_color_write_enable_ext = Some(Default::default()); 20227 let member = self.features_color_write_enable_ext.as_mut().unwrap(); 20228 member.p_next = head.p_next; 20229 head.p_next = member as *mut _ as _; 20230 } 20231 if [device_extensions.ext_conditional_rendering] 20232 .into_iter() 20233 .any(|x| x) 20234 && [].into_iter().all(|x| x) 20235 { 20236 self.features_conditional_rendering_ext = Some(Default::default()); 20237 let member = self.features_conditional_rendering_ext.as_mut().unwrap(); 20238 member.p_next = head.p_next; 20239 head.p_next = member as *mut _ as _; 20240 } 20241 if [device_extensions.ext_custom_border_color] 20242 .into_iter() 20243 .any(|x| x) 20244 && [].into_iter().all(|x| x) 20245 { 20246 self.features_custom_border_color_ext = Some(Default::default()); 20247 let member = self.features_custom_border_color_ext.as_mut().unwrap(); 20248 member.p_next = head.p_next; 20249 head.p_next = member as *mut _ as _; 20250 } 20251 if [device_extensions.ext_depth_clamp_zero_one] 20252 .into_iter() 20253 .any(|x| x) 20254 && [].into_iter().all(|x| x) 20255 { 20256 self.features_depth_clamp_zero_one_ext = Some(Default::default()); 20257 let member = self.features_depth_clamp_zero_one_ext.as_mut().unwrap(); 20258 member.p_next = head.p_next; 20259 head.p_next = member as *mut _ as _; 20260 } 20261 if [device_extensions.ext_depth_clip_control] 20262 .into_iter() 20263 .any(|x| x) 20264 && [].into_iter().all(|x| x) 20265 { 20266 self.features_depth_clip_control_ext = Some(Default::default()); 20267 let member = self.features_depth_clip_control_ext.as_mut().unwrap(); 20268 member.p_next = head.p_next; 20269 head.p_next = member as *mut _ as _; 20270 } 20271 if [device_extensions.ext_depth_clip_enable] 20272 .into_iter() 20273 .any(|x| x) 20274 && [].into_iter().all(|x| x) 20275 { 20276 self.features_depth_clip_enable_ext = Some(Default::default()); 20277 let member = self.features_depth_clip_enable_ext.as_mut().unwrap(); 20278 member.p_next = head.p_next; 20279 head.p_next = member as *mut _ as _; 20280 } 20281 if [device_extensions.ext_descriptor_buffer] 20282 .into_iter() 20283 .any(|x| x) 20284 && [].into_iter().all(|x| x) 20285 { 20286 self.features_descriptor_buffer_ext = Some(Default::default()); 20287 let member = self.features_descriptor_buffer_ext.as_mut().unwrap(); 20288 member.p_next = head.p_next; 20289 head.p_next = member as *mut _ as _; 20290 } 20291 if [device_extensions.ext_device_memory_report] 20292 .into_iter() 20293 .any(|x| x) 20294 && [].into_iter().all(|x| x) 20295 { 20296 self.features_device_memory_report_ext = Some(Default::default()); 20297 let member = self.features_device_memory_report_ext.as_mut().unwrap(); 20298 member.p_next = head.p_next; 20299 head.p_next = member as *mut _ as _; 20300 } 20301 if [device_extensions.ext_extended_dynamic_state2] 20302 .into_iter() 20303 .any(|x| x) 20304 && [].into_iter().all(|x| x) 20305 { 20306 self.features_extended_dynamic_state2_ext = Some(Default::default()); 20307 let member = self.features_extended_dynamic_state2_ext.as_mut().unwrap(); 20308 member.p_next = head.p_next; 20309 head.p_next = member as *mut _ as _; 20310 } 20311 if [device_extensions.ext_extended_dynamic_state3] 20312 .into_iter() 20313 .any(|x| x) 20314 && [].into_iter().all(|x| x) 20315 { 20316 self.features_extended_dynamic_state3_ext = Some(Default::default()); 20317 let member = self.features_extended_dynamic_state3_ext.as_mut().unwrap(); 20318 member.p_next = head.p_next; 20319 head.p_next = member as *mut _ as _; 20320 } 20321 if [device_extensions.ext_extended_dynamic_state] 20322 .into_iter() 20323 .any(|x| x) 20324 && [].into_iter().all(|x| x) 20325 { 20326 self.features_extended_dynamic_state_ext = Some(Default::default()); 20327 let member = self.features_extended_dynamic_state_ext.as_mut().unwrap(); 20328 member.p_next = head.p_next; 20329 head.p_next = member as *mut _ as _; 20330 } 20331 if [device_extensions.ext_device_fault].into_iter().any(|x| x) && [].into_iter().all(|x| x) 20332 { 20333 self.features_fault_ext = Some(Default::default()); 20334 let member = self.features_fault_ext.as_mut().unwrap(); 20335 member.p_next = head.p_next; 20336 head.p_next = member as *mut _ as _; 20337 } 20338 if [device_extensions.ext_fragment_density_map2] 20339 .into_iter() 20340 .any(|x| x) 20341 && [].into_iter().all(|x| x) 20342 { 20343 self.features_fragment_density_map2_ext = Some(Default::default()); 20344 let member = self.features_fragment_density_map2_ext.as_mut().unwrap(); 20345 member.p_next = head.p_next; 20346 head.p_next = member as *mut _ as _; 20347 } 20348 if [device_extensions.ext_fragment_density_map] 20349 .into_iter() 20350 .any(|x| x) 20351 && [].into_iter().all(|x| x) 20352 { 20353 self.features_fragment_density_map_ext = Some(Default::default()); 20354 let member = self.features_fragment_density_map_ext.as_mut().unwrap(); 20355 member.p_next = head.p_next; 20356 head.p_next = member as *mut _ as _; 20357 } 20358 if [device_extensions.ext_fragment_shader_interlock] 20359 .into_iter() 20360 .any(|x| x) 20361 && [].into_iter().all(|x| x) 20362 { 20363 self.features_fragment_shader_interlock_ext = Some(Default::default()); 20364 let member = self 20365 .features_fragment_shader_interlock_ext 20366 .as_mut() 20367 .unwrap(); 20368 member.p_next = head.p_next; 20369 head.p_next = member as *mut _ as _; 20370 } 20371 if [device_extensions.ext_graphics_pipeline_library] 20372 .into_iter() 20373 .any(|x| x) 20374 && [].into_iter().all(|x| x) 20375 { 20376 self.features_graphics_pipeline_library_ext = Some(Default::default()); 20377 let member = self 20378 .features_graphics_pipeline_library_ext 20379 .as_mut() 20380 .unwrap(); 20381 member.p_next = head.p_next; 20382 head.p_next = member as *mut _ as _; 20383 } 20384 if [device_extensions.ext_image_2d_view_of_3d] 20385 .into_iter() 20386 .any(|x| x) 20387 && [].into_iter().all(|x| x) 20388 { 20389 self.features_image2_d_view_of3_d_ext = Some(Default::default()); 20390 let member = self.features_image2_d_view_of3_d_ext.as_mut().unwrap(); 20391 member.p_next = head.p_next; 20392 head.p_next = member as *mut _ as _; 20393 } 20394 if [device_extensions.ext_image_compression_control] 20395 .into_iter() 20396 .any(|x| x) 20397 && [].into_iter().all(|x| x) 20398 { 20399 self.features_image_compression_control_ext = Some(Default::default()); 20400 let member = self 20401 .features_image_compression_control_ext 20402 .as_mut() 20403 .unwrap(); 20404 member.p_next = head.p_next; 20405 head.p_next = member as *mut _ as _; 20406 } 20407 if [device_extensions.ext_image_compression_control_swapchain] 20408 .into_iter() 20409 .any(|x| x) 20410 && [].into_iter().all(|x| x) 20411 { 20412 self.features_image_compression_control_swapchain_ext = Some(Default::default()); 20413 let member = self 20414 .features_image_compression_control_swapchain_ext 20415 .as_mut() 20416 .unwrap(); 20417 member.p_next = head.p_next; 20418 head.p_next = member as *mut _ as _; 20419 } 20420 if [device_extensions.ext_image_view_min_lod] 20421 .into_iter() 20422 .any(|x| x) 20423 && [].into_iter().all(|x| x) 20424 { 20425 self.features_image_view_min_lod_ext = Some(Default::default()); 20426 let member = self.features_image_view_min_lod_ext.as_mut().unwrap(); 20427 member.p_next = head.p_next; 20428 head.p_next = member as *mut _ as _; 20429 } 20430 if [device_extensions.ext_index_type_uint8] 20431 .into_iter() 20432 .any(|x| x) 20433 && [].into_iter().all(|x| x) 20434 { 20435 self.features_index_type_uint8_ext = Some(Default::default()); 20436 let member = self.features_index_type_uint8_ext.as_mut().unwrap(); 20437 member.p_next = head.p_next; 20438 head.p_next = member as *mut _ as _; 20439 } 20440 if [device_extensions.ext_legacy_dithering] 20441 .into_iter() 20442 .any(|x| x) 20443 && [].into_iter().all(|x| x) 20444 { 20445 self.features_legacy_dithering_ext = Some(Default::default()); 20446 let member = self.features_legacy_dithering_ext.as_mut().unwrap(); 20447 member.p_next = head.p_next; 20448 head.p_next = member as *mut _ as _; 20449 } 20450 if [device_extensions.ext_line_rasterization] 20451 .into_iter() 20452 .any(|x| x) 20453 && [].into_iter().all(|x| x) 20454 { 20455 self.features_line_rasterization_ext = Some(Default::default()); 20456 let member = self.features_line_rasterization_ext.as_mut().unwrap(); 20457 member.p_next = head.p_next; 20458 head.p_next = member as *mut _ as _; 20459 } 20460 if [device_extensions.ext_memory_priority] 20461 .into_iter() 20462 .any(|x| x) 20463 && [].into_iter().all(|x| x) 20464 { 20465 self.features_memory_priority_ext = Some(Default::default()); 20466 let member = self.features_memory_priority_ext.as_mut().unwrap(); 20467 member.p_next = head.p_next; 20468 head.p_next = member as *mut _ as _; 20469 } 20470 if [device_extensions.ext_mesh_shader].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 20471 self.features_mesh_shader_ext = Some(Default::default()); 20472 let member = self.features_mesh_shader_ext.as_mut().unwrap(); 20473 member.p_next = head.p_next; 20474 head.p_next = member as *mut _ as _; 20475 } 20476 if [device_extensions.ext_multi_draw].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 20477 self.features_multi_draw_ext = Some(Default::default()); 20478 let member = self.features_multi_draw_ext.as_mut().unwrap(); 20479 member.p_next = head.p_next; 20480 head.p_next = member as *mut _ as _; 20481 } 20482 if [device_extensions.ext_multisampled_render_to_single_sampled] 20483 .into_iter() 20484 .any(|x| x) 20485 && [].into_iter().all(|x| x) 20486 { 20487 self.features_multisampled_render_to_single_sampled_ext = Some(Default::default()); 20488 let member = self 20489 .features_multisampled_render_to_single_sampled_ext 20490 .as_mut() 20491 .unwrap(); 20492 member.p_next = head.p_next; 20493 head.p_next = member as *mut _ as _; 20494 } 20495 if [ 20496 device_extensions.ext_mutable_descriptor_type, 20497 device_extensions.valve_mutable_descriptor_type, 20498 ] 20499 .into_iter() 20500 .any(|x| x) 20501 && [].into_iter().all(|x| x) 20502 { 20503 self.features_mutable_descriptor_type_ext = Some(Default::default()); 20504 let member = self.features_mutable_descriptor_type_ext.as_mut().unwrap(); 20505 member.p_next = head.p_next; 20506 head.p_next = member as *mut _ as _; 20507 } 20508 if [device_extensions.ext_non_seamless_cube_map] 20509 .into_iter() 20510 .any(|x| x) 20511 && [].into_iter().all(|x| x) 20512 { 20513 self.features_non_seamless_cube_map_ext = Some(Default::default()); 20514 let member = self.features_non_seamless_cube_map_ext.as_mut().unwrap(); 20515 member.p_next = head.p_next; 20516 head.p_next = member as *mut _ as _; 20517 } 20518 if [device_extensions.ext_opacity_micromap] 20519 .into_iter() 20520 .any(|x| x) 20521 && [].into_iter().all(|x| x) 20522 { 20523 self.features_opacity_micromap_ext = Some(Default::default()); 20524 let member = self.features_opacity_micromap_ext.as_mut().unwrap(); 20525 member.p_next = head.p_next; 20526 head.p_next = member as *mut _ as _; 20527 } 20528 if [device_extensions.ext_pageable_device_local_memory] 20529 .into_iter() 20530 .any(|x| x) 20531 && [].into_iter().all(|x| x) 20532 { 20533 self.features_pageable_device_local_memory_ext = Some(Default::default()); 20534 let member = self 20535 .features_pageable_device_local_memory_ext 20536 .as_mut() 20537 .unwrap(); 20538 member.p_next = head.p_next; 20539 head.p_next = member as *mut _ as _; 20540 } 20541 if [device_extensions.ext_pipeline_properties] 20542 .into_iter() 20543 .any(|x| x) 20544 && [].into_iter().all(|x| x) 20545 { 20546 self.features_pipeline_properties_ext = Some(Default::default()); 20547 let member = self.features_pipeline_properties_ext.as_mut().unwrap(); 20548 member.p_next = head.p_next; 20549 head.p_next = member as *mut _ as _; 20550 } 20551 if [device_extensions.ext_pipeline_protected_access] 20552 .into_iter() 20553 .any(|x| x) 20554 && [].into_iter().all(|x| x) 20555 { 20556 self.features_pipeline_protected_access_ext = Some(Default::default()); 20557 let member = self 20558 .features_pipeline_protected_access_ext 20559 .as_mut() 20560 .unwrap(); 20561 member.p_next = head.p_next; 20562 head.p_next = member as *mut _ as _; 20563 } 20564 if [device_extensions.ext_pipeline_robustness] 20565 .into_iter() 20566 .any(|x| x) 20567 && [].into_iter().all(|x| x) 20568 { 20569 self.features_pipeline_robustness_ext = Some(Default::default()); 20570 let member = self.features_pipeline_robustness_ext.as_mut().unwrap(); 20571 member.p_next = head.p_next; 20572 head.p_next = member as *mut _ as _; 20573 } 20574 if [device_extensions.ext_primitive_topology_list_restart] 20575 .into_iter() 20576 .any(|x| x) 20577 && [].into_iter().all(|x| x) 20578 { 20579 self.features_primitive_topology_list_restart_ext = Some(Default::default()); 20580 let member = self 20581 .features_primitive_topology_list_restart_ext 20582 .as_mut() 20583 .unwrap(); 20584 member.p_next = head.p_next; 20585 head.p_next = member as *mut _ as _; 20586 } 20587 if [device_extensions.ext_primitives_generated_query] 20588 .into_iter() 20589 .any(|x| x) 20590 && [].into_iter().all(|x| x) 20591 { 20592 self.features_primitives_generated_query_ext = Some(Default::default()); 20593 let member = self 20594 .features_primitives_generated_query_ext 20595 .as_mut() 20596 .unwrap(); 20597 member.p_next = head.p_next; 20598 head.p_next = member as *mut _ as _; 20599 } 20600 if [device_extensions.ext_provoking_vertex] 20601 .into_iter() 20602 .any(|x| x) 20603 && [].into_iter().all(|x| x) 20604 { 20605 self.features_provoking_vertex_ext = Some(Default::default()); 20606 let member = self.features_provoking_vertex_ext.as_mut().unwrap(); 20607 member.p_next = head.p_next; 20608 head.p_next = member as *mut _ as _; 20609 } 20610 if [device_extensions.ext_rgba10x6_formats] 20611 .into_iter() 20612 .any(|x| x) 20613 && [].into_iter().all(|x| x) 20614 { 20615 self.features_rgba10x6_formats_ext = Some(Default::default()); 20616 let member = self.features_rgba10x6_formats_ext.as_mut().unwrap(); 20617 member.p_next = head.p_next; 20618 head.p_next = member as *mut _ as _; 20619 } 20620 if [ 20621 device_extensions.ext_rasterization_order_attachment_access, 20622 device_extensions.arm_rasterization_order_attachment_access, 20623 ] 20624 .into_iter() 20625 .any(|x| x) 20626 && [].into_iter().all(|x| x) 20627 { 20628 self.features_rasterization_order_attachment_access_ext = Some(Default::default()); 20629 let member = self 20630 .features_rasterization_order_attachment_access_ext 20631 .as_mut() 20632 .unwrap(); 20633 member.p_next = head.p_next; 20634 head.p_next = member as *mut _ as _; 20635 } 20636 if [device_extensions.ext_robustness2].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 20637 self.features_robustness2_ext = Some(Default::default()); 20638 let member = self.features_robustness2_ext.as_mut().unwrap(); 20639 member.p_next = head.p_next; 20640 head.p_next = member as *mut _ as _; 20641 } 20642 if [device_extensions.ext_shader_atomic_float2] 20643 .into_iter() 20644 .any(|x| x) 20645 && [].into_iter().all(|x| x) 20646 { 20647 self.features_shader_atomic_float2_ext = Some(Default::default()); 20648 let member = self.features_shader_atomic_float2_ext.as_mut().unwrap(); 20649 member.p_next = head.p_next; 20650 head.p_next = member as *mut _ as _; 20651 } 20652 if [device_extensions.ext_shader_atomic_float] 20653 .into_iter() 20654 .any(|x| x) 20655 && [].into_iter().all(|x| x) 20656 { 20657 self.features_shader_atomic_float_ext = Some(Default::default()); 20658 let member = self.features_shader_atomic_float_ext.as_mut().unwrap(); 20659 member.p_next = head.p_next; 20660 head.p_next = member as *mut _ as _; 20661 } 20662 if [device_extensions.ext_shader_image_atomic_int64] 20663 .into_iter() 20664 .any(|x| x) 20665 && [].into_iter().all(|x| x) 20666 { 20667 self.features_shader_image_atomic_int64_ext = Some(Default::default()); 20668 let member = self 20669 .features_shader_image_atomic_int64_ext 20670 .as_mut() 20671 .unwrap(); 20672 member.p_next = head.p_next; 20673 head.p_next = member as *mut _ as _; 20674 } 20675 if [device_extensions.ext_shader_module_identifier] 20676 .into_iter() 20677 .any(|x| x) 20678 && [].into_iter().all(|x| x) 20679 { 20680 self.features_shader_module_identifier_ext = Some(Default::default()); 20681 let member = self.features_shader_module_identifier_ext.as_mut().unwrap(); 20682 member.p_next = head.p_next; 20683 head.p_next = member as *mut _ as _; 20684 } 20685 if [device_extensions.ext_subpass_merge_feedback] 20686 .into_iter() 20687 .any(|x| x) 20688 && [].into_iter().all(|x| x) 20689 { 20690 self.features_subpass_merge_feedback_ext = Some(Default::default()); 20691 let member = self.features_subpass_merge_feedback_ext.as_mut().unwrap(); 20692 member.p_next = head.p_next; 20693 head.p_next = member as *mut _ as _; 20694 } 20695 if [device_extensions.ext_swapchain_maintenance1] 20696 .into_iter() 20697 .any(|x| x) 20698 && [].into_iter().all(|x| x) 20699 { 20700 self.features_swapchain_maintenance1_ext = Some(Default::default()); 20701 let member = self.features_swapchain_maintenance1_ext.as_mut().unwrap(); 20702 member.p_next = head.p_next; 20703 head.p_next = member as *mut _ as _; 20704 } 20705 if [device_extensions.ext_texel_buffer_alignment] 20706 .into_iter() 20707 .any(|x| x) 20708 && [].into_iter().all(|x| x) 20709 { 20710 self.features_texel_buffer_alignment_ext = Some(Default::default()); 20711 let member = self.features_texel_buffer_alignment_ext.as_mut().unwrap(); 20712 member.p_next = head.p_next; 20713 head.p_next = member as *mut _ as _; 20714 } 20715 if [device_extensions.ext_transform_feedback] 20716 .into_iter() 20717 .any(|x| x) 20718 && [].into_iter().all(|x| x) 20719 { 20720 self.features_transform_feedback_ext = Some(Default::default()); 20721 let member = self.features_transform_feedback_ext.as_mut().unwrap(); 20722 member.p_next = head.p_next; 20723 head.p_next = member as *mut _ as _; 20724 } 20725 if [device_extensions.ext_vertex_attribute_divisor] 20726 .into_iter() 20727 .any(|x| x) 20728 && [].into_iter().all(|x| x) 20729 { 20730 self.features_vertex_attribute_divisor_ext = Some(Default::default()); 20731 let member = self.features_vertex_attribute_divisor_ext.as_mut().unwrap(); 20732 member.p_next = head.p_next; 20733 head.p_next = member as *mut _ as _; 20734 } 20735 if [device_extensions.ext_vertex_input_dynamic_state] 20736 .into_iter() 20737 .any(|x| x) 20738 && [].into_iter().all(|x| x) 20739 { 20740 self.features_vertex_input_dynamic_state_ext = Some(Default::default()); 20741 let member = self 20742 .features_vertex_input_dynamic_state_ext 20743 .as_mut() 20744 .unwrap(); 20745 member.p_next = head.p_next; 20746 head.p_next = member as *mut _ as _; 20747 } 20748 if [device_extensions.ext_ycbcr_2plane_444_formats] 20749 .into_iter() 20750 .any(|x| x) 20751 && [].into_iter().all(|x| x) 20752 { 20753 self.features_ycbcr2_plane444_formats_ext = Some(Default::default()); 20754 let member = self.features_ycbcr2_plane444_formats_ext.as_mut().unwrap(); 20755 member.p_next = head.p_next; 20756 head.p_next = member as *mut _ as _; 20757 } 20758 if [device_extensions.ext_ycbcr_image_arrays] 20759 .into_iter() 20760 .any(|x| x) 20761 && [].into_iter().all(|x| x) 20762 { 20763 self.features_ycbcr_image_arrays_ext = Some(Default::default()); 20764 let member = self.features_ycbcr_image_arrays_ext.as_mut().unwrap(); 20765 member.p_next = head.p_next; 20766 head.p_next = member as *mut _ as _; 20767 } 20768 if [device_extensions.sec_amigo_profiling] 20769 .into_iter() 20770 .any(|x| x) 20771 && [].into_iter().all(|x| x) 20772 { 20773 self.features_amigo_profiling_sec = Some(Default::default()); 20774 let member = self.features_amigo_profiling_sec.as_mut().unwrap(); 20775 member.p_next = head.p_next; 20776 head.p_next = member as *mut _ as _; 20777 } 20778 if [device_extensions.amd_device_coherent_memory] 20779 .into_iter() 20780 .any(|x| x) 20781 && [].into_iter().all(|x| x) 20782 { 20783 self.features_coherent_memory_amd = Some(Default::default()); 20784 let member = self.features_coherent_memory_amd.as_mut().unwrap(); 20785 member.p_next = head.p_next; 20786 head.p_next = member as *mut _ as _; 20787 } 20788 if [device_extensions.nv_compute_shader_derivatives] 20789 .into_iter() 20790 .any(|x| x) 20791 && [].into_iter().all(|x| x) 20792 { 20793 self.features_compute_shader_derivatives_nv = Some(Default::default()); 20794 let member = self 20795 .features_compute_shader_derivatives_nv 20796 .as_mut() 20797 .unwrap(); 20798 member.p_next = head.p_next; 20799 head.p_next = member as *mut _ as _; 20800 } 20801 if [device_extensions.nv_cooperative_matrix] 20802 .into_iter() 20803 .any(|x| x) 20804 && [].into_iter().all(|x| x) 20805 { 20806 self.features_cooperative_matrix_nv = Some(Default::default()); 20807 let member = self.features_cooperative_matrix_nv.as_mut().unwrap(); 20808 member.p_next = head.p_next; 20809 head.p_next = member as *mut _ as _; 20810 } 20811 if [device_extensions.nv_copy_memory_indirect] 20812 .into_iter() 20813 .any(|x| x) 20814 && [].into_iter().all(|x| x) 20815 { 20816 self.features_copy_memory_indirect_nv = Some(Default::default()); 20817 let member = self.features_copy_memory_indirect_nv.as_mut().unwrap(); 20818 member.p_next = head.p_next; 20819 head.p_next = member as *mut _ as _; 20820 } 20821 if [device_extensions.nv_corner_sampled_image] 20822 .into_iter() 20823 .any(|x| x) 20824 && [].into_iter().all(|x| x) 20825 { 20826 self.features_corner_sampled_image_nv = Some(Default::default()); 20827 let member = self.features_corner_sampled_image_nv.as_mut().unwrap(); 20828 member.p_next = head.p_next; 20829 head.p_next = member as *mut _ as _; 20830 } 20831 if [device_extensions.nv_coverage_reduction_mode] 20832 .into_iter() 20833 .any(|x| x) 20834 && [].into_iter().all(|x| x) 20835 { 20836 self.features_coverage_reduction_mode_nv = Some(Default::default()); 20837 let member = self.features_coverage_reduction_mode_nv.as_mut().unwrap(); 20838 member.p_next = head.p_next; 20839 head.p_next = member as *mut _ as _; 20840 } 20841 if [device_extensions.nv_dedicated_allocation_image_aliasing] 20842 .into_iter() 20843 .any(|x| x) 20844 && [].into_iter().all(|x| x) 20845 { 20846 self.features_dedicated_allocation_image_aliasing_nv = Some(Default::default()); 20847 let member = self 20848 .features_dedicated_allocation_image_aliasing_nv 20849 .as_mut() 20850 .unwrap(); 20851 member.p_next = head.p_next; 20852 head.p_next = member as *mut _ as _; 20853 } 20854 if [device_extensions.valve_descriptor_set_host_mapping] 20855 .into_iter() 20856 .any(|x| x) 20857 && [].into_iter().all(|x| x) 20858 { 20859 self.features_descriptor_set_host_mapping_valve = Some(Default::default()); 20860 let member = self 20861 .features_descriptor_set_host_mapping_valve 20862 .as_mut() 20863 .unwrap(); 20864 member.p_next = head.p_next; 20865 head.p_next = member as *mut _ as _; 20866 } 20867 if [device_extensions.nv_device_generated_commands] 20868 .into_iter() 20869 .any(|x| x) 20870 && [].into_iter().all(|x| x) 20871 { 20872 self.features_device_generated_commands_nv = Some(Default::default()); 20873 let member = self.features_device_generated_commands_nv.as_mut().unwrap(); 20874 member.p_next = head.p_next; 20875 head.p_next = member as *mut _ as _; 20876 } 20877 if [device_extensions.nv_device_diagnostics_config] 20878 .into_iter() 20879 .any(|x| x) 20880 && [].into_iter().all(|x| x) 20881 { 20882 self.features_diagnostics_config_nv = Some(Default::default()); 20883 let member = self.features_diagnostics_config_nv.as_mut().unwrap(); 20884 member.p_next = head.p_next; 20885 head.p_next = member as *mut _ as _; 20886 } 20887 if [device_extensions.nv_scissor_exclusive] 20888 .into_iter() 20889 .any(|x| x) 20890 && [].into_iter().all(|x| x) 20891 { 20892 self.features_exclusive_scissor_nv = Some(Default::default()); 20893 let member = self.features_exclusive_scissor_nv.as_mut().unwrap(); 20894 member.p_next = head.p_next; 20895 head.p_next = member as *mut _ as _; 20896 } 20897 if [device_extensions.nv_external_memory_rdma] 20898 .into_iter() 20899 .any(|x| x) 20900 && [].into_iter().all(|x| x) 20901 { 20902 self.features_external_memory_rdma_nv = Some(Default::default()); 20903 let member = self.features_external_memory_rdma_nv.as_mut().unwrap(); 20904 member.p_next = head.p_next; 20905 head.p_next = member as *mut _ as _; 20906 } 20907 if [device_extensions.qcom_fragment_density_map_offset] 20908 .into_iter() 20909 .any(|x| x) 20910 && [].into_iter().all(|x| x) 20911 { 20912 self.features_fragment_density_map_offset_qcom = Some(Default::default()); 20913 let member = self 20914 .features_fragment_density_map_offset_qcom 20915 .as_mut() 20916 .unwrap(); 20917 member.p_next = head.p_next; 20918 head.p_next = member as *mut _ as _; 20919 } 20920 if [device_extensions.nv_fragment_shading_rate_enums] 20921 .into_iter() 20922 .any(|x| x) 20923 && [].into_iter().all(|x| x) 20924 { 20925 self.features_fragment_shading_rate_enums_nv = Some(Default::default()); 20926 let member = self 20927 .features_fragment_shading_rate_enums_nv 20928 .as_mut() 20929 .unwrap(); 20930 member.p_next = head.p_next; 20931 head.p_next = member as *mut _ as _; 20932 } 20933 if [device_extensions.qcom_image_processing] 20934 .into_iter() 20935 .any(|x| x) 20936 && [].into_iter().all(|x| x) 20937 { 20938 self.features_image_processing_qcom = Some(Default::default()); 20939 let member = self.features_image_processing_qcom.as_mut().unwrap(); 20940 member.p_next = head.p_next; 20941 head.p_next = member as *mut _ as _; 20942 } 20943 if [device_extensions.nv_inherited_viewport_scissor] 20944 .into_iter() 20945 .any(|x| x) 20946 && [].into_iter().all(|x| x) 20947 { 20948 self.features_inherited_viewport_scissor_nv = Some(Default::default()); 20949 let member = self 20950 .features_inherited_viewport_scissor_nv 20951 .as_mut() 20952 .unwrap(); 20953 member.p_next = head.p_next; 20954 head.p_next = member as *mut _ as _; 20955 } 20956 if [device_extensions.huawei_invocation_mask] 20957 .into_iter() 20958 .any(|x| x) 20959 && [].into_iter().all(|x| x) 20960 { 20961 self.features_invocation_mask_huawei = Some(Default::default()); 20962 let member = self.features_invocation_mask_huawei.as_mut().unwrap(); 20963 member.p_next = head.p_next; 20964 head.p_next = member as *mut _ as _; 20965 } 20966 if [device_extensions.nv_linear_color_attachment] 20967 .into_iter() 20968 .any(|x| x) 20969 && [].into_iter().all(|x| x) 20970 { 20971 self.features_linear_color_attachment_nv = Some(Default::default()); 20972 let member = self.features_linear_color_attachment_nv.as_mut().unwrap(); 20973 member.p_next = head.p_next; 20974 head.p_next = member as *mut _ as _; 20975 } 20976 if [device_extensions.nv_memory_decompression] 20977 .into_iter() 20978 .any(|x| x) 20979 && [].into_iter().all(|x| x) 20980 { 20981 self.features_memory_decompression_nv = Some(Default::default()); 20982 let member = self.features_memory_decompression_nv.as_mut().unwrap(); 20983 member.p_next = head.p_next; 20984 head.p_next = member as *mut _ as _; 20985 } 20986 if [device_extensions.nv_mesh_shader].into_iter().any(|x| x) 20987 && [self.features_mesh_shader_ext.is_none()] 20988 .into_iter() 20989 .all(|x| x) 20990 { 20991 self.features_mesh_shader_nv = Some(Default::default()); 20992 let member = self.features_mesh_shader_nv.as_mut().unwrap(); 20993 member.p_next = head.p_next; 20994 head.p_next = member as *mut _ as _; 20995 } 20996 if [device_extensions.qcom_multiview_per_view_viewports] 20997 .into_iter() 20998 .any(|x| x) 20999 && [].into_iter().all(|x| x) 21000 { 21001 self.features_multiview_per_view_viewports_qcom = Some(Default::default()); 21002 let member = self 21003 .features_multiview_per_view_viewports_qcom 21004 .as_mut() 21005 .unwrap(); 21006 member.p_next = head.p_next; 21007 head.p_next = member as *mut _ as _; 21008 } 21009 if [device_extensions.nv_optical_flow].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 21010 self.features_optical_flow_nv = Some(Default::default()); 21011 let member = self.features_optical_flow_nv.as_mut().unwrap(); 21012 member.p_next = head.p_next; 21013 head.p_next = member as *mut _ as _; 21014 } 21015 if [device_extensions.nv_present_barrier] 21016 .into_iter() 21017 .any(|x| x) 21018 && [].into_iter().all(|x| x) 21019 { 21020 self.features_present_barrier_nv = Some(Default::default()); 21021 let member = self.features_present_barrier_nv.as_mut().unwrap(); 21022 member.p_next = head.p_next; 21023 head.p_next = member as *mut _ as _; 21024 } 21025 if [device_extensions.nv_ray_tracing_invocation_reorder] 21026 .into_iter() 21027 .any(|x| x) 21028 && [].into_iter().all(|x| x) 21029 { 21030 self.features_ray_tracing_invocation_reorder_nv = Some(Default::default()); 21031 let member = self 21032 .features_ray_tracing_invocation_reorder_nv 21033 .as_mut() 21034 .unwrap(); 21035 member.p_next = head.p_next; 21036 head.p_next = member as *mut _ as _; 21037 } 21038 if [device_extensions.nv_ray_tracing_motion_blur] 21039 .into_iter() 21040 .any(|x| x) 21041 && [].into_iter().all(|x| x) 21042 { 21043 self.features_ray_tracing_motion_blur_nv = Some(Default::default()); 21044 let member = self.features_ray_tracing_motion_blur_nv.as_mut().unwrap(); 21045 member.p_next = head.p_next; 21046 head.p_next = member as *mut _ as _; 21047 } 21048 if [device_extensions.nv_representative_fragment_test] 21049 .into_iter() 21050 .any(|x| x) 21051 && [].into_iter().all(|x| x) 21052 { 21053 self.features_representative_fragment_test_nv = Some(Default::default()); 21054 let member = self 21055 .features_representative_fragment_test_nv 21056 .as_mut() 21057 .unwrap(); 21058 member.p_next = head.p_next; 21059 head.p_next = member as *mut _ as _; 21060 } 21061 if [device_extensions.arm_shader_core_builtins] 21062 .into_iter() 21063 .any(|x| x) 21064 && [].into_iter().all(|x| x) 21065 { 21066 self.features_shader_core_builtins_arm = Some(Default::default()); 21067 let member = self.features_shader_core_builtins_arm.as_mut().unwrap(); 21068 member.p_next = head.p_next; 21069 head.p_next = member as *mut _ as _; 21070 } 21071 if [device_extensions.amd_shader_early_and_late_fragment_tests] 21072 .into_iter() 21073 .any(|x| x) 21074 && [].into_iter().all(|x| x) 21075 { 21076 self.features_shader_early_and_late_fragment_tests_amd = Some(Default::default()); 21077 let member = self 21078 .features_shader_early_and_late_fragment_tests_amd 21079 .as_mut() 21080 .unwrap(); 21081 member.p_next = head.p_next; 21082 head.p_next = member as *mut _ as _; 21083 } 21084 if [device_extensions.nv_shader_image_footprint] 21085 .into_iter() 21086 .any(|x| x) 21087 && [].into_iter().all(|x| x) 21088 { 21089 self.features_shader_image_footprint_nv = Some(Default::default()); 21090 let member = self.features_shader_image_footprint_nv.as_mut().unwrap(); 21091 member.p_next = head.p_next; 21092 head.p_next = member as *mut _ as _; 21093 } 21094 if [device_extensions.intel_shader_integer_functions2] 21095 .into_iter() 21096 .any(|x| x) 21097 && [].into_iter().all(|x| x) 21098 { 21099 self.features_shader_integer_functions2_intel = Some(Default::default()); 21100 let member = self 21101 .features_shader_integer_functions2_intel 21102 .as_mut() 21103 .unwrap(); 21104 member.p_next = head.p_next; 21105 head.p_next = member as *mut _ as _; 21106 } 21107 if [device_extensions.nv_shader_sm_builtins] 21108 .into_iter() 21109 .any(|x| x) 21110 && [].into_iter().all(|x| x) 21111 { 21112 self.features_shader_sm_builtins_nv = Some(Default::default()); 21113 let member = self.features_shader_sm_builtins_nv.as_mut().unwrap(); 21114 member.p_next = head.p_next; 21115 head.p_next = member as *mut _ as _; 21116 } 21117 if [device_extensions.nv_shading_rate_image] 21118 .into_iter() 21119 .any(|x| x) 21120 && [].into_iter().all(|x| x) 21121 { 21122 self.features_shading_rate_image_nv = Some(Default::default()); 21123 let member = self.features_shading_rate_image_nv.as_mut().unwrap(); 21124 member.p_next = head.p_next; 21125 head.p_next = member as *mut _ as _; 21126 } 21127 if [device_extensions.huawei_subpass_shading] 21128 .into_iter() 21129 .any(|x| x) 21130 && [].into_iter().all(|x| x) 21131 { 21132 self.features_subpass_shading_huawei = Some(Default::default()); 21133 let member = self.features_subpass_shading_huawei.as_mut().unwrap(); 21134 member.p_next = head.p_next; 21135 head.p_next = member as *mut _ as _; 21136 } 21137 if [device_extensions.qcom_tile_properties] 21138 .into_iter() 21139 .any(|x| x) 21140 && [].into_iter().all(|x| x) 21141 { 21142 self.features_tile_properties_qcom = Some(Default::default()); 21143 let member = self.features_tile_properties_qcom.as_mut().unwrap(); 21144 member.p_next = head.p_next; 21145 head.p_next = member as *mut _ as _; 21146 } 21147 } head_as_ref(&self) -> &ash::vk::PhysicalDeviceFeatures2KHR21148 pub(crate) fn head_as_ref(&self) -> &ash::vk::PhysicalDeviceFeatures2KHR { 21149 &self.features_vulkan10 21150 } head_as_mut(&mut self) -> &mut ash::vk::PhysicalDeviceFeatures2KHR21151 pub(crate) fn head_as_mut(&mut self) -> &mut ash::vk::PhysicalDeviceFeatures2KHR { 21152 &mut self.features_vulkan10 21153 } 21154 } 21155