| // This file is auto-generated by vulkano autogen from vk.xml header version 1.3.238. |
| // It should not be edited manually. Changes should be made by editing autogen. |
| |
| #[doc = r" Represents all the features that are available on a physical device or enabled on"] |
| #[doc = r" a logical device."] |
| #[doc = r""] |
| #[doc = r" Note that the `robust_buffer_access` is guaranteed to be supported by all Vulkan"] |
| #[doc = r" implementations."] |
| #[doc = r""] |
| #[doc = r" # Examples"] |
| #[doc = r""] |
| #[doc = r" ```"] |
| #[doc = r" use vulkano::device::Features;"] |
| #[doc = r" # let physical_device: vulkano::device::physical::PhysicalDevice = return;"] |
| #[doc = r" let minimal_features = Features {"] |
| #[doc = r" geometry_shader: true,"] |
| #[doc = r" ..Features::empty()"] |
| #[doc = r" };"] |
| #[doc = r""] |
| #[doc = r" let optimal_features = vulkano::device::Features {"] |
| #[doc = r" geometry_shader: true,"] |
| #[doc = r" tessellation_shader: true,"] |
| #[doc = r" ..Features::empty()"] |
| #[doc = r" };"] |
| #[doc = r""] |
| #[doc = r" if !physical_device.supported_features().is_superset_of(&minimal_features) {"] |
| #[doc = r#" panic!("The physical device is not good enough for this application.");"#] |
| #[doc = r" }"] |
| #[doc = r""] |
| #[doc = r" assert!(optimal_features.is_superset_of(&minimal_features));"] |
| #[doc = r" let features_to_request = optimal_features.intersection(physical_device.supported_features());"] |
| #[doc = r" ```"] |
| #[derive(Copy, Clone, PartialEq, Eq, Hash)] |
| pub struct Features { |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructure)"] |
| pub acceleration_structure: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructureCaptureReplay)"] |
| pub acceleration_structure_capture_replay: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructureHostCommands)"] |
| pub acceleration_structure_host_commands: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-accelerationStructureIndirectBuild)"] |
| pub acceleration_structure_indirect_build: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html#features-advancedBlendCoherentOperations)"] |
| pub advanced_blend_coherent_operations: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-alphaToOne)"] |
| pub alpha_to_one: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAmigoProfilingFeaturesSEC.html#features-amigoProfiling)"] |
| pub amigo_profiling: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.html#features-attachmentFeedbackLoopLayout)"] |
| pub attachment_feedback_loop_layout: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html#features-attachmentFragmentShadingRate)\n- Conflicts with features: [`shading_rate_image`](crate::device::Features::shading_rate_image), [`fragment_density_map`](crate::device::Features::fragment_density_map)"] |
| pub attachment_fragment_shading_rate: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html#features-borderColorSwizzle)"] |
| pub border_color_swizzle: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html#features-borderColorSwizzleFromImage)"] |
| pub border_color_swizzle_from_image: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-bresenhamLines)"] |
| pub bresenham_lines: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-bufferDeviceAddress)"] |
| pub buffer_device_address: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-bufferDeviceAddressCaptureReplay)"] |
| pub buffer_device_address_capture_replay: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-bufferDeviceAddressMultiDevice)"] |
| pub buffer_device_address_multi_device: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html#features-colorWriteEnable)"] |
| pub color_write_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html#features-computeDerivativeGroupLinear)"] |
| pub compute_derivative_group_linear: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.html#features-computeDerivativeGroupQuads)"] |
| pub compute_derivative_group_quads: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-computeFullSubgroups)"] |
| pub compute_full_subgroups: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html#features-conditionalRendering)"] |
| pub conditional_rendering: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-constantAlphaColorBlendFactors)"] |
| pub constant_alpha_color_blend_factors: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html#features-cooperativeMatrix)"] |
| pub cooperative_matrix: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html#features-cooperativeMatrixRobustBufferAccess)"] |
| pub cooperative_matrix_robust_buffer_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html#features-cornerSampledImage)"] |
| pub corner_sampled_image: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html#features-coverageReductionMode)"] |
| pub coverage_reduction_mode: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html#features-customBorderColorWithoutFormat)"] |
| pub custom_border_color_without_format: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html#features-customBorderColors)"] |
| pub custom_border_colors: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html#features-decodeModeSharedExponent)"] |
| pub decode_mode_shared_exponent: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html#features-dedicatedAllocationImageAliasing)"] |
| pub dedicated_allocation_image_aliasing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-depthBiasClamp)"] |
| pub depth_bias_clamp: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-depthBounds)"] |
| pub depth_bounds: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-depthClamp)"] |
| pub depth_clamp: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.html#features-depthClampZeroOne)"] |
| pub depth_clamp_zero_one: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html#features-depthClipControl)"] |
| pub depth_clip_control: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html#features-depthClipEnable)"] |
| pub depth_clip_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html#features-descriptorBindingAccelerationStructureUpdateAfterBind)"] |
| pub descriptor_binding_acceleration_structure_update_after_bind: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-descriptorBindingInlineUniformBlockUpdateAfterBind)"] |
| pub descriptor_binding_inline_uniform_block_update_after_bind: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingPartiallyBound)"] |
| pub descriptor_binding_partially_bound: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingSampledImageUpdateAfterBind)"] |
| pub descriptor_binding_sampled_image_update_after_bind: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingStorageBufferUpdateAfterBind)"] |
| pub descriptor_binding_storage_buffer_update_after_bind: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingStorageImageUpdateAfterBind)"] |
| pub descriptor_binding_storage_image_update_after_bind: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingStorageTexelBufferUpdateAfterBind)"] |
| pub descriptor_binding_storage_texel_buffer_update_after_bind: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingUniformBufferUpdateAfterBind)"] |
| pub descriptor_binding_uniform_buffer_update_after_bind: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingUniformTexelBufferUpdateAfterBind)"] |
| pub descriptor_binding_uniform_texel_buffer_update_after_bind: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingUpdateUnusedWhilePending)"] |
| pub descriptor_binding_update_unused_while_pending: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorBindingVariableDescriptorCount)"] |
| pub descriptor_binding_variable_descriptor_count: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBuffer)"] |
| pub descriptor_buffer: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBufferCaptureReplay)"] |
| pub descriptor_buffer_capture_replay: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBufferImageLayoutIgnored)"] |
| pub descriptor_buffer_image_layout_ignored: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html#features-descriptorBufferPushDescriptors)"] |
| pub descriptor_buffer_push_descriptors: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-descriptorIndexing)\n- Required by device extension: [`ext_descriptor_indexing`](crate::device::DeviceExtensions::ext_descriptor_indexing)"] |
| pub descriptor_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.html#features-descriptorSetHostMapping)"] |
| pub descriptor_set_host_mapping: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html#features-deviceCoherentMemory)"] |
| pub device_coherent_memory: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFaultFeaturesEXT.html#features-deviceFault)"] |
| pub device_fault: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFaultFeaturesEXT.html#features-deviceFaultVendorBinary)"] |
| pub device_fault_vendor_binary: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html#features-deviceGeneratedCommands)"] |
| pub device_generated_commands: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html#features-deviceMemoryReport)"] |
| pub device_memory_report: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html#features-diagnosticsConfig)"] |
| pub diagnostics_config: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-drawIndirectCount)\n- Required by device extension: [`khr_draw_indirect_count`](crate::device::DeviceExtensions::khr_draw_indirect_count)"] |
| pub draw_indirect_count: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-drawIndirectFirstInstance)"] |
| pub draw_indirect_first_instance: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-dualSrcBlend)"] |
| pub dual_src_blend: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-dynamicRendering)"] |
| pub dynamic_rendering: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-events)"] |
| pub events: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html#features-exclusiveScissor)"] |
| pub exclusive_scissor: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html#features-extendedDynamicState)"] |
| pub extended_dynamic_state: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html#features-extendedDynamicState2)"] |
| pub extended_dynamic_state2: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html#features-extendedDynamicState2LogicOp)"] |
| pub extended_dynamic_state2_logic_op: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html#features-extendedDynamicState2PatchControlPoints)"] |
| pub extended_dynamic_state2_patch_control_points: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3AlphaToCoverageEnable)"] |
| pub extended_dynamic_state3_alpha_to_coverage_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3AlphaToOneEnable)"] |
| pub extended_dynamic_state3_alpha_to_one_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorBlendAdvanced)"] |
| pub extended_dynamic_state3_color_blend_advanced: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorBlendEnable)"] |
| pub extended_dynamic_state3_color_blend_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorBlendEquation)"] |
| pub extended_dynamic_state3_color_blend_equation: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ColorWriteMask)"] |
| pub extended_dynamic_state3_color_write_mask: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ConservativeRasterizationMode)"] |
| pub extended_dynamic_state3_conservative_rasterization_mode: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageModulationMode)"] |
| pub extended_dynamic_state3_coverage_modulation_mode: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageModulationTable)"] |
| pub extended_dynamic_state3_coverage_modulation_table: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageModulationTableEnable)"] |
| pub extended_dynamic_state3_coverage_modulation_table_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageReductionMode)"] |
| pub extended_dynamic_state3_coverage_reduction_mode: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageToColorEnable)"] |
| pub extended_dynamic_state3_coverage_to_color_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3CoverageToColorLocation)"] |
| pub extended_dynamic_state3_coverage_to_color_location: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3DepthClampEnable)"] |
| pub extended_dynamic_state3_depth_clamp_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3DepthClipEnable)"] |
| pub extended_dynamic_state3_depth_clip_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3DepthClipNegativeOneToOne)"] |
| pub extended_dynamic_state3_depth_clip_negative_one_to_one: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ExtraPrimitiveOverestimationSize)"] |
| pub extended_dynamic_state3_extra_primitive_overestimation_size: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3LineRasterizationMode)"] |
| pub extended_dynamic_state3_line_rasterization_mode: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3LineStippleEnable)"] |
| pub extended_dynamic_state3_line_stipple_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3LogicOpEnable)"] |
| pub extended_dynamic_state3_logic_op_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3PolygonMode)"] |
| pub extended_dynamic_state3_polygon_mode: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ProvokingVertexMode)"] |
| pub extended_dynamic_state3_provoking_vertex_mode: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3RasterizationSamples)"] |
| pub extended_dynamic_state3_rasterization_samples: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3RasterizationStream)"] |
| pub extended_dynamic_state3_rasterization_stream: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3RepresentativeFragmentTestEnable)"] |
| pub extended_dynamic_state3_representative_fragment_test_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3SampleLocationsEnable)"] |
| pub extended_dynamic_state3_sample_locations_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3SampleMask)"] |
| pub extended_dynamic_state3_sample_mask: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ShadingRateImageEnable)"] |
| pub extended_dynamic_state3_shading_rate_image_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3TessellationDomainOrigin)"] |
| pub extended_dynamic_state3_tessellation_domain_origin: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ViewportSwizzle)"] |
| pub extended_dynamic_state3_viewport_swizzle: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html#features-extendedDynamicState3ViewportWScalingEnable)"] |
| pub extended_dynamic_state3_viewport_w_scaling_enable: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html#features-externalMemoryRDMA)"] |
| pub external_memory_rdma: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-fillModeNonSolid)"] |
| pub fill_mode_non_solid: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html#features-formatA4B4G4R4)"] |
| pub format_a4b4g4r4: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html#features-formatA4R4G4B4)"] |
| pub format_a4r4g4b4: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html#features-formatRgba10x6WithoutYCbCrSampler)"] |
| pub format_rgba10x6_without_y_cb_cr_sampler: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html#features-fragmentDensityMap)\n- Conflicts with features: [`pipeline_fragment_shading_rate`](crate::device::Features::pipeline_fragment_shading_rate), [`primitive_fragment_shading_rate`](crate::device::Features::primitive_fragment_shading_rate), [`attachment_fragment_shading_rate`](crate::device::Features::attachment_fragment_shading_rate)"] |
| pub fragment_density_map: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html#features-fragmentDensityMapDeferred)"] |
| pub fragment_density_map_deferred: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html#features-fragmentDensityMapDynamic)"] |
| pub fragment_density_map_dynamic: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html#features-fragmentDensityMapNonSubsampledImages)"] |
| pub fragment_density_map_non_subsampled_images: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.html#features-fragmentDensityMapOffset)"] |
| pub fragment_density_map_offset: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.html#features-fragmentShaderBarycentric)"] |
| pub fragment_shader_barycentric: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html#features-fragmentShaderPixelInterlock)"] |
| pub fragment_shader_pixel_interlock: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html#features-fragmentShaderSampleInterlock)"] |
| pub fragment_shader_sample_interlock: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html#features-fragmentShaderShadingRateInterlock)"] |
| pub fragment_shader_shading_rate_interlock: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html#features-fragmentShadingRateEnums)"] |
| pub fragment_shading_rate_enums: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-fragmentStoresAndAtomics)"] |
| pub fragment_stores_and_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-fullDrawIndexUint32)"] |
| pub full_draw_index_uint32: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-geometryShader)"] |
| pub geometry_shader: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html#features-geometryStreams)"] |
| pub geometry_streams: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.html#features-globalPriorityQuery)"] |
| pub global_priority_query: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.html#features-graphicsPipelineLibrary)"] |
| pub graphics_pipeline_library: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-hostQueryReset)"] |
| pub host_query_reset: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html#features-image2DViewOf3D)"] |
| pub image2_d_view_of3_d: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageCompressionControlFeaturesEXT.html#features-imageCompressionControl)"] |
| pub image_compression_control: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.html#features-imageCompressionControlSwapchain)"] |
| pub image_compression_control_swapchain: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-imageCubeArray)"] |
| pub image_cube_array: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html#features-imageFootprint)"] |
| pub image_footprint: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-imageView2DOn3DImage)"] |
| pub image_view2_d_on3_d_image: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-imageViewFormatReinterpretation)"] |
| pub image_view_format_reinterpretation: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-imageViewFormatSwizzle)"] |
| pub image_view_format_swizzle: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-imagelessFramebuffer)"] |
| pub imageless_framebuffer: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-independentBlend)"] |
| pub independent_blend: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.html#features-indexTypeUint8)"] |
| pub index_type_uint8: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.html#features-indirectCopy)"] |
| pub indirect_copy: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html#features-inheritedConditionalRendering)"] |
| pub inherited_conditional_rendering: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-inheritedQueries)"] |
| pub inherited_queries: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html#features-inheritedViewportScissor2D)"] |
| pub inherited_viewport_scissor2_d: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-inlineUniformBlock)"] |
| pub inline_uniform_block: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html#features-invocationMask)"] |
| pub invocation_mask: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-largePoints)"] |
| pub large_points: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLegacyDitheringFeaturesEXT.html#features-legacyDithering)"] |
| pub legacy_dithering: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html#features-linearColorAttachment)"] |
| pub linear_color_attachment: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-logicOp)"] |
| pub logic_op: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-maintenance4)"] |
| pub maintenance4: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesNV.html#features-memoryDecompression)"] |
| pub memory_decompression: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html#features-memoryPriority)"] |
| pub memory_priority: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-meshShader)"] |
| pub mesh_shader: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-meshShaderQueries)"] |
| pub mesh_shader_queries: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html#features-micromap)"] |
| pub micromap: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html#features-micromapCaptureReplay)"] |
| pub micromap_capture_replay: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html#features-micromapHostCommands)"] |
| pub micromap_host_commands: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html#features-minLod)"] |
| pub min_lod: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html#features-multiDraw)"] |
| pub multi_draw: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-multiDrawIndirect)"] |
| pub multi_draw_indirect: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-multiViewport)"] |
| pub multi_viewport: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-multisampleArrayImage)"] |
| pub multisample_array_image: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.html#features-multisampledRenderToSingleSampled)"] |
| pub multisampled_render_to_single_sampled: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-multiview)"] |
| pub multiview: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-multiviewGeometryShader)"] |
| pub multiview_geometry_shader: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-multiviewMeshShader)"] |
| pub multiview_mesh_shader: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.html#features-multiviewPerViewViewports)"] |
| pub multiview_per_view_viewports: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-multiviewTessellationShader)"] |
| pub multiview_tessellation_shader: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-mutableComparisonSamplers)"] |
| pub mutable_comparison_samplers: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.html#features-mutableDescriptorType)"] |
| pub mutable_descriptor_type: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html#features-noInvocationFragmentShadingRates)"] |
| pub no_invocation_fragment_shading_rates: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.html#features-nonSeamlessCubeMap)"] |
| pub non_seamless_cube_map: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html#features-nullDescriptor)"] |
| pub null_descriptor: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-occlusionQueryPrecise)"] |
| pub occlusion_query_precise: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowFeaturesNV.html#features-opticalFlow)"] |
| pub optical_flow: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html#features-pageableDeviceLocalMemory)"] |
| pub pageable_device_local_memory: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html#features-performanceCounterMultipleQueryPools)"] |
| pub performance_counter_multiple_query_pools: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html#features-performanceCounterQueryPools)"] |
| pub performance_counter_query_pools: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-pipelineCreationCacheControl)"] |
| pub pipeline_creation_cache_control: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html#features-pipelineExecutableInfo)"] |
| pub pipeline_executable_info: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html#features-pipelineFragmentShadingRate)\n- Conflicts with features: [`shading_rate_image`](crate::device::Features::shading_rate_image), [`fragment_density_map`](crate::device::Features::fragment_density_map)"] |
| pub pipeline_fragment_shading_rate: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelinePropertiesFeaturesEXT.html#features-pipelinePropertiesIdentifier)"] |
| pub pipeline_properties_identifier: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.html#features-pipelineProtectedAccess)"] |
| pub pipeline_protected_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineRobustnessFeaturesEXT.html#features-pipelineRobustness)"] |
| pub pipeline_robustness: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-pipelineStatisticsQuery)"] |
| pub pipeline_statistics_query: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-pointPolygons)"] |
| pub point_polygons: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePresentBarrierFeaturesNV.html#features-presentBarrier)"] |
| pub present_barrier: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html#features-presentId)"] |
| pub present_id: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html#features-presentWait)"] |
| pub present_wait: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html#features-primitiveFragmentShadingRate)\n- Conflicts with features: [`shading_rate_image`](crate::device::Features::shading_rate_image), [`fragment_density_map`](crate::device::Features::fragment_density_map)"] |
| pub primitive_fragment_shading_rate: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-primitiveFragmentShadingRateMeshShader)"] |
| pub primitive_fragment_shading_rate_mesh_shader: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html#features-primitiveTopologyListRestart)"] |
| pub primitive_topology_list_restart: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html#features-primitiveTopologyPatchListRestart)"] |
| pub primitive_topology_patch_list_restart: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html#features-primitivesGeneratedQuery)"] |
| pub primitives_generated_query: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html#features-primitivesGeneratedQueryWithNonZeroStreams)"] |
| pub primitives_generated_query_with_non_zero_streams: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html#features-primitivesGeneratedQueryWithRasterizerDiscard)"] |
| pub primitives_generated_query_with_rasterizer_discard: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-privateData)"] |
| pub private_data: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-protectedMemory)"] |
| pub protected_memory: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html#features-provokingVertexLast)"] |
| pub provoking_vertex_last: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html#features-rasterizationOrderColorAttachmentAccess)"] |
| pub rasterization_order_color_attachment_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html#features-rasterizationOrderDepthAttachmentAccess)"] |
| pub rasterization_order_depth_attachment_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html#features-rasterizationOrderStencilAttachmentAccess)"] |
| pub rasterization_order_stencil_attachment_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html#features-rayQuery)"] |
| pub ray_query: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.html#features-rayTracingInvocationReorder)"] |
| pub ray_tracing_invocation_reorder: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html#features-rayTracingMaintenance1)"] |
| pub ray_tracing_maintenance1: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html#features-rayTracingMotionBlur)"] |
| pub ray_tracing_motion_blur: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html#features-rayTracingMotionBlurPipelineTraceRaysIndirect)"] |
| pub ray_tracing_motion_blur_pipeline_trace_rays_indirect: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipeline)"] |
| pub ray_tracing_pipeline: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipelineShaderGroupHandleCaptureReplay)"] |
| pub ray_tracing_pipeline_shader_group_handle_capture_replay: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed)"] |
| pub ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTracingPipelineTraceRaysIndirect)"] |
| pub ray_tracing_pipeline_trace_rays_indirect: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html#features-rayTracingPipelineTraceRaysIndirect2)"] |
| pub ray_tracing_pipeline_trace_rays_indirect2: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html#features-rayTraversalPrimitiveCulling)"] |
| pub ray_traversal_primitive_culling: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-rectangularLines)"] |
| pub rectangular_lines: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAddressBindingReportFeaturesEXT.html#features-reportAddressBinding)"] |
| pub report_address_binding: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html#features-representativeFragmentTest)"] |
| pub representative_fragment_test: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-robustBufferAccess)"] |
| pub robust_buffer_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html#features-robustBufferAccess2)"] |
| pub robust_buffer_access2: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-robustImageAccess)"] |
| pub robust_image_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2FeaturesEXT.html#features-robustImageAccess2)"] |
| pub robust_image_access2: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-runtimeDescriptorArray)"] |
| pub runtime_descriptor_array: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sampleRateShading)"] |
| pub sample_rate_shading: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html#features-sampler2DViewOf3D)"] |
| pub sampler2_d_view_of3_d: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-samplerAnisotropy)"] |
| pub sampler_anisotropy: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-samplerFilterMinmax)\n- Required by device extension: [`ext_sampler_filter_minmax`](crate::device::DeviceExtensions::ext_sampler_filter_minmax)"] |
| pub sampler_filter_minmax: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-samplerMipLodBias)"] |
| pub sampler_mip_lod_bias: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-samplerMirrorClampToEdge)\n- Required by device extension: [`khr_sampler_mirror_clamp_to_edge`](crate::device::DeviceExtensions::khr_sampler_mirror_clamp_to_edge)"] |
| pub sampler_mirror_clamp_to_edge: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-samplerYcbcrConversion)"] |
| pub sampler_ycbcr_conversion: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-scalarBlockLayout)"] |
| pub scalar_block_layout: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-separateDepthStencilLayouts)"] |
| pub separate_depth_stencil_layouts: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-separateStencilMaskRef)"] |
| pub separate_stencil_mask_ref: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat16AtomicAdd)"] |
| pub shader_buffer_float16_atomic_add: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat16AtomicMinMax)"] |
| pub shader_buffer_float16_atomic_min_max: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat16Atomics)"] |
| pub shader_buffer_float16_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat32AtomicAdd)"] |
| pub shader_buffer_float32_atomic_add: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat32AtomicMinMax)"] |
| pub shader_buffer_float32_atomic_min_max: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat32Atomics)"] |
| pub shader_buffer_float32_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat64AtomicAdd)"] |
| pub shader_buffer_float64_atomic_add: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderBufferFloat64AtomicMinMax)"] |
| pub shader_buffer_float64_atomic_min_max: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderBufferFloat64Atomics)"] |
| pub shader_buffer_float64_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderBufferInt64Atomics)"] |
| pub shader_buffer_int64_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderClipDistance)"] |
| pub shader_clip_distance: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.html#features-shaderCoreBuiltins)"] |
| pub shader_core_builtins: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderCullDistance)"] |
| pub shader_cull_distance: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderDemoteToHelperInvocation)"] |
| pub shader_demote_to_helper_invocation: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html#features-shaderDeviceClock)"] |
| pub shader_device_clock: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-shaderDrawParameters)\n- Required by device extension: [`khr_shader_draw_parameters`](crate::device::DeviceExtensions::khr_shader_draw_parameters)"] |
| pub shader_draw_parameters: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.html#features-shaderEarlyAndLateFragmentTests)"] |
| pub shader_early_and_late_fragment_tests: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderFloat16)"] |
| pub shader_float16: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderFloat64)"] |
| pub shader_float64: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderImageFloat32AtomicAdd)"] |
| pub shader_image_float32_atomic_add: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderImageFloat32AtomicMinMax)"] |
| pub shader_image_float32_atomic_min_max: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderImageFloat32Atomics)"] |
| pub shader_image_float32_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderImageGatherExtended)"] |
| pub shader_image_gather_extended: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html#features-shaderImageInt64Atomics)"] |
| pub shader_image_int64_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderInputAttachmentArrayDynamicIndexing)"] |
| pub shader_input_attachment_array_dynamic_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderInputAttachmentArrayNonUniformIndexing)"] |
| pub shader_input_attachment_array_non_uniform_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderInt16)"] |
| pub shader_int16: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderInt64)"] |
| pub shader_int64: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderInt8)"] |
| pub shader_int8: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderIntegerDotProduct)"] |
| pub shader_integer_dot_product: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html#features-shaderIntegerFunctions2)"] |
| pub shader_integer_functions2: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.html#features-shaderModuleIdentifier)"] |
| pub shader_module_identifier: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderOutputLayer)\n- Required by device extension: [`ext_shader_viewport_index_layer`](crate::device::DeviceExtensions::ext_shader_viewport_index_layer)"] |
| pub shader_output_layer: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderOutputViewportIndex)\n- Required by device extension: [`ext_shader_viewport_index_layer`](crate::device::DeviceExtensions::ext_shader_viewport_index_layer)"] |
| pub shader_output_viewport_index: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderResourceMinLod)"] |
| pub shader_resource_min_lod: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderResourceResidency)"] |
| pub shader_resource_residency: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-shaderSampleRateInterpolationFunctions)"] |
| pub shader_sample_rate_interpolation_functions: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderSampledImageArrayDynamicIndexing)"] |
| pub shader_sampled_image_array_dynamic_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderSampledImageArrayNonUniformIndexing)"] |
| pub shader_sampled_image_array_non_uniform_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat16AtomicAdd)"] |
| pub shader_shared_float16_atomic_add: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat16AtomicMinMax)"] |
| pub shader_shared_float16_atomic_min_max: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat16Atomics)"] |
| pub shader_shared_float16_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat32AtomicAdd)"] |
| pub shader_shared_float32_atomic_add: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat32AtomicMinMax)"] |
| pub shader_shared_float32_atomic_min_max: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat32Atomics)"] |
| pub shader_shared_float32_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat64AtomicAdd)"] |
| pub shader_shared_float64_atomic_add: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-shaderSharedFloat64AtomicMinMax)"] |
| pub shader_shared_float64_atomic_min_max: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-shaderSharedFloat64Atomics)"] |
| pub shader_shared_float64_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderSharedInt64Atomics)"] |
| pub shader_shared_int64_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html#features-shaderSMBuiltins)"] |
| pub shader_sm_builtins: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageBufferArrayDynamicIndexing)"] |
| pub shader_storage_buffer_array_dynamic_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageBufferArrayNonUniformIndexing)"] |
| pub shader_storage_buffer_array_non_uniform_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageArrayDynamicIndexing)"] |
| pub shader_storage_image_array_dynamic_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageImageArrayNonUniformIndexing)"] |
| pub shader_storage_image_array_non_uniform_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageExtendedFormats)"] |
| pub shader_storage_image_extended_formats: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageMultisample)"] |
| pub shader_storage_image_multisample: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageReadWithoutFormat)"] |
| pub shader_storage_image_read_without_format: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderStorageImageWriteWithoutFormat)"] |
| pub shader_storage_image_write_without_format: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageTexelBufferArrayDynamicIndexing)"] |
| pub shader_storage_texel_buffer_array_dynamic_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderStorageTexelBufferArrayNonUniformIndexing)"] |
| pub shader_storage_texel_buffer_array_non_uniform_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html#features-shaderSubgroupClock)"] |
| pub shader_subgroup_clock: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderSubgroupExtendedTypes)"] |
| pub shader_subgroup_extended_types: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html#features-shaderSubgroupUniformControlFlow)"] |
| pub shader_subgroup_uniform_control_flow: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderTerminateInvocation)"] |
| pub shader_terminate_invocation: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderTessellationAndGeometryPointSize)"] |
| pub shader_tessellation_and_geometry_point_size: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-shaderUniformBufferArrayDynamicIndexing)"] |
| pub shader_uniform_buffer_array_dynamic_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderUniformBufferArrayNonUniformIndexing)"] |
| pub shader_uniform_buffer_array_non_uniform_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderUniformTexelBufferArrayDynamicIndexing)"] |
| pub shader_uniform_texel_buffer_array_dynamic_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-shaderUniformTexelBufferArrayNonUniformIndexing)"] |
| pub shader_uniform_texel_buffer_array_non_uniform_indexing: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-shaderZeroInitializeWorkgroupMemory)"] |
| pub shader_zero_initialize_workgroup_memory: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html#features-shadingRateCoarseSampleOrder)"] |
| pub shading_rate_coarse_sample_order: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html#features-shadingRateImage)\n- Conflicts with features: [`pipeline_fragment_shading_rate`](crate::device::Features::pipeline_fragment_shading_rate), [`primitive_fragment_shading_rate`](crate::device::Features::primitive_fragment_shading_rate), [`attachment_fragment_shading_rate`](crate::device::Features::attachment_fragment_shading_rate)"] |
| pub shading_rate_image: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-smoothLines)"] |
| pub smooth_lines: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseBinding)"] |
| pub sparse_binding: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-sparseImageFloat32AtomicAdd)\n- Requires feature: [`shader_image_float32_atomic_add`](crate::device::Features::shader_image_float32_atomic_add)"] |
| pub sparse_image_float32_atomic_add: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html#features-sparseImageFloat32AtomicMinMax)\n- Requires feature: [`shader_image_float32_atomic_min_max`](crate::device::Features::shader_image_float32_atomic_min_max)"] |
| pub sparse_image_float32_atomic_min_max: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html#features-sparseImageFloat32Atomics)\n- Requires feature: [`shader_image_float32_atomics`](crate::device::Features::shader_image_float32_atomics)"] |
| pub sparse_image_float32_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html#features-sparseImageInt64Atomics)\n- Requires feature: [`shader_image_int64_atomics`](crate::device::Features::shader_image_int64_atomics)"] |
| pub sparse_image_int64_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency16Samples)"] |
| pub sparse_residency16_samples: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency2Samples)"] |
| pub sparse_residency2_samples: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency4Samples)"] |
| pub sparse_residency4_samples: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidency8Samples)"] |
| pub sparse_residency8_samples: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyAliased)"] |
| pub sparse_residency_aliased: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyBuffer)"] |
| pub sparse_residency_buffer: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyImage2D)"] |
| pub sparse_residency_image2_d: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-sparseResidencyImage3D)"] |
| pub sparse_residency_image3_d: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-stippledBresenhamLines)"] |
| pub stippled_bresenham_lines: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-stippledRectangularLines)"] |
| pub stippled_rectangular_lines: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationFeaturesEXT.html#features-stippledSmoothLines)"] |
| pub stippled_smooth_lines: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-storageBuffer16BitAccess)"] |
| pub storage_buffer16_bit_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-storageBuffer8BitAccess)"] |
| pub storage_buffer8_bit_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-storageInputOutput16)"] |
| pub storage_input_output16: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-storagePushConstant16)"] |
| pub storage_push_constant16: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-storagePushConstant8)"] |
| pub storage_push_constant8: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-subgroupBroadcastDynamicId)"] |
| pub subgroup_broadcast_dynamic_id: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-subgroupSizeControl)"] |
| pub subgroup_size_control: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.html#features-subpassMergeFeedback)"] |
| pub subpass_merge_feedback: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html#features-subpassShading)"] |
| pub subpass_shading: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html#features-supersampleFragmentShadingRates)"] |
| pub supersample_fragment_shading_rates: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.html#features-swapchainMaintenance1)"] |
| pub swapchain_maintenance1: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-synchronization2)"] |
| pub synchronization2: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html#features-taskShader)"] |
| pub task_shader: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-tessellationIsolines)"] |
| pub tessellation_isolines: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-tessellationPointMode)"] |
| pub tessellation_point_mode: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-tessellationShader)"] |
| pub tessellation_shader: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html#features-texelBufferAlignment)"] |
| pub texel_buffer_alignment: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html#features-textureBlockMatch)"] |
| pub texture_block_match: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html#features-textureBoxFilter)"] |
| pub texture_box_filter: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Features.html#features-textureCompressionASTC_HDR)"] |
| pub texture_compression_astc_hdr: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-textureCompressionASTC_LDR)"] |
| pub texture_compression_astc_ldr: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-textureCompressionBC)"] |
| pub texture_compression_bc: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-textureCompressionETC2)"] |
| pub texture_compression_etc2: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html#features-textureSampleWeighted)"] |
| pub texture_sample_weighted: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTilePropertiesFeaturesQCOM.html#features-tileProperties)"] |
| pub tile_properties: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-timelineSemaphore)"] |
| pub timeline_semaphore: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html#features-transformFeedback)"] |
| pub transform_feedback: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html#features-transformFeedbackPreservesProvokingVertex)"] |
| pub transform_feedback_preserves_provoking_vertex: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-triangleFans)"] |
| pub triangle_fans: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-uniformAndStorageBuffer16BitAccess)"] |
| pub uniform_and_storage_buffer16_bit_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-uniformAndStorageBuffer8BitAccess)"] |
| pub uniform_and_storage_buffer8_bit_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-uniformBufferStandardLayout)"] |
| pub uniform_buffer_standard_layout: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-variableMultisampleRate)"] |
| pub variable_multisample_rate: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-variablePointers)"] |
| pub variable_pointers: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Features.html#features-variablePointersStorageBuffer)"] |
| pub variable_pointers_storage_buffer: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html#features-vertexAttributeAccessBeyondStride)"] |
| pub vertex_attribute_access_beyond_stride: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html#features-vertexAttributeInstanceRateDivisor)"] |
| pub vertex_attribute_instance_rate_divisor: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.html#features-vertexAttributeInstanceRateZeroDivisor)"] |
| pub vertex_attribute_instance_rate_zero_divisor: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html#features-vertexInputDynamicState)"] |
| pub vertex_input_dynamic_state: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-vertexPipelineStoresAndAtomics)"] |
| pub vertex_pipeline_stores_and_atomics: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-vulkanMemoryModel)"] |
| pub vulkan_memory_model: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-vulkanMemoryModelAvailabilityVisibilityChains)"] |
| pub vulkan_memory_model_availability_visibility_chains: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Features.html#features-vulkanMemoryModelDeviceScope)"] |
| pub vulkan_memory_model_device_scope: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html#features-wideLines)"] |
| pub wide_lines: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayout)"] |
| pub workgroup_memory_explicit_layout: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayout16BitAccess)"] |
| pub workgroup_memory_explicit_layout16_bit_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayout8BitAccess)"] |
| pub workgroup_memory_explicit_layout8_bit_access: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html#features-workgroupMemoryExplicitLayoutScalarBlockLayout)"] |
| pub workgroup_memory_explicit_layout_scalar_block_layout: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html#features-ycbcr2plane444Formats)"] |
| pub ycbcr2plane444_formats: bool, |
| #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html#features-ycbcrImageArrays)"] |
| pub ycbcr_image_arrays: bool, |
| pub _ne: crate::NonExhaustive, |
| } |
| impl Default for Features { |
| #[inline] |
| fn default() -> Self { |
| Self::empty() |
| } |
| } |
| impl Features { |
| #[doc = r" Checks enabled features against the device version, device extensions and each"] |
| #[doc = r" other."] |
| pub(super) fn check_requirements( |
| &self, |
| supported: &Features, |
| api_version: crate::Version, |
| extensions: &crate::device::DeviceExtensions, |
| ) -> Result<(), crate::device::FeatureRestrictionError> { |
| if self.acceleration_structure { |
| if !supported.acceleration_structure { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "acceleration_structure", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.acceleration_structure_capture_replay { |
| if !supported.acceleration_structure_capture_replay { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "acceleration_structure_capture_replay", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.acceleration_structure_host_commands { |
| if !supported.acceleration_structure_host_commands { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "acceleration_structure_host_commands", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.acceleration_structure_indirect_build { |
| if !supported.acceleration_structure_indirect_build { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "acceleration_structure_indirect_build", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.advanced_blend_coherent_operations { |
| if !supported.advanced_blend_coherent_operations { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "advanced_blend_coherent_operations", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.alpha_to_one { |
| if !supported.alpha_to_one { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "alpha_to_one", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.amigo_profiling { |
| if !supported.amigo_profiling { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "amigo_profiling", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.attachment_feedback_loop_layout { |
| if !supported.attachment_feedback_loop_layout { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "attachment_feedback_loop_layout", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.attachment_fragment_shading_rate { |
| if !supported.attachment_fragment_shading_rate { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "attachment_fragment_shading_rate", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| if self.shading_rate_image { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "attachment_fragment_shading_rate", |
| restriction: crate::device::FeatureRestriction::ConflictsFeature( |
| "shading_rate_image", |
| ), |
| }); |
| } |
| if self.fragment_density_map { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "attachment_fragment_shading_rate", |
| restriction: crate::device::FeatureRestriction::ConflictsFeature( |
| "fragment_density_map", |
| ), |
| }); |
| } |
| } else { |
| } |
| if self.border_color_swizzle { |
| if !supported.border_color_swizzle { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "border_color_swizzle", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.border_color_swizzle_from_image { |
| if !supported.border_color_swizzle_from_image { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "border_color_swizzle_from_image", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.bresenham_lines { |
| if !supported.bresenham_lines { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "bresenham_lines", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.buffer_device_address { |
| if !supported.buffer_device_address { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "buffer_device_address", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.buffer_device_address_capture_replay { |
| if !supported.buffer_device_address_capture_replay { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "buffer_device_address_capture_replay", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.buffer_device_address_multi_device { |
| if !supported.buffer_device_address_multi_device { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "buffer_device_address_multi_device", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.color_write_enable { |
| if !supported.color_write_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "color_write_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.compute_derivative_group_linear { |
| if !supported.compute_derivative_group_linear { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "compute_derivative_group_linear", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.compute_derivative_group_quads { |
| if !supported.compute_derivative_group_quads { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "compute_derivative_group_quads", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.compute_full_subgroups { |
| if !supported.compute_full_subgroups { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "compute_full_subgroups", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.conditional_rendering { |
| if !supported.conditional_rendering { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "conditional_rendering", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.constant_alpha_color_blend_factors { |
| if !supported.constant_alpha_color_blend_factors { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "constant_alpha_color_blend_factors", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.cooperative_matrix { |
| if !supported.cooperative_matrix { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "cooperative_matrix", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.cooperative_matrix_robust_buffer_access { |
| if !supported.cooperative_matrix_robust_buffer_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "cooperative_matrix_robust_buffer_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.corner_sampled_image { |
| if !supported.corner_sampled_image { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "corner_sampled_image", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.coverage_reduction_mode { |
| if !supported.coverage_reduction_mode { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "coverage_reduction_mode", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.custom_border_color_without_format { |
| if !supported.custom_border_color_without_format { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "custom_border_color_without_format", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.custom_border_colors { |
| if !supported.custom_border_colors { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "custom_border_colors", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.decode_mode_shared_exponent { |
| if !supported.decode_mode_shared_exponent { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "decode_mode_shared_exponent", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.dedicated_allocation_image_aliasing { |
| if !supported.dedicated_allocation_image_aliasing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "dedicated_allocation_image_aliasing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.depth_bias_clamp { |
| if !supported.depth_bias_clamp { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "depth_bias_clamp", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.depth_bounds { |
| if !supported.depth_bounds { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "depth_bounds", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.depth_clamp { |
| if !supported.depth_clamp { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "depth_clamp", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.depth_clamp_zero_one { |
| if !supported.depth_clamp_zero_one { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "depth_clamp_zero_one", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.depth_clip_control { |
| if !supported.depth_clip_control { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "depth_clip_control", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.depth_clip_enable { |
| if !supported.depth_clip_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "depth_clip_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_binding_acceleration_structure_update_after_bind { |
| if !supported.descriptor_binding_acceleration_structure_update_after_bind { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_binding_acceleration_structure_update_after_bind", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_binding_inline_uniform_block_update_after_bind { |
| if !supported.descriptor_binding_inline_uniform_block_update_after_bind { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_binding_inline_uniform_block_update_after_bind", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_binding_partially_bound { |
| if !supported.descriptor_binding_partially_bound { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_binding_partially_bound", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_binding_sampled_image_update_after_bind { |
| if !supported.descriptor_binding_sampled_image_update_after_bind { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_binding_sampled_image_update_after_bind", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_binding_storage_buffer_update_after_bind { |
| if !supported.descriptor_binding_storage_buffer_update_after_bind { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_binding_storage_buffer_update_after_bind", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_binding_storage_image_update_after_bind { |
| if !supported.descriptor_binding_storage_image_update_after_bind { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_binding_storage_image_update_after_bind", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_binding_storage_texel_buffer_update_after_bind { |
| if !supported.descriptor_binding_storage_texel_buffer_update_after_bind { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_binding_storage_texel_buffer_update_after_bind", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_binding_uniform_buffer_update_after_bind { |
| if !supported.descriptor_binding_uniform_buffer_update_after_bind { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_binding_uniform_buffer_update_after_bind", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_binding_uniform_texel_buffer_update_after_bind { |
| if !supported.descriptor_binding_uniform_texel_buffer_update_after_bind { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_binding_uniform_texel_buffer_update_after_bind", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_binding_update_unused_while_pending { |
| if !supported.descriptor_binding_update_unused_while_pending { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_binding_update_unused_while_pending", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_binding_variable_descriptor_count { |
| if !supported.descriptor_binding_variable_descriptor_count { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_binding_variable_descriptor_count", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_buffer { |
| if !supported.descriptor_buffer { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_buffer", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_buffer_capture_replay { |
| if !supported.descriptor_buffer_capture_replay { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_buffer_capture_replay", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_buffer_image_layout_ignored { |
| if !supported.descriptor_buffer_image_layout_ignored { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_buffer_image_layout_ignored", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_buffer_push_descriptors { |
| if !supported.descriptor_buffer_push_descriptors { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_buffer_push_descriptors", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.descriptor_indexing { |
| if !supported.descriptor_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| if extensions.ext_descriptor_indexing && api_version >= crate::Version::V1_2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_indexing", |
| restriction: crate::device::FeatureRestriction::RequiredByExtension( |
| "ext_descriptor_indexing", |
| ), |
| }); |
| } |
| } |
| if self.descriptor_set_host_mapping { |
| if !supported.descriptor_set_host_mapping { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "descriptor_set_host_mapping", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.device_coherent_memory { |
| if !supported.device_coherent_memory { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "device_coherent_memory", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.device_fault { |
| if !supported.device_fault { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "device_fault", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.device_fault_vendor_binary { |
| if !supported.device_fault_vendor_binary { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "device_fault_vendor_binary", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.device_generated_commands { |
| if !supported.device_generated_commands { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "device_generated_commands", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.device_memory_report { |
| if !supported.device_memory_report { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "device_memory_report", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.diagnostics_config { |
| if !supported.diagnostics_config { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "diagnostics_config", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.draw_indirect_count { |
| if !supported.draw_indirect_count { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "draw_indirect_count", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| if extensions.khr_draw_indirect_count && api_version >= crate::Version::V1_2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "draw_indirect_count", |
| restriction: crate::device::FeatureRestriction::RequiredByExtension( |
| "khr_draw_indirect_count", |
| ), |
| }); |
| } |
| } |
| if self.draw_indirect_first_instance { |
| if !supported.draw_indirect_first_instance { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "draw_indirect_first_instance", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.dual_src_blend { |
| if !supported.dual_src_blend { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "dual_src_blend", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.dynamic_rendering { |
| if !supported.dynamic_rendering { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "dynamic_rendering", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.events { |
| if !supported.events { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "events", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.exclusive_scissor { |
| if !supported.exclusive_scissor { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "exclusive_scissor", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state { |
| if !supported.extended_dynamic_state { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state2 { |
| if !supported.extended_dynamic_state2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state2", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state2_logic_op { |
| if !supported.extended_dynamic_state2_logic_op { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state2_logic_op", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state2_patch_control_points { |
| if !supported.extended_dynamic_state2_patch_control_points { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state2_patch_control_points", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_alpha_to_coverage_enable { |
| if !supported.extended_dynamic_state3_alpha_to_coverage_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_alpha_to_coverage_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_alpha_to_one_enable { |
| if !supported.extended_dynamic_state3_alpha_to_one_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_alpha_to_one_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_color_blend_advanced { |
| if !supported.extended_dynamic_state3_color_blend_advanced { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_color_blend_advanced", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_color_blend_enable { |
| if !supported.extended_dynamic_state3_color_blend_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_color_blend_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_color_blend_equation { |
| if !supported.extended_dynamic_state3_color_blend_equation { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_color_blend_equation", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_color_write_mask { |
| if !supported.extended_dynamic_state3_color_write_mask { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_color_write_mask", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_conservative_rasterization_mode { |
| if !supported.extended_dynamic_state3_conservative_rasterization_mode { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_conservative_rasterization_mode", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_coverage_modulation_mode { |
| if !supported.extended_dynamic_state3_coverage_modulation_mode { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_coverage_modulation_mode", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_coverage_modulation_table { |
| if !supported.extended_dynamic_state3_coverage_modulation_table { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_coverage_modulation_table", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_coverage_modulation_table_enable { |
| if !supported.extended_dynamic_state3_coverage_modulation_table_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_coverage_modulation_table_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_coverage_reduction_mode { |
| if !supported.extended_dynamic_state3_coverage_reduction_mode { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_coverage_reduction_mode", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_coverage_to_color_enable { |
| if !supported.extended_dynamic_state3_coverage_to_color_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_coverage_to_color_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_coverage_to_color_location { |
| if !supported.extended_dynamic_state3_coverage_to_color_location { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_coverage_to_color_location", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_depth_clamp_enable { |
| if !supported.extended_dynamic_state3_depth_clamp_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_depth_clamp_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_depth_clip_enable { |
| if !supported.extended_dynamic_state3_depth_clip_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_depth_clip_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_depth_clip_negative_one_to_one { |
| if !supported.extended_dynamic_state3_depth_clip_negative_one_to_one { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_depth_clip_negative_one_to_one", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_extra_primitive_overestimation_size { |
| if !supported.extended_dynamic_state3_extra_primitive_overestimation_size { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_extra_primitive_overestimation_size", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_line_rasterization_mode { |
| if !supported.extended_dynamic_state3_line_rasterization_mode { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_line_rasterization_mode", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_line_stipple_enable { |
| if !supported.extended_dynamic_state3_line_stipple_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_line_stipple_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_logic_op_enable { |
| if !supported.extended_dynamic_state3_logic_op_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_logic_op_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_polygon_mode { |
| if !supported.extended_dynamic_state3_polygon_mode { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_polygon_mode", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_provoking_vertex_mode { |
| if !supported.extended_dynamic_state3_provoking_vertex_mode { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_provoking_vertex_mode", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_rasterization_samples { |
| if !supported.extended_dynamic_state3_rasterization_samples { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_rasterization_samples", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_rasterization_stream { |
| if !supported.extended_dynamic_state3_rasterization_stream { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_rasterization_stream", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_representative_fragment_test_enable { |
| if !supported.extended_dynamic_state3_representative_fragment_test_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_representative_fragment_test_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_sample_locations_enable { |
| if !supported.extended_dynamic_state3_sample_locations_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_sample_locations_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_sample_mask { |
| if !supported.extended_dynamic_state3_sample_mask { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_sample_mask", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_shading_rate_image_enable { |
| if !supported.extended_dynamic_state3_shading_rate_image_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_shading_rate_image_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_tessellation_domain_origin { |
| if !supported.extended_dynamic_state3_tessellation_domain_origin { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_tessellation_domain_origin", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_viewport_swizzle { |
| if !supported.extended_dynamic_state3_viewport_swizzle { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_viewport_swizzle", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.extended_dynamic_state3_viewport_w_scaling_enable { |
| if !supported.extended_dynamic_state3_viewport_w_scaling_enable { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "extended_dynamic_state3_viewport_w_scaling_enable", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.external_memory_rdma { |
| if !supported.external_memory_rdma { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "external_memory_rdma", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.fill_mode_non_solid { |
| if !supported.fill_mode_non_solid { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fill_mode_non_solid", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.format_a4b4g4r4 { |
| if !supported.format_a4b4g4r4 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "format_a4b4g4r4", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.format_a4r4g4b4 { |
| if !supported.format_a4r4g4b4 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "format_a4r4g4b4", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.format_rgba10x6_without_y_cb_cr_sampler { |
| if !supported.format_rgba10x6_without_y_cb_cr_sampler { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "format_rgba10x6_without_y_cb_cr_sampler", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.fragment_density_map { |
| if !supported.fragment_density_map { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_density_map", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| if self.pipeline_fragment_shading_rate { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_density_map", |
| restriction: crate::device::FeatureRestriction::ConflictsFeature( |
| "pipeline_fragment_shading_rate", |
| ), |
| }); |
| } |
| if self.primitive_fragment_shading_rate { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_density_map", |
| restriction: crate::device::FeatureRestriction::ConflictsFeature( |
| "primitive_fragment_shading_rate", |
| ), |
| }); |
| } |
| if self.attachment_fragment_shading_rate { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_density_map", |
| restriction: crate::device::FeatureRestriction::ConflictsFeature( |
| "attachment_fragment_shading_rate", |
| ), |
| }); |
| } |
| } else { |
| } |
| if self.fragment_density_map_deferred { |
| if !supported.fragment_density_map_deferred { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_density_map_deferred", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.fragment_density_map_dynamic { |
| if !supported.fragment_density_map_dynamic { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_density_map_dynamic", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.fragment_density_map_non_subsampled_images { |
| if !supported.fragment_density_map_non_subsampled_images { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_density_map_non_subsampled_images", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.fragment_density_map_offset { |
| if !supported.fragment_density_map_offset { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_density_map_offset", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.fragment_shader_barycentric { |
| if !supported.fragment_shader_barycentric { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_shader_barycentric", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.fragment_shader_pixel_interlock { |
| if !supported.fragment_shader_pixel_interlock { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_shader_pixel_interlock", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.fragment_shader_sample_interlock { |
| if !supported.fragment_shader_sample_interlock { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_shader_sample_interlock", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.fragment_shader_shading_rate_interlock { |
| if !supported.fragment_shader_shading_rate_interlock { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_shader_shading_rate_interlock", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.fragment_shading_rate_enums { |
| if !supported.fragment_shading_rate_enums { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_shading_rate_enums", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.fragment_stores_and_atomics { |
| if !supported.fragment_stores_and_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "fragment_stores_and_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.full_draw_index_uint32 { |
| if !supported.full_draw_index_uint32 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "full_draw_index_uint32", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.geometry_shader { |
| if !supported.geometry_shader { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "geometry_shader", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.geometry_streams { |
| if !supported.geometry_streams { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "geometry_streams", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.global_priority_query { |
| if !supported.global_priority_query { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "global_priority_query", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.graphics_pipeline_library { |
| if !supported.graphics_pipeline_library { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "graphics_pipeline_library", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.host_query_reset { |
| if !supported.host_query_reset { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "host_query_reset", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.image2_d_view_of3_d { |
| if !supported.image2_d_view_of3_d { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "image2_d_view_of3_d", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.image_compression_control { |
| if !supported.image_compression_control { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "image_compression_control", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.image_compression_control_swapchain { |
| if !supported.image_compression_control_swapchain { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "image_compression_control_swapchain", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.image_cube_array { |
| if !supported.image_cube_array { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "image_cube_array", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.image_footprint { |
| if !supported.image_footprint { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "image_footprint", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.image_view2_d_on3_d_image { |
| if !supported.image_view2_d_on3_d_image { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "image_view2_d_on3_d_image", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.image_view_format_reinterpretation { |
| if !supported.image_view_format_reinterpretation { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "image_view_format_reinterpretation", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.image_view_format_swizzle { |
| if !supported.image_view_format_swizzle { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "image_view_format_swizzle", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.imageless_framebuffer { |
| if !supported.imageless_framebuffer { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "imageless_framebuffer", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.independent_blend { |
| if !supported.independent_blend { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "independent_blend", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.index_type_uint8 { |
| if !supported.index_type_uint8 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "index_type_uint8", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.indirect_copy { |
| if !supported.indirect_copy { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "indirect_copy", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.inherited_conditional_rendering { |
| if !supported.inherited_conditional_rendering { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "inherited_conditional_rendering", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.inherited_queries { |
| if !supported.inherited_queries { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "inherited_queries", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.inherited_viewport_scissor2_d { |
| if !supported.inherited_viewport_scissor2_d { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "inherited_viewport_scissor2_d", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.inline_uniform_block { |
| if !supported.inline_uniform_block { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "inline_uniform_block", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.invocation_mask { |
| if !supported.invocation_mask { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "invocation_mask", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.large_points { |
| if !supported.large_points { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "large_points", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.legacy_dithering { |
| if !supported.legacy_dithering { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "legacy_dithering", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.linear_color_attachment { |
| if !supported.linear_color_attachment { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "linear_color_attachment", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.logic_op { |
| if !supported.logic_op { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "logic_op", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.maintenance4 { |
| if !supported.maintenance4 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "maintenance4", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.memory_decompression { |
| if !supported.memory_decompression { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "memory_decompression", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.memory_priority { |
| if !supported.memory_priority { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "memory_priority", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.mesh_shader { |
| if !supported.mesh_shader { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "mesh_shader", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.mesh_shader_queries { |
| if !supported.mesh_shader_queries { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "mesh_shader_queries", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.micromap { |
| if !supported.micromap { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "micromap", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.micromap_capture_replay { |
| if !supported.micromap_capture_replay { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "micromap_capture_replay", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.micromap_host_commands { |
| if !supported.micromap_host_commands { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "micromap_host_commands", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.min_lod { |
| if !supported.min_lod { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "min_lod", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.multi_draw { |
| if !supported.multi_draw { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "multi_draw", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.multi_draw_indirect { |
| if !supported.multi_draw_indirect { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "multi_draw_indirect", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.multi_viewport { |
| if !supported.multi_viewport { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "multi_viewport", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.multisample_array_image { |
| if !supported.multisample_array_image { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "multisample_array_image", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.multisampled_render_to_single_sampled { |
| if !supported.multisampled_render_to_single_sampled { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "multisampled_render_to_single_sampled", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.multiview { |
| if !supported.multiview { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "multiview", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.multiview_geometry_shader { |
| if !supported.multiview_geometry_shader { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "multiview_geometry_shader", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.multiview_mesh_shader { |
| if !supported.multiview_mesh_shader { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "multiview_mesh_shader", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.multiview_per_view_viewports { |
| if !supported.multiview_per_view_viewports { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "multiview_per_view_viewports", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.multiview_tessellation_shader { |
| if !supported.multiview_tessellation_shader { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "multiview_tessellation_shader", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.mutable_comparison_samplers { |
| if !supported.mutable_comparison_samplers { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "mutable_comparison_samplers", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.mutable_descriptor_type { |
| if !supported.mutable_descriptor_type { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "mutable_descriptor_type", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.no_invocation_fragment_shading_rates { |
| if !supported.no_invocation_fragment_shading_rates { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "no_invocation_fragment_shading_rates", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.non_seamless_cube_map { |
| if !supported.non_seamless_cube_map { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "non_seamless_cube_map", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.null_descriptor { |
| if !supported.null_descriptor { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "null_descriptor", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.occlusion_query_precise { |
| if !supported.occlusion_query_precise { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "occlusion_query_precise", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.optical_flow { |
| if !supported.optical_flow { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "optical_flow", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.pageable_device_local_memory { |
| if !supported.pageable_device_local_memory { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "pageable_device_local_memory", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.performance_counter_multiple_query_pools { |
| if !supported.performance_counter_multiple_query_pools { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "performance_counter_multiple_query_pools", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.performance_counter_query_pools { |
| if !supported.performance_counter_query_pools { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "performance_counter_query_pools", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.pipeline_creation_cache_control { |
| if !supported.pipeline_creation_cache_control { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "pipeline_creation_cache_control", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.pipeline_executable_info { |
| if !supported.pipeline_executable_info { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "pipeline_executable_info", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.pipeline_fragment_shading_rate { |
| if !supported.pipeline_fragment_shading_rate { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "pipeline_fragment_shading_rate", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| if self.shading_rate_image { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "pipeline_fragment_shading_rate", |
| restriction: crate::device::FeatureRestriction::ConflictsFeature( |
| "shading_rate_image", |
| ), |
| }); |
| } |
| if self.fragment_density_map { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "pipeline_fragment_shading_rate", |
| restriction: crate::device::FeatureRestriction::ConflictsFeature( |
| "fragment_density_map", |
| ), |
| }); |
| } |
| } else { |
| } |
| if self.pipeline_properties_identifier { |
| if !supported.pipeline_properties_identifier { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "pipeline_properties_identifier", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.pipeline_protected_access { |
| if !supported.pipeline_protected_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "pipeline_protected_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.pipeline_robustness { |
| if !supported.pipeline_robustness { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "pipeline_robustness", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.pipeline_statistics_query { |
| if !supported.pipeline_statistics_query { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "pipeline_statistics_query", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.point_polygons { |
| if !supported.point_polygons { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "point_polygons", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.present_barrier { |
| if !supported.present_barrier { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "present_barrier", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.present_id { |
| if !supported.present_id { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "present_id", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.present_wait { |
| if !supported.present_wait { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "present_wait", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.primitive_fragment_shading_rate { |
| if !supported.primitive_fragment_shading_rate { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "primitive_fragment_shading_rate", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| if self.shading_rate_image { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "primitive_fragment_shading_rate", |
| restriction: crate::device::FeatureRestriction::ConflictsFeature( |
| "shading_rate_image", |
| ), |
| }); |
| } |
| if self.fragment_density_map { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "primitive_fragment_shading_rate", |
| restriction: crate::device::FeatureRestriction::ConflictsFeature( |
| "fragment_density_map", |
| ), |
| }); |
| } |
| } else { |
| } |
| if self.primitive_fragment_shading_rate_mesh_shader { |
| if !supported.primitive_fragment_shading_rate_mesh_shader { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "primitive_fragment_shading_rate_mesh_shader", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.primitive_topology_list_restart { |
| if !supported.primitive_topology_list_restart { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "primitive_topology_list_restart", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.primitive_topology_patch_list_restart { |
| if !supported.primitive_topology_patch_list_restart { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "primitive_topology_patch_list_restart", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.primitives_generated_query { |
| if !supported.primitives_generated_query { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "primitives_generated_query", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.primitives_generated_query_with_non_zero_streams { |
| if !supported.primitives_generated_query_with_non_zero_streams { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "primitives_generated_query_with_non_zero_streams", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.primitives_generated_query_with_rasterizer_discard { |
| if !supported.primitives_generated_query_with_rasterizer_discard { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "primitives_generated_query_with_rasterizer_discard", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.private_data { |
| if !supported.private_data { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "private_data", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.protected_memory { |
| if !supported.protected_memory { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "protected_memory", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.provoking_vertex_last { |
| if !supported.provoking_vertex_last { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "provoking_vertex_last", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.rasterization_order_color_attachment_access { |
| if !supported.rasterization_order_color_attachment_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "rasterization_order_color_attachment_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.rasterization_order_depth_attachment_access { |
| if !supported.rasterization_order_depth_attachment_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "rasterization_order_depth_attachment_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.rasterization_order_stencil_attachment_access { |
| if !supported.rasterization_order_stencil_attachment_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "rasterization_order_stencil_attachment_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ray_query { |
| if !supported.ray_query { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ray_query", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ray_tracing_invocation_reorder { |
| if !supported.ray_tracing_invocation_reorder { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ray_tracing_invocation_reorder", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ray_tracing_maintenance1 { |
| if !supported.ray_tracing_maintenance1 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ray_tracing_maintenance1", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ray_tracing_motion_blur { |
| if !supported.ray_tracing_motion_blur { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ray_tracing_motion_blur", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ray_tracing_motion_blur_pipeline_trace_rays_indirect { |
| if !supported.ray_tracing_motion_blur_pipeline_trace_rays_indirect { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ray_tracing_motion_blur_pipeline_trace_rays_indirect", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ray_tracing_pipeline { |
| if !supported.ray_tracing_pipeline { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ray_tracing_pipeline", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ray_tracing_pipeline_shader_group_handle_capture_replay { |
| if !supported.ray_tracing_pipeline_shader_group_handle_capture_replay { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ray_tracing_pipeline_shader_group_handle_capture_replay", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed { |
| if !supported.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ray_tracing_pipeline_shader_group_handle_capture_replay_mixed", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ray_tracing_pipeline_trace_rays_indirect { |
| if !supported.ray_tracing_pipeline_trace_rays_indirect { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ray_tracing_pipeline_trace_rays_indirect", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ray_tracing_pipeline_trace_rays_indirect2 { |
| if !supported.ray_tracing_pipeline_trace_rays_indirect2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ray_tracing_pipeline_trace_rays_indirect2", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ray_traversal_primitive_culling { |
| if !supported.ray_traversal_primitive_culling { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ray_traversal_primitive_culling", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.rectangular_lines { |
| if !supported.rectangular_lines { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "rectangular_lines", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.report_address_binding { |
| if !supported.report_address_binding { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "report_address_binding", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.representative_fragment_test { |
| if !supported.representative_fragment_test { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "representative_fragment_test", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.robust_buffer_access { |
| if !supported.robust_buffer_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "robust_buffer_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.robust_buffer_access2 { |
| if !supported.robust_buffer_access2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "robust_buffer_access2", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.robust_image_access { |
| if !supported.robust_image_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "robust_image_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.robust_image_access2 { |
| if !supported.robust_image_access2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "robust_image_access2", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.runtime_descriptor_array { |
| if !supported.runtime_descriptor_array { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "runtime_descriptor_array", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sample_rate_shading { |
| if !supported.sample_rate_shading { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sample_rate_shading", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sampler2_d_view_of3_d { |
| if !supported.sampler2_d_view_of3_d { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sampler2_d_view_of3_d", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sampler_anisotropy { |
| if !supported.sampler_anisotropy { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sampler_anisotropy", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sampler_filter_minmax { |
| if !supported.sampler_filter_minmax { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sampler_filter_minmax", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| if extensions.ext_sampler_filter_minmax && api_version >= crate::Version::V1_2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sampler_filter_minmax", |
| restriction: crate::device::FeatureRestriction::RequiredByExtension( |
| "ext_sampler_filter_minmax", |
| ), |
| }); |
| } |
| } |
| if self.sampler_mip_lod_bias { |
| if !supported.sampler_mip_lod_bias { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sampler_mip_lod_bias", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sampler_mirror_clamp_to_edge { |
| if !supported.sampler_mirror_clamp_to_edge { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sampler_mirror_clamp_to_edge", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| if extensions.khr_sampler_mirror_clamp_to_edge && api_version >= crate::Version::V1_2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sampler_mirror_clamp_to_edge", |
| restriction: crate::device::FeatureRestriction::RequiredByExtension( |
| "khr_sampler_mirror_clamp_to_edge", |
| ), |
| }); |
| } |
| } |
| if self.sampler_ycbcr_conversion { |
| if !supported.sampler_ycbcr_conversion { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sampler_ycbcr_conversion", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.scalar_block_layout { |
| if !supported.scalar_block_layout { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "scalar_block_layout", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.separate_depth_stencil_layouts { |
| if !supported.separate_depth_stencil_layouts { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "separate_depth_stencil_layouts", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.separate_stencil_mask_ref { |
| if !supported.separate_stencil_mask_ref { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "separate_stencil_mask_ref", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_buffer_float16_atomic_add { |
| if !supported.shader_buffer_float16_atomic_add { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_buffer_float16_atomic_add", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_buffer_float16_atomic_min_max { |
| if !supported.shader_buffer_float16_atomic_min_max { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_buffer_float16_atomic_min_max", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_buffer_float16_atomics { |
| if !supported.shader_buffer_float16_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_buffer_float16_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_buffer_float32_atomic_add { |
| if !supported.shader_buffer_float32_atomic_add { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_buffer_float32_atomic_add", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_buffer_float32_atomic_min_max { |
| if !supported.shader_buffer_float32_atomic_min_max { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_buffer_float32_atomic_min_max", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_buffer_float32_atomics { |
| if !supported.shader_buffer_float32_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_buffer_float32_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_buffer_float64_atomic_add { |
| if !supported.shader_buffer_float64_atomic_add { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_buffer_float64_atomic_add", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_buffer_float64_atomic_min_max { |
| if !supported.shader_buffer_float64_atomic_min_max { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_buffer_float64_atomic_min_max", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_buffer_float64_atomics { |
| if !supported.shader_buffer_float64_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_buffer_float64_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_buffer_int64_atomics { |
| if !supported.shader_buffer_int64_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_buffer_int64_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_clip_distance { |
| if !supported.shader_clip_distance { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_clip_distance", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_core_builtins { |
| if !supported.shader_core_builtins { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_core_builtins", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_cull_distance { |
| if !supported.shader_cull_distance { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_cull_distance", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_demote_to_helper_invocation { |
| if !supported.shader_demote_to_helper_invocation { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_demote_to_helper_invocation", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_device_clock { |
| if !supported.shader_device_clock { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_device_clock", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_draw_parameters { |
| if !supported.shader_draw_parameters { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_draw_parameters", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| if extensions.khr_shader_draw_parameters && api_version >= crate::Version::V1_2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_draw_parameters", |
| restriction: crate::device::FeatureRestriction::RequiredByExtension( |
| "khr_shader_draw_parameters", |
| ), |
| }); |
| } |
| } |
| if self.shader_early_and_late_fragment_tests { |
| if !supported.shader_early_and_late_fragment_tests { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_early_and_late_fragment_tests", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_float16 { |
| if !supported.shader_float16 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_float16", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_float64 { |
| if !supported.shader_float64 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_float64", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_image_float32_atomic_add { |
| if !supported.shader_image_float32_atomic_add { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_image_float32_atomic_add", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_image_float32_atomic_min_max { |
| if !supported.shader_image_float32_atomic_min_max { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_image_float32_atomic_min_max", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_image_float32_atomics { |
| if !supported.shader_image_float32_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_image_float32_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_image_gather_extended { |
| if !supported.shader_image_gather_extended { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_image_gather_extended", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_image_int64_atomics { |
| if !supported.shader_image_int64_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_image_int64_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_input_attachment_array_dynamic_indexing { |
| if !supported.shader_input_attachment_array_dynamic_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_input_attachment_array_dynamic_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_input_attachment_array_non_uniform_indexing { |
| if !supported.shader_input_attachment_array_non_uniform_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_input_attachment_array_non_uniform_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_int16 { |
| if !supported.shader_int16 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_int16", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_int64 { |
| if !supported.shader_int64 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_int64", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_int8 { |
| if !supported.shader_int8 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_int8", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_integer_dot_product { |
| if !supported.shader_integer_dot_product { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_integer_dot_product", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_integer_functions2 { |
| if !supported.shader_integer_functions2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_integer_functions2", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_module_identifier { |
| if !supported.shader_module_identifier { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_module_identifier", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_output_layer { |
| if !supported.shader_output_layer { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_output_layer", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| if extensions.ext_shader_viewport_index_layer && api_version >= crate::Version::V1_2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_output_layer", |
| restriction: crate::device::FeatureRestriction::RequiredByExtension( |
| "ext_shader_viewport_index_layer", |
| ), |
| }); |
| } |
| } |
| if self.shader_output_viewport_index { |
| if !supported.shader_output_viewport_index { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_output_viewport_index", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| if extensions.ext_shader_viewport_index_layer && api_version >= crate::Version::V1_2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_output_viewport_index", |
| restriction: crate::device::FeatureRestriction::RequiredByExtension( |
| "ext_shader_viewport_index_layer", |
| ), |
| }); |
| } |
| } |
| if self.shader_resource_min_lod { |
| if !supported.shader_resource_min_lod { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_resource_min_lod", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_resource_residency { |
| if !supported.shader_resource_residency { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_resource_residency", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_sample_rate_interpolation_functions { |
| if !supported.shader_sample_rate_interpolation_functions { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_sample_rate_interpolation_functions", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_sampled_image_array_dynamic_indexing { |
| if !supported.shader_sampled_image_array_dynamic_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_sampled_image_array_dynamic_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_sampled_image_array_non_uniform_indexing { |
| if !supported.shader_sampled_image_array_non_uniform_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_sampled_image_array_non_uniform_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_shared_float16_atomic_add { |
| if !supported.shader_shared_float16_atomic_add { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_shared_float16_atomic_add", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_shared_float16_atomic_min_max { |
| if !supported.shader_shared_float16_atomic_min_max { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_shared_float16_atomic_min_max", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_shared_float16_atomics { |
| if !supported.shader_shared_float16_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_shared_float16_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_shared_float32_atomic_add { |
| if !supported.shader_shared_float32_atomic_add { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_shared_float32_atomic_add", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_shared_float32_atomic_min_max { |
| if !supported.shader_shared_float32_atomic_min_max { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_shared_float32_atomic_min_max", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_shared_float32_atomics { |
| if !supported.shader_shared_float32_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_shared_float32_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_shared_float64_atomic_add { |
| if !supported.shader_shared_float64_atomic_add { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_shared_float64_atomic_add", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_shared_float64_atomic_min_max { |
| if !supported.shader_shared_float64_atomic_min_max { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_shared_float64_atomic_min_max", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_shared_float64_atomics { |
| if !supported.shader_shared_float64_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_shared_float64_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_shared_int64_atomics { |
| if !supported.shader_shared_int64_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_shared_int64_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_sm_builtins { |
| if !supported.shader_sm_builtins { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_sm_builtins", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_storage_buffer_array_dynamic_indexing { |
| if !supported.shader_storage_buffer_array_dynamic_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_storage_buffer_array_dynamic_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_storage_buffer_array_non_uniform_indexing { |
| if !supported.shader_storage_buffer_array_non_uniform_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_storage_buffer_array_non_uniform_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_storage_image_array_dynamic_indexing { |
| if !supported.shader_storage_image_array_dynamic_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_storage_image_array_dynamic_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_storage_image_array_non_uniform_indexing { |
| if !supported.shader_storage_image_array_non_uniform_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_storage_image_array_non_uniform_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_storage_image_extended_formats { |
| if !supported.shader_storage_image_extended_formats { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_storage_image_extended_formats", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_storage_image_multisample { |
| if !supported.shader_storage_image_multisample { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_storage_image_multisample", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_storage_image_read_without_format { |
| if !supported.shader_storage_image_read_without_format { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_storage_image_read_without_format", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_storage_image_write_without_format { |
| if !supported.shader_storage_image_write_without_format { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_storage_image_write_without_format", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_storage_texel_buffer_array_dynamic_indexing { |
| if !supported.shader_storage_texel_buffer_array_dynamic_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_storage_texel_buffer_array_dynamic_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_storage_texel_buffer_array_non_uniform_indexing { |
| if !supported.shader_storage_texel_buffer_array_non_uniform_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_storage_texel_buffer_array_non_uniform_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_subgroup_clock { |
| if !supported.shader_subgroup_clock { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_subgroup_clock", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_subgroup_extended_types { |
| if !supported.shader_subgroup_extended_types { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_subgroup_extended_types", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_subgroup_uniform_control_flow { |
| if !supported.shader_subgroup_uniform_control_flow { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_subgroup_uniform_control_flow", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_terminate_invocation { |
| if !supported.shader_terminate_invocation { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_terminate_invocation", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_tessellation_and_geometry_point_size { |
| if !supported.shader_tessellation_and_geometry_point_size { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_tessellation_and_geometry_point_size", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_uniform_buffer_array_dynamic_indexing { |
| if !supported.shader_uniform_buffer_array_dynamic_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_uniform_buffer_array_dynamic_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_uniform_buffer_array_non_uniform_indexing { |
| if !supported.shader_uniform_buffer_array_non_uniform_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_uniform_buffer_array_non_uniform_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_uniform_texel_buffer_array_dynamic_indexing { |
| if !supported.shader_uniform_texel_buffer_array_dynamic_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_uniform_texel_buffer_array_dynamic_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_uniform_texel_buffer_array_non_uniform_indexing { |
| if !supported.shader_uniform_texel_buffer_array_non_uniform_indexing { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_uniform_texel_buffer_array_non_uniform_indexing", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shader_zero_initialize_workgroup_memory { |
| if !supported.shader_zero_initialize_workgroup_memory { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shader_zero_initialize_workgroup_memory", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shading_rate_coarse_sample_order { |
| if !supported.shading_rate_coarse_sample_order { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shading_rate_coarse_sample_order", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.shading_rate_image { |
| if !supported.shading_rate_image { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shading_rate_image", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| if self.pipeline_fragment_shading_rate { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shading_rate_image", |
| restriction: crate::device::FeatureRestriction::ConflictsFeature( |
| "pipeline_fragment_shading_rate", |
| ), |
| }); |
| } |
| if self.primitive_fragment_shading_rate { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shading_rate_image", |
| restriction: crate::device::FeatureRestriction::ConflictsFeature( |
| "primitive_fragment_shading_rate", |
| ), |
| }); |
| } |
| if self.attachment_fragment_shading_rate { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "shading_rate_image", |
| restriction: crate::device::FeatureRestriction::ConflictsFeature( |
| "attachment_fragment_shading_rate", |
| ), |
| }); |
| } |
| } else { |
| } |
| if self.smooth_lines { |
| if !supported.smooth_lines { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "smooth_lines", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sparse_binding { |
| if !supported.sparse_binding { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_binding", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sparse_image_float32_atomic_add { |
| if !supported.sparse_image_float32_atomic_add { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_image_float32_atomic_add", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| if !self.shader_image_float32_atomic_add { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_image_float32_atomic_add", |
| restriction: crate::device::FeatureRestriction::RequiresFeature( |
| "shader_image_float32_atomic_add", |
| ), |
| }); |
| } |
| } else { |
| } |
| if self.sparse_image_float32_atomic_min_max { |
| if !supported.sparse_image_float32_atomic_min_max { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_image_float32_atomic_min_max", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| if !self.shader_image_float32_atomic_min_max { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_image_float32_atomic_min_max", |
| restriction: crate::device::FeatureRestriction::RequiresFeature( |
| "shader_image_float32_atomic_min_max", |
| ), |
| }); |
| } |
| } else { |
| } |
| if self.sparse_image_float32_atomics { |
| if !supported.sparse_image_float32_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_image_float32_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| if !self.shader_image_float32_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_image_float32_atomics", |
| restriction: crate::device::FeatureRestriction::RequiresFeature( |
| "shader_image_float32_atomics", |
| ), |
| }); |
| } |
| } else { |
| } |
| if self.sparse_image_int64_atomics { |
| if !supported.sparse_image_int64_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_image_int64_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| if !self.shader_image_int64_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_image_int64_atomics", |
| restriction: crate::device::FeatureRestriction::RequiresFeature( |
| "shader_image_int64_atomics", |
| ), |
| }); |
| } |
| } else { |
| } |
| if self.sparse_residency16_samples { |
| if !supported.sparse_residency16_samples { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_residency16_samples", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sparse_residency2_samples { |
| if !supported.sparse_residency2_samples { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_residency2_samples", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sparse_residency4_samples { |
| if !supported.sparse_residency4_samples { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_residency4_samples", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sparse_residency8_samples { |
| if !supported.sparse_residency8_samples { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_residency8_samples", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sparse_residency_aliased { |
| if !supported.sparse_residency_aliased { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_residency_aliased", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sparse_residency_buffer { |
| if !supported.sparse_residency_buffer { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_residency_buffer", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sparse_residency_image2_d { |
| if !supported.sparse_residency_image2_d { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_residency_image2_d", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.sparse_residency_image3_d { |
| if !supported.sparse_residency_image3_d { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "sparse_residency_image3_d", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.stippled_bresenham_lines { |
| if !supported.stippled_bresenham_lines { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "stippled_bresenham_lines", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.stippled_rectangular_lines { |
| if !supported.stippled_rectangular_lines { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "stippled_rectangular_lines", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.stippled_smooth_lines { |
| if !supported.stippled_smooth_lines { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "stippled_smooth_lines", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.storage_buffer16_bit_access { |
| if !supported.storage_buffer16_bit_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "storage_buffer16_bit_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.storage_buffer8_bit_access { |
| if !supported.storage_buffer8_bit_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "storage_buffer8_bit_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.storage_input_output16 { |
| if !supported.storage_input_output16 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "storage_input_output16", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.storage_push_constant16 { |
| if !supported.storage_push_constant16 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "storage_push_constant16", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.storage_push_constant8 { |
| if !supported.storage_push_constant8 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "storage_push_constant8", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.subgroup_broadcast_dynamic_id { |
| if !supported.subgroup_broadcast_dynamic_id { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "subgroup_broadcast_dynamic_id", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.subgroup_size_control { |
| if !supported.subgroup_size_control { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "subgroup_size_control", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.subpass_merge_feedback { |
| if !supported.subpass_merge_feedback { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "subpass_merge_feedback", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.subpass_shading { |
| if !supported.subpass_shading { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "subpass_shading", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.supersample_fragment_shading_rates { |
| if !supported.supersample_fragment_shading_rates { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "supersample_fragment_shading_rates", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.swapchain_maintenance1 { |
| if !supported.swapchain_maintenance1 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "swapchain_maintenance1", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.synchronization2 { |
| if !supported.synchronization2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "synchronization2", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.task_shader { |
| if !supported.task_shader { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "task_shader", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.tessellation_isolines { |
| if !supported.tessellation_isolines { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "tessellation_isolines", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.tessellation_point_mode { |
| if !supported.tessellation_point_mode { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "tessellation_point_mode", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.tessellation_shader { |
| if !supported.tessellation_shader { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "tessellation_shader", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.texel_buffer_alignment { |
| if !supported.texel_buffer_alignment { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "texel_buffer_alignment", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.texture_block_match { |
| if !supported.texture_block_match { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "texture_block_match", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.texture_box_filter { |
| if !supported.texture_box_filter { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "texture_box_filter", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.texture_compression_astc_hdr { |
| if !supported.texture_compression_astc_hdr { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "texture_compression_astc_hdr", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.texture_compression_astc_ldr { |
| if !supported.texture_compression_astc_ldr { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "texture_compression_astc_ldr", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.texture_compression_bc { |
| if !supported.texture_compression_bc { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "texture_compression_bc", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.texture_compression_etc2 { |
| if !supported.texture_compression_etc2 { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "texture_compression_etc2", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.texture_sample_weighted { |
| if !supported.texture_sample_weighted { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "texture_sample_weighted", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.tile_properties { |
| if !supported.tile_properties { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "tile_properties", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.timeline_semaphore { |
| if !supported.timeline_semaphore { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "timeline_semaphore", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.transform_feedback { |
| if !supported.transform_feedback { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "transform_feedback", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.transform_feedback_preserves_provoking_vertex { |
| if !supported.transform_feedback_preserves_provoking_vertex { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "transform_feedback_preserves_provoking_vertex", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.triangle_fans { |
| if !supported.triangle_fans { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "triangle_fans", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.uniform_and_storage_buffer16_bit_access { |
| if !supported.uniform_and_storage_buffer16_bit_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "uniform_and_storage_buffer16_bit_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.uniform_and_storage_buffer8_bit_access { |
| if !supported.uniform_and_storage_buffer8_bit_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "uniform_and_storage_buffer8_bit_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.uniform_buffer_standard_layout { |
| if !supported.uniform_buffer_standard_layout { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "uniform_buffer_standard_layout", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.variable_multisample_rate { |
| if !supported.variable_multisample_rate { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "variable_multisample_rate", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.variable_pointers { |
| if !supported.variable_pointers { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "variable_pointers", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.variable_pointers_storage_buffer { |
| if !supported.variable_pointers_storage_buffer { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "variable_pointers_storage_buffer", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.vertex_attribute_access_beyond_stride { |
| if !supported.vertex_attribute_access_beyond_stride { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "vertex_attribute_access_beyond_stride", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.vertex_attribute_instance_rate_divisor { |
| if !supported.vertex_attribute_instance_rate_divisor { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "vertex_attribute_instance_rate_divisor", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.vertex_attribute_instance_rate_zero_divisor { |
| if !supported.vertex_attribute_instance_rate_zero_divisor { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "vertex_attribute_instance_rate_zero_divisor", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.vertex_input_dynamic_state { |
| if !supported.vertex_input_dynamic_state { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "vertex_input_dynamic_state", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.vertex_pipeline_stores_and_atomics { |
| if !supported.vertex_pipeline_stores_and_atomics { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "vertex_pipeline_stores_and_atomics", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.vulkan_memory_model { |
| if !supported.vulkan_memory_model { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "vulkan_memory_model", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.vulkan_memory_model_availability_visibility_chains { |
| if !supported.vulkan_memory_model_availability_visibility_chains { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "vulkan_memory_model_availability_visibility_chains", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.vulkan_memory_model_device_scope { |
| if !supported.vulkan_memory_model_device_scope { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "vulkan_memory_model_device_scope", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.wide_lines { |
| if !supported.wide_lines { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "wide_lines", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.workgroup_memory_explicit_layout { |
| if !supported.workgroup_memory_explicit_layout { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "workgroup_memory_explicit_layout", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.workgroup_memory_explicit_layout16_bit_access { |
| if !supported.workgroup_memory_explicit_layout16_bit_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "workgroup_memory_explicit_layout16_bit_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.workgroup_memory_explicit_layout8_bit_access { |
| if !supported.workgroup_memory_explicit_layout8_bit_access { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "workgroup_memory_explicit_layout8_bit_access", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.workgroup_memory_explicit_layout_scalar_block_layout { |
| if !supported.workgroup_memory_explicit_layout_scalar_block_layout { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "workgroup_memory_explicit_layout_scalar_block_layout", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ycbcr2plane444_formats { |
| if !supported.ycbcr2plane444_formats { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ycbcr2plane444_formats", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| if self.ycbcr_image_arrays { |
| if !supported.ycbcr_image_arrays { |
| return Err(crate::device::FeatureRestrictionError { |
| feature: "ycbcr_image_arrays", |
| restriction: crate::device::FeatureRestriction::NotSupported, |
| }); |
| } |
| } else { |
| } |
| Ok(()) |
| } |
| #[doc = r" Returns an `Features` object with none of the members set."] |
| #[inline] |
| pub const fn empty() -> Self { |
| Self { |
| acceleration_structure: false, |
| acceleration_structure_capture_replay: false, |
| acceleration_structure_host_commands: false, |
| acceleration_structure_indirect_build: false, |
| advanced_blend_coherent_operations: false, |
| alpha_to_one: false, |
| amigo_profiling: false, |
| attachment_feedback_loop_layout: false, |
| attachment_fragment_shading_rate: false, |
| border_color_swizzle: false, |
| border_color_swizzle_from_image: false, |
| bresenham_lines: false, |
| buffer_device_address: false, |
| buffer_device_address_capture_replay: false, |
| buffer_device_address_multi_device: false, |
| color_write_enable: false, |
| compute_derivative_group_linear: false, |
| compute_derivative_group_quads: false, |
| compute_full_subgroups: false, |
| conditional_rendering: false, |
| constant_alpha_color_blend_factors: false, |
| cooperative_matrix: false, |
| cooperative_matrix_robust_buffer_access: false, |
| corner_sampled_image: false, |
| coverage_reduction_mode: false, |
| custom_border_color_without_format: false, |
| custom_border_colors: false, |
| decode_mode_shared_exponent: false, |
| dedicated_allocation_image_aliasing: false, |
| depth_bias_clamp: false, |
| depth_bounds: false, |
| depth_clamp: false, |
| depth_clamp_zero_one: false, |
| depth_clip_control: false, |
| depth_clip_enable: false, |
| descriptor_binding_acceleration_structure_update_after_bind: false, |
| descriptor_binding_inline_uniform_block_update_after_bind: false, |
| descriptor_binding_partially_bound: false, |
| descriptor_binding_sampled_image_update_after_bind: false, |
| descriptor_binding_storage_buffer_update_after_bind: false, |
| descriptor_binding_storage_image_update_after_bind: false, |
| descriptor_binding_storage_texel_buffer_update_after_bind: false, |
| descriptor_binding_uniform_buffer_update_after_bind: false, |
| descriptor_binding_uniform_texel_buffer_update_after_bind: false, |
| descriptor_binding_update_unused_while_pending: false, |
| descriptor_binding_variable_descriptor_count: false, |
| descriptor_buffer: false, |
| descriptor_buffer_capture_replay: false, |
| descriptor_buffer_image_layout_ignored: false, |
| descriptor_buffer_push_descriptors: false, |
| descriptor_indexing: false, |
| descriptor_set_host_mapping: false, |
| device_coherent_memory: false, |
| device_fault: false, |
| device_fault_vendor_binary: false, |
| device_generated_commands: false, |
| device_memory_report: false, |
| diagnostics_config: false, |
| draw_indirect_count: false, |
| draw_indirect_first_instance: false, |
| dual_src_blend: false, |
| dynamic_rendering: false, |
| events: false, |
| exclusive_scissor: false, |
| extended_dynamic_state: false, |
| extended_dynamic_state2: false, |
| extended_dynamic_state2_logic_op: false, |
| extended_dynamic_state2_patch_control_points: false, |
| extended_dynamic_state3_alpha_to_coverage_enable: false, |
| extended_dynamic_state3_alpha_to_one_enable: false, |
| extended_dynamic_state3_color_blend_advanced: false, |
| extended_dynamic_state3_color_blend_enable: false, |
| extended_dynamic_state3_color_blend_equation: false, |
| extended_dynamic_state3_color_write_mask: false, |
| extended_dynamic_state3_conservative_rasterization_mode: false, |
| extended_dynamic_state3_coverage_modulation_mode: false, |
| extended_dynamic_state3_coverage_modulation_table: false, |
| extended_dynamic_state3_coverage_modulation_table_enable: false, |
| extended_dynamic_state3_coverage_reduction_mode: false, |
| extended_dynamic_state3_coverage_to_color_enable: false, |
| extended_dynamic_state3_coverage_to_color_location: false, |
| extended_dynamic_state3_depth_clamp_enable: false, |
| extended_dynamic_state3_depth_clip_enable: false, |
| extended_dynamic_state3_depth_clip_negative_one_to_one: false, |
| extended_dynamic_state3_extra_primitive_overestimation_size: false, |
| extended_dynamic_state3_line_rasterization_mode: false, |
| extended_dynamic_state3_line_stipple_enable: false, |
| extended_dynamic_state3_logic_op_enable: false, |
| extended_dynamic_state3_polygon_mode: false, |
| extended_dynamic_state3_provoking_vertex_mode: false, |
| extended_dynamic_state3_rasterization_samples: false, |
| extended_dynamic_state3_rasterization_stream: false, |
| extended_dynamic_state3_representative_fragment_test_enable: false, |
| extended_dynamic_state3_sample_locations_enable: false, |
| extended_dynamic_state3_sample_mask: false, |
| extended_dynamic_state3_shading_rate_image_enable: false, |
| extended_dynamic_state3_tessellation_domain_origin: false, |
| extended_dynamic_state3_viewport_swizzle: false, |
| extended_dynamic_state3_viewport_w_scaling_enable: false, |
| external_memory_rdma: false, |
| fill_mode_non_solid: false, |
| format_a4b4g4r4: false, |
| format_a4r4g4b4: false, |
| format_rgba10x6_without_y_cb_cr_sampler: false, |
| fragment_density_map: false, |
| fragment_density_map_deferred: false, |
| fragment_density_map_dynamic: false, |
| fragment_density_map_non_subsampled_images: false, |
| fragment_density_map_offset: false, |
| fragment_shader_barycentric: false, |
| fragment_shader_pixel_interlock: false, |
| fragment_shader_sample_interlock: false, |
| fragment_shader_shading_rate_interlock: false, |
| fragment_shading_rate_enums: false, |
| fragment_stores_and_atomics: false, |
| full_draw_index_uint32: false, |
| geometry_shader: false, |
| geometry_streams: false, |
| global_priority_query: false, |
| graphics_pipeline_library: false, |
| host_query_reset: false, |
| image2_d_view_of3_d: false, |
| image_compression_control: false, |
| image_compression_control_swapchain: false, |
| image_cube_array: false, |
| image_footprint: false, |
| image_view2_d_on3_d_image: false, |
| image_view_format_reinterpretation: false, |
| image_view_format_swizzle: false, |
| imageless_framebuffer: false, |
| independent_blend: false, |
| index_type_uint8: false, |
| indirect_copy: false, |
| inherited_conditional_rendering: false, |
| inherited_queries: false, |
| inherited_viewport_scissor2_d: false, |
| inline_uniform_block: false, |
| invocation_mask: false, |
| large_points: false, |
| legacy_dithering: false, |
| linear_color_attachment: false, |
| logic_op: false, |
| maintenance4: false, |
| memory_decompression: false, |
| memory_priority: false, |
| mesh_shader: false, |
| mesh_shader_queries: false, |
| micromap: false, |
| micromap_capture_replay: false, |
| micromap_host_commands: false, |
| min_lod: false, |
| multi_draw: false, |
| multi_draw_indirect: false, |
| multi_viewport: false, |
| multisample_array_image: false, |
| multisampled_render_to_single_sampled: false, |
| multiview: false, |
| multiview_geometry_shader: false, |
| multiview_mesh_shader: false, |
| multiview_per_view_viewports: false, |
| multiview_tessellation_shader: false, |
| mutable_comparison_samplers: false, |
| mutable_descriptor_type: false, |
| no_invocation_fragment_shading_rates: false, |
| non_seamless_cube_map: false, |
| null_descriptor: false, |
| occlusion_query_precise: false, |
| optical_flow: false, |
| pageable_device_local_memory: false, |
| performance_counter_multiple_query_pools: false, |
| performance_counter_query_pools: false, |
| pipeline_creation_cache_control: false, |
| pipeline_executable_info: false, |
| pipeline_fragment_shading_rate: false, |
| pipeline_properties_identifier: false, |
| pipeline_protected_access: false, |
| pipeline_robustness: false, |
| pipeline_statistics_query: false, |
| point_polygons: false, |
| present_barrier: false, |
| present_id: false, |
| present_wait: false, |
| primitive_fragment_shading_rate: false, |
| primitive_fragment_shading_rate_mesh_shader: false, |
| primitive_topology_list_restart: false, |
| primitive_topology_patch_list_restart: false, |
| primitives_generated_query: false, |
| primitives_generated_query_with_non_zero_streams: false, |
| primitives_generated_query_with_rasterizer_discard: false, |
| private_data: false, |
| protected_memory: false, |
| provoking_vertex_last: false, |
| rasterization_order_color_attachment_access: false, |
| rasterization_order_depth_attachment_access: false, |
| rasterization_order_stencil_attachment_access: false, |
| ray_query: false, |
| ray_tracing_invocation_reorder: false, |
| ray_tracing_maintenance1: false, |
| ray_tracing_motion_blur: false, |
| ray_tracing_motion_blur_pipeline_trace_rays_indirect: false, |
| ray_tracing_pipeline: false, |
| ray_tracing_pipeline_shader_group_handle_capture_replay: false, |
| ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: false, |
| ray_tracing_pipeline_trace_rays_indirect: false, |
| ray_tracing_pipeline_trace_rays_indirect2: false, |
| ray_traversal_primitive_culling: false, |
| rectangular_lines: false, |
| report_address_binding: false, |
| representative_fragment_test: false, |
| robust_buffer_access: false, |
| robust_buffer_access2: false, |
| robust_image_access: false, |
| robust_image_access2: false, |
| runtime_descriptor_array: false, |
| sample_rate_shading: false, |
| sampler2_d_view_of3_d: false, |
| sampler_anisotropy: false, |
| sampler_filter_minmax: false, |
| sampler_mip_lod_bias: false, |
| sampler_mirror_clamp_to_edge: false, |
| sampler_ycbcr_conversion: false, |
| scalar_block_layout: false, |
| separate_depth_stencil_layouts: false, |
| separate_stencil_mask_ref: false, |
| shader_buffer_float16_atomic_add: false, |
| shader_buffer_float16_atomic_min_max: false, |
| shader_buffer_float16_atomics: false, |
| shader_buffer_float32_atomic_add: false, |
| shader_buffer_float32_atomic_min_max: false, |
| shader_buffer_float32_atomics: false, |
| shader_buffer_float64_atomic_add: false, |
| shader_buffer_float64_atomic_min_max: false, |
| shader_buffer_float64_atomics: false, |
| shader_buffer_int64_atomics: false, |
| shader_clip_distance: false, |
| shader_core_builtins: false, |
| shader_cull_distance: false, |
| shader_demote_to_helper_invocation: false, |
| shader_device_clock: false, |
| shader_draw_parameters: false, |
| shader_early_and_late_fragment_tests: false, |
| shader_float16: false, |
| shader_float64: false, |
| shader_image_float32_atomic_add: false, |
| shader_image_float32_atomic_min_max: false, |
| shader_image_float32_atomics: false, |
| shader_image_gather_extended: false, |
| shader_image_int64_atomics: false, |
| shader_input_attachment_array_dynamic_indexing: false, |
| shader_input_attachment_array_non_uniform_indexing: false, |
| shader_int16: false, |
| shader_int64: false, |
| shader_int8: false, |
| shader_integer_dot_product: false, |
| shader_integer_functions2: false, |
| shader_module_identifier: false, |
| shader_output_layer: false, |
| shader_output_viewport_index: false, |
| shader_resource_min_lod: false, |
| shader_resource_residency: false, |
| shader_sample_rate_interpolation_functions: false, |
| shader_sampled_image_array_dynamic_indexing: false, |
| shader_sampled_image_array_non_uniform_indexing: false, |
| shader_shared_float16_atomic_add: false, |
| shader_shared_float16_atomic_min_max: false, |
| shader_shared_float16_atomics: false, |
| shader_shared_float32_atomic_add: false, |
| shader_shared_float32_atomic_min_max: false, |
| shader_shared_float32_atomics: false, |
| shader_shared_float64_atomic_add: false, |
| shader_shared_float64_atomic_min_max: false, |
| shader_shared_float64_atomics: false, |
| shader_shared_int64_atomics: false, |
| shader_sm_builtins: false, |
| shader_storage_buffer_array_dynamic_indexing: false, |
| shader_storage_buffer_array_non_uniform_indexing: false, |
| shader_storage_image_array_dynamic_indexing: false, |
| shader_storage_image_array_non_uniform_indexing: false, |
| shader_storage_image_extended_formats: false, |
| shader_storage_image_multisample: false, |
| shader_storage_image_read_without_format: false, |
| shader_storage_image_write_without_format: false, |
| shader_storage_texel_buffer_array_dynamic_indexing: false, |
| shader_storage_texel_buffer_array_non_uniform_indexing: false, |
| shader_subgroup_clock: false, |
| shader_subgroup_extended_types: false, |
| shader_subgroup_uniform_control_flow: false, |
| shader_terminate_invocation: false, |
| shader_tessellation_and_geometry_point_size: false, |
| shader_uniform_buffer_array_dynamic_indexing: false, |
| shader_uniform_buffer_array_non_uniform_indexing: false, |
| shader_uniform_texel_buffer_array_dynamic_indexing: false, |
| shader_uniform_texel_buffer_array_non_uniform_indexing: false, |
| shader_zero_initialize_workgroup_memory: false, |
| shading_rate_coarse_sample_order: false, |
| shading_rate_image: false, |
| smooth_lines: false, |
| sparse_binding: false, |
| sparse_image_float32_atomic_add: false, |
| sparse_image_float32_atomic_min_max: false, |
| sparse_image_float32_atomics: false, |
| sparse_image_int64_atomics: false, |
| sparse_residency16_samples: false, |
| sparse_residency2_samples: false, |
| sparse_residency4_samples: false, |
| sparse_residency8_samples: false, |
| sparse_residency_aliased: false, |
| sparse_residency_buffer: false, |
| sparse_residency_image2_d: false, |
| sparse_residency_image3_d: false, |
| stippled_bresenham_lines: false, |
| stippled_rectangular_lines: false, |
| stippled_smooth_lines: false, |
| storage_buffer16_bit_access: false, |
| storage_buffer8_bit_access: false, |
| storage_input_output16: false, |
| storage_push_constant16: false, |
| storage_push_constant8: false, |
| subgroup_broadcast_dynamic_id: false, |
| subgroup_size_control: false, |
| subpass_merge_feedback: false, |
| subpass_shading: false, |
| supersample_fragment_shading_rates: false, |
| swapchain_maintenance1: false, |
| synchronization2: false, |
| task_shader: false, |
| tessellation_isolines: false, |
| tessellation_point_mode: false, |
| tessellation_shader: false, |
| texel_buffer_alignment: false, |
| texture_block_match: false, |
| texture_box_filter: false, |
| texture_compression_astc_hdr: false, |
| texture_compression_astc_ldr: false, |
| texture_compression_bc: false, |
| texture_compression_etc2: false, |
| texture_sample_weighted: false, |
| tile_properties: false, |
| timeline_semaphore: false, |
| transform_feedback: false, |
| transform_feedback_preserves_provoking_vertex: false, |
| triangle_fans: false, |
| uniform_and_storage_buffer16_bit_access: false, |
| uniform_and_storage_buffer8_bit_access: false, |
| uniform_buffer_standard_layout: false, |
| variable_multisample_rate: false, |
| variable_pointers: false, |
| variable_pointers_storage_buffer: false, |
| vertex_attribute_access_beyond_stride: false, |
| vertex_attribute_instance_rate_divisor: false, |
| vertex_attribute_instance_rate_zero_divisor: false, |
| vertex_input_dynamic_state: false, |
| vertex_pipeline_stores_and_atomics: false, |
| vulkan_memory_model: false, |
| vulkan_memory_model_availability_visibility_chains: false, |
| vulkan_memory_model_device_scope: false, |
| wide_lines: false, |
| workgroup_memory_explicit_layout: false, |
| workgroup_memory_explicit_layout16_bit_access: false, |
| workgroup_memory_explicit_layout8_bit_access: false, |
| workgroup_memory_explicit_layout_scalar_block_layout: false, |
| ycbcr2plane444_formats: false, |
| ycbcr_image_arrays: false, |
| _ne: crate::NonExhaustive(()), |
| } |
| } |
| #[doc = r" Returns an `Features` object with none of the members set."] |
| #[deprecated(since = "0.31.0", note = "Use `empty` instead.")] |
| #[inline] |
| pub const fn none() -> Self { |
| Self::empty() |
| } |
| #[doc = r" Returns a `Features` object with all of the members set."] |
| #[cfg(test)] |
| pub(crate) const fn all() -> Features { |
| Features { |
| acceleration_structure: true, |
| acceleration_structure_capture_replay: true, |
| acceleration_structure_host_commands: true, |
| acceleration_structure_indirect_build: true, |
| advanced_blend_coherent_operations: true, |
| alpha_to_one: true, |
| amigo_profiling: true, |
| attachment_feedback_loop_layout: true, |
| attachment_fragment_shading_rate: true, |
| border_color_swizzle: true, |
| border_color_swizzle_from_image: true, |
| bresenham_lines: true, |
| buffer_device_address: true, |
| buffer_device_address_capture_replay: true, |
| buffer_device_address_multi_device: true, |
| color_write_enable: true, |
| compute_derivative_group_linear: true, |
| compute_derivative_group_quads: true, |
| compute_full_subgroups: true, |
| conditional_rendering: true, |
| constant_alpha_color_blend_factors: true, |
| cooperative_matrix: true, |
| cooperative_matrix_robust_buffer_access: true, |
| corner_sampled_image: true, |
| coverage_reduction_mode: true, |
| custom_border_color_without_format: true, |
| custom_border_colors: true, |
| decode_mode_shared_exponent: true, |
| dedicated_allocation_image_aliasing: true, |
| depth_bias_clamp: true, |
| depth_bounds: true, |
| depth_clamp: true, |
| depth_clamp_zero_one: true, |
| depth_clip_control: true, |
| depth_clip_enable: true, |
| descriptor_binding_acceleration_structure_update_after_bind: true, |
| descriptor_binding_inline_uniform_block_update_after_bind: true, |
| descriptor_binding_partially_bound: true, |
| descriptor_binding_sampled_image_update_after_bind: true, |
| descriptor_binding_storage_buffer_update_after_bind: true, |
| descriptor_binding_storage_image_update_after_bind: true, |
| descriptor_binding_storage_texel_buffer_update_after_bind: true, |
| descriptor_binding_uniform_buffer_update_after_bind: true, |
| descriptor_binding_uniform_texel_buffer_update_after_bind: true, |
| descriptor_binding_update_unused_while_pending: true, |
| descriptor_binding_variable_descriptor_count: true, |
| descriptor_buffer: true, |
| descriptor_buffer_capture_replay: true, |
| descriptor_buffer_image_layout_ignored: true, |
| descriptor_buffer_push_descriptors: true, |
| descriptor_indexing: true, |
| descriptor_set_host_mapping: true, |
| device_coherent_memory: true, |
| device_fault: true, |
| device_fault_vendor_binary: true, |
| device_generated_commands: true, |
| device_memory_report: true, |
| diagnostics_config: true, |
| draw_indirect_count: true, |
| draw_indirect_first_instance: true, |
| dual_src_blend: true, |
| dynamic_rendering: true, |
| events: true, |
| exclusive_scissor: true, |
| extended_dynamic_state: true, |
| extended_dynamic_state2: true, |
| extended_dynamic_state2_logic_op: true, |
| extended_dynamic_state2_patch_control_points: true, |
| extended_dynamic_state3_alpha_to_coverage_enable: true, |
| extended_dynamic_state3_alpha_to_one_enable: true, |
| extended_dynamic_state3_color_blend_advanced: true, |
| extended_dynamic_state3_color_blend_enable: true, |
| extended_dynamic_state3_color_blend_equation: true, |
| extended_dynamic_state3_color_write_mask: true, |
| extended_dynamic_state3_conservative_rasterization_mode: true, |
| extended_dynamic_state3_coverage_modulation_mode: true, |
| extended_dynamic_state3_coverage_modulation_table: true, |
| extended_dynamic_state3_coverage_modulation_table_enable: true, |
| extended_dynamic_state3_coverage_reduction_mode: true, |
| extended_dynamic_state3_coverage_to_color_enable: true, |
| extended_dynamic_state3_coverage_to_color_location: true, |
| extended_dynamic_state3_depth_clamp_enable: true, |
| extended_dynamic_state3_depth_clip_enable: true, |
| extended_dynamic_state3_depth_clip_negative_one_to_one: true, |
| extended_dynamic_state3_extra_primitive_overestimation_size: true, |
| extended_dynamic_state3_line_rasterization_mode: true, |
| extended_dynamic_state3_line_stipple_enable: true, |
| extended_dynamic_state3_logic_op_enable: true, |
| extended_dynamic_state3_polygon_mode: true, |
| extended_dynamic_state3_provoking_vertex_mode: true, |
| extended_dynamic_state3_rasterization_samples: true, |
| extended_dynamic_state3_rasterization_stream: true, |
| extended_dynamic_state3_representative_fragment_test_enable: true, |
| extended_dynamic_state3_sample_locations_enable: true, |
| extended_dynamic_state3_sample_mask: true, |
| extended_dynamic_state3_shading_rate_image_enable: true, |
| extended_dynamic_state3_tessellation_domain_origin: true, |
| extended_dynamic_state3_viewport_swizzle: true, |
| extended_dynamic_state3_viewport_w_scaling_enable: true, |
| external_memory_rdma: true, |
| fill_mode_non_solid: true, |
| format_a4b4g4r4: true, |
| format_a4r4g4b4: true, |
| format_rgba10x6_without_y_cb_cr_sampler: true, |
| fragment_density_map: true, |
| fragment_density_map_deferred: true, |
| fragment_density_map_dynamic: true, |
| fragment_density_map_non_subsampled_images: true, |
| fragment_density_map_offset: true, |
| fragment_shader_barycentric: true, |
| fragment_shader_pixel_interlock: true, |
| fragment_shader_sample_interlock: true, |
| fragment_shader_shading_rate_interlock: true, |
| fragment_shading_rate_enums: true, |
| fragment_stores_and_atomics: true, |
| full_draw_index_uint32: true, |
| geometry_shader: true, |
| geometry_streams: true, |
| global_priority_query: true, |
| graphics_pipeline_library: true, |
| host_query_reset: true, |
| image2_d_view_of3_d: true, |
| image_compression_control: true, |
| image_compression_control_swapchain: true, |
| image_cube_array: true, |
| image_footprint: true, |
| image_view2_d_on3_d_image: true, |
| image_view_format_reinterpretation: true, |
| image_view_format_swizzle: true, |
| imageless_framebuffer: true, |
| independent_blend: true, |
| index_type_uint8: true, |
| indirect_copy: true, |
| inherited_conditional_rendering: true, |
| inherited_queries: true, |
| inherited_viewport_scissor2_d: true, |
| inline_uniform_block: true, |
| invocation_mask: true, |
| large_points: true, |
| legacy_dithering: true, |
| linear_color_attachment: true, |
| logic_op: true, |
| maintenance4: true, |
| memory_decompression: true, |
| memory_priority: true, |
| mesh_shader: true, |
| mesh_shader_queries: true, |
| micromap: true, |
| micromap_capture_replay: true, |
| micromap_host_commands: true, |
| min_lod: true, |
| multi_draw: true, |
| multi_draw_indirect: true, |
| multi_viewport: true, |
| multisample_array_image: true, |
| multisampled_render_to_single_sampled: true, |
| multiview: true, |
| multiview_geometry_shader: true, |
| multiview_mesh_shader: true, |
| multiview_per_view_viewports: true, |
| multiview_tessellation_shader: true, |
| mutable_comparison_samplers: true, |
| mutable_descriptor_type: true, |
| no_invocation_fragment_shading_rates: true, |
| non_seamless_cube_map: true, |
| null_descriptor: true, |
| occlusion_query_precise: true, |
| optical_flow: true, |
| pageable_device_local_memory: true, |
| performance_counter_multiple_query_pools: true, |
| performance_counter_query_pools: true, |
| pipeline_creation_cache_control: true, |
| pipeline_executable_info: true, |
| pipeline_fragment_shading_rate: true, |
| pipeline_properties_identifier: true, |
| pipeline_protected_access: true, |
| pipeline_robustness: true, |
| pipeline_statistics_query: true, |
| point_polygons: true, |
| present_barrier: true, |
| present_id: true, |
| present_wait: true, |
| primitive_fragment_shading_rate: true, |
| primitive_fragment_shading_rate_mesh_shader: true, |
| primitive_topology_list_restart: true, |
| primitive_topology_patch_list_restart: true, |
| primitives_generated_query: true, |
| primitives_generated_query_with_non_zero_streams: true, |
| primitives_generated_query_with_rasterizer_discard: true, |
| private_data: true, |
| protected_memory: true, |
| provoking_vertex_last: true, |
| rasterization_order_color_attachment_access: true, |
| rasterization_order_depth_attachment_access: true, |
| rasterization_order_stencil_attachment_access: true, |
| ray_query: true, |
| ray_tracing_invocation_reorder: true, |
| ray_tracing_maintenance1: true, |
| ray_tracing_motion_blur: true, |
| ray_tracing_motion_blur_pipeline_trace_rays_indirect: true, |
| ray_tracing_pipeline: true, |
| ray_tracing_pipeline_shader_group_handle_capture_replay: true, |
| ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: true, |
| ray_tracing_pipeline_trace_rays_indirect: true, |
| ray_tracing_pipeline_trace_rays_indirect2: true, |
| ray_traversal_primitive_culling: true, |
| rectangular_lines: true, |
| report_address_binding: true, |
| representative_fragment_test: true, |
| robust_buffer_access: true, |
| robust_buffer_access2: true, |
| robust_image_access: true, |
| robust_image_access2: true, |
| runtime_descriptor_array: true, |
| sample_rate_shading: true, |
| sampler2_d_view_of3_d: true, |
| sampler_anisotropy: true, |
| sampler_filter_minmax: true, |
| sampler_mip_lod_bias: true, |
| sampler_mirror_clamp_to_edge: true, |
| sampler_ycbcr_conversion: true, |
| scalar_block_layout: true, |
| separate_depth_stencil_layouts: true, |
| separate_stencil_mask_ref: true, |
| shader_buffer_float16_atomic_add: true, |
| shader_buffer_float16_atomic_min_max: true, |
| shader_buffer_float16_atomics: true, |
| shader_buffer_float32_atomic_add: true, |
| shader_buffer_float32_atomic_min_max: true, |
| shader_buffer_float32_atomics: true, |
| shader_buffer_float64_atomic_add: true, |
| shader_buffer_float64_atomic_min_max: true, |
| shader_buffer_float64_atomics: true, |
| shader_buffer_int64_atomics: true, |
| shader_clip_distance: true, |
| shader_core_builtins: true, |
| shader_cull_distance: true, |
| shader_demote_to_helper_invocation: true, |
| shader_device_clock: true, |
| shader_draw_parameters: true, |
| shader_early_and_late_fragment_tests: true, |
| shader_float16: true, |
| shader_float64: true, |
| shader_image_float32_atomic_add: true, |
| shader_image_float32_atomic_min_max: true, |
| shader_image_float32_atomics: true, |
| shader_image_gather_extended: true, |
| shader_image_int64_atomics: true, |
| shader_input_attachment_array_dynamic_indexing: true, |
| shader_input_attachment_array_non_uniform_indexing: true, |
| shader_int16: true, |
| shader_int64: true, |
| shader_int8: true, |
| shader_integer_dot_product: true, |
| shader_integer_functions2: true, |
| shader_module_identifier: true, |
| shader_output_layer: true, |
| shader_output_viewport_index: true, |
| shader_resource_min_lod: true, |
| shader_resource_residency: true, |
| shader_sample_rate_interpolation_functions: true, |
| shader_sampled_image_array_dynamic_indexing: true, |
| shader_sampled_image_array_non_uniform_indexing: true, |
| shader_shared_float16_atomic_add: true, |
| shader_shared_float16_atomic_min_max: true, |
| shader_shared_float16_atomics: true, |
| shader_shared_float32_atomic_add: true, |
| shader_shared_float32_atomic_min_max: true, |
| shader_shared_float32_atomics: true, |
| shader_shared_float64_atomic_add: true, |
| shader_shared_float64_atomic_min_max: true, |
| shader_shared_float64_atomics: true, |
| shader_shared_int64_atomics: true, |
| shader_sm_builtins: true, |
| shader_storage_buffer_array_dynamic_indexing: true, |
| shader_storage_buffer_array_non_uniform_indexing: true, |
| shader_storage_image_array_dynamic_indexing: true, |
| shader_storage_image_array_non_uniform_indexing: true, |
| shader_storage_image_extended_formats: true, |
| shader_storage_image_multisample: true, |
| shader_storage_image_read_without_format: true, |
| shader_storage_image_write_without_format: true, |
| shader_storage_texel_buffer_array_dynamic_indexing: true, |
| shader_storage_texel_buffer_array_non_uniform_indexing: true, |
| shader_subgroup_clock: true, |
| shader_subgroup_extended_types: true, |
| shader_subgroup_uniform_control_flow: true, |
| shader_terminate_invocation: true, |
| shader_tessellation_and_geometry_point_size: true, |
| shader_uniform_buffer_array_dynamic_indexing: true, |
| shader_uniform_buffer_array_non_uniform_indexing: true, |
| shader_uniform_texel_buffer_array_dynamic_indexing: true, |
| shader_uniform_texel_buffer_array_non_uniform_indexing: true, |
| shader_zero_initialize_workgroup_memory: true, |
| shading_rate_coarse_sample_order: true, |
| shading_rate_image: true, |
| smooth_lines: true, |
| sparse_binding: true, |
| sparse_image_float32_atomic_add: true, |
| sparse_image_float32_atomic_min_max: true, |
| sparse_image_float32_atomics: true, |
| sparse_image_int64_atomics: true, |
| sparse_residency16_samples: true, |
| sparse_residency2_samples: true, |
| sparse_residency4_samples: true, |
| sparse_residency8_samples: true, |
| sparse_residency_aliased: true, |
| sparse_residency_buffer: true, |
| sparse_residency_image2_d: true, |
| sparse_residency_image3_d: true, |
| stippled_bresenham_lines: true, |
| stippled_rectangular_lines: true, |
| stippled_smooth_lines: true, |
| storage_buffer16_bit_access: true, |
| storage_buffer8_bit_access: true, |
| storage_input_output16: true, |
| storage_push_constant16: true, |
| storage_push_constant8: true, |
| subgroup_broadcast_dynamic_id: true, |
| subgroup_size_control: true, |
| subpass_merge_feedback: true, |
| subpass_shading: true, |
| supersample_fragment_shading_rates: true, |
| swapchain_maintenance1: true, |
| synchronization2: true, |
| task_shader: true, |
| tessellation_isolines: true, |
| tessellation_point_mode: true, |
| tessellation_shader: true, |
| texel_buffer_alignment: true, |
| texture_block_match: true, |
| texture_box_filter: true, |
| texture_compression_astc_hdr: true, |
| texture_compression_astc_ldr: true, |
| texture_compression_bc: true, |
| texture_compression_etc2: true, |
| texture_sample_weighted: true, |
| tile_properties: true, |
| timeline_semaphore: true, |
| transform_feedback: true, |
| transform_feedback_preserves_provoking_vertex: true, |
| triangle_fans: true, |
| uniform_and_storage_buffer16_bit_access: true, |
| uniform_and_storage_buffer8_bit_access: true, |
| uniform_buffer_standard_layout: true, |
| variable_multisample_rate: true, |
| variable_pointers: true, |
| variable_pointers_storage_buffer: true, |
| vertex_attribute_access_beyond_stride: true, |
| vertex_attribute_instance_rate_divisor: true, |
| vertex_attribute_instance_rate_zero_divisor: true, |
| vertex_input_dynamic_state: true, |
| vertex_pipeline_stores_and_atomics: true, |
| vulkan_memory_model: true, |
| vulkan_memory_model_availability_visibility_chains: true, |
| vulkan_memory_model_device_scope: true, |
| wide_lines: true, |
| workgroup_memory_explicit_layout: true, |
| workgroup_memory_explicit_layout16_bit_access: true, |
| workgroup_memory_explicit_layout8_bit_access: true, |
| workgroup_memory_explicit_layout_scalar_block_layout: true, |
| ycbcr2plane444_formats: true, |
| ycbcr_image_arrays: true, |
| _ne: crate::NonExhaustive(()), |
| } |
| } |
| #[doc = r" Returns whether any members are set in both `self` and `other`."] |
| #[inline] |
| pub const fn intersects(&self, other: &Self) -> bool { |
| (self.acceleration_structure && other.acceleration_structure) |
| || (self.acceleration_structure_capture_replay |
| && other.acceleration_structure_capture_replay) |
| || (self.acceleration_structure_host_commands |
| && other.acceleration_structure_host_commands) |
| || (self.acceleration_structure_indirect_build |
| && other.acceleration_structure_indirect_build) |
| || (self.advanced_blend_coherent_operations && other.advanced_blend_coherent_operations) |
| || (self.alpha_to_one && other.alpha_to_one) |
| || (self.amigo_profiling && other.amigo_profiling) |
| || (self.attachment_feedback_loop_layout && other.attachment_feedback_loop_layout) |
| || (self.attachment_fragment_shading_rate && other.attachment_fragment_shading_rate) |
| || (self.border_color_swizzle && other.border_color_swizzle) |
| || (self.border_color_swizzle_from_image && other.border_color_swizzle_from_image) |
| || (self.bresenham_lines && other.bresenham_lines) |
| || (self.buffer_device_address && other.buffer_device_address) |
| || (self.buffer_device_address_capture_replay |
| && other.buffer_device_address_capture_replay) |
| || (self.buffer_device_address_multi_device && other.buffer_device_address_multi_device) |
| || (self.color_write_enable && other.color_write_enable) |
| || (self.compute_derivative_group_linear && other.compute_derivative_group_linear) |
| || (self.compute_derivative_group_quads && other.compute_derivative_group_quads) |
| || (self.compute_full_subgroups && other.compute_full_subgroups) |
| || (self.conditional_rendering && other.conditional_rendering) |
| || (self.constant_alpha_color_blend_factors && other.constant_alpha_color_blend_factors) |
| || (self.cooperative_matrix && other.cooperative_matrix) |
| || (self.cooperative_matrix_robust_buffer_access |
| && other.cooperative_matrix_robust_buffer_access) |
| || (self.corner_sampled_image && other.corner_sampled_image) |
| || (self.coverage_reduction_mode && other.coverage_reduction_mode) |
| || (self.custom_border_color_without_format && other.custom_border_color_without_format) |
| || (self.custom_border_colors && other.custom_border_colors) |
| || (self.decode_mode_shared_exponent && other.decode_mode_shared_exponent) |
| || (self.dedicated_allocation_image_aliasing |
| && other.dedicated_allocation_image_aliasing) |
| || (self.depth_bias_clamp && other.depth_bias_clamp) |
| || (self.depth_bounds && other.depth_bounds) |
| || (self.depth_clamp && other.depth_clamp) |
| || (self.depth_clamp_zero_one && other.depth_clamp_zero_one) |
| || (self.depth_clip_control && other.depth_clip_control) |
| || (self.depth_clip_enable && other.depth_clip_enable) |
| || (self.descriptor_binding_acceleration_structure_update_after_bind |
| && other.descriptor_binding_acceleration_structure_update_after_bind) |
| || (self.descriptor_binding_inline_uniform_block_update_after_bind |
| && other.descriptor_binding_inline_uniform_block_update_after_bind) |
| || (self.descriptor_binding_partially_bound && other.descriptor_binding_partially_bound) |
| || (self.descriptor_binding_sampled_image_update_after_bind |
| && other.descriptor_binding_sampled_image_update_after_bind) |
| || (self.descriptor_binding_storage_buffer_update_after_bind |
| && other.descriptor_binding_storage_buffer_update_after_bind) |
| || (self.descriptor_binding_storage_image_update_after_bind |
| && other.descriptor_binding_storage_image_update_after_bind) |
| || (self.descriptor_binding_storage_texel_buffer_update_after_bind |
| && other.descriptor_binding_storage_texel_buffer_update_after_bind) |
| || (self.descriptor_binding_uniform_buffer_update_after_bind |
| && other.descriptor_binding_uniform_buffer_update_after_bind) |
| || (self.descriptor_binding_uniform_texel_buffer_update_after_bind |
| && other.descriptor_binding_uniform_texel_buffer_update_after_bind) |
| || (self.descriptor_binding_update_unused_while_pending |
| && other.descriptor_binding_update_unused_while_pending) |
| || (self.descriptor_binding_variable_descriptor_count |
| && other.descriptor_binding_variable_descriptor_count) |
| || (self.descriptor_buffer && other.descriptor_buffer) |
| || (self.descriptor_buffer_capture_replay && other.descriptor_buffer_capture_replay) |
| || (self.descriptor_buffer_image_layout_ignored |
| && other.descriptor_buffer_image_layout_ignored) |
| || (self.descriptor_buffer_push_descriptors && other.descriptor_buffer_push_descriptors) |
| || (self.descriptor_indexing && other.descriptor_indexing) |
| || (self.descriptor_set_host_mapping && other.descriptor_set_host_mapping) |
| || (self.device_coherent_memory && other.device_coherent_memory) |
| || (self.device_fault && other.device_fault) |
| || (self.device_fault_vendor_binary && other.device_fault_vendor_binary) |
| || (self.device_generated_commands && other.device_generated_commands) |
| || (self.device_memory_report && other.device_memory_report) |
| || (self.diagnostics_config && other.diagnostics_config) |
| || (self.draw_indirect_count && other.draw_indirect_count) |
| || (self.draw_indirect_first_instance && other.draw_indirect_first_instance) |
| || (self.dual_src_blend && other.dual_src_blend) |
| || (self.dynamic_rendering && other.dynamic_rendering) |
| || (self.events && other.events) |
| || (self.exclusive_scissor && other.exclusive_scissor) |
| || (self.extended_dynamic_state && other.extended_dynamic_state) |
| || (self.extended_dynamic_state2 && other.extended_dynamic_state2) |
| || (self.extended_dynamic_state2_logic_op && other.extended_dynamic_state2_logic_op) |
| || (self.extended_dynamic_state2_patch_control_points |
| && other.extended_dynamic_state2_patch_control_points) |
| || (self.extended_dynamic_state3_alpha_to_coverage_enable |
| && other.extended_dynamic_state3_alpha_to_coverage_enable) |
| || (self.extended_dynamic_state3_alpha_to_one_enable |
| && other.extended_dynamic_state3_alpha_to_one_enable) |
| || (self.extended_dynamic_state3_color_blend_advanced |
| && other.extended_dynamic_state3_color_blend_advanced) |
| || (self.extended_dynamic_state3_color_blend_enable |
| && other.extended_dynamic_state3_color_blend_enable) |
| || (self.extended_dynamic_state3_color_blend_equation |
| && other.extended_dynamic_state3_color_blend_equation) |
| || (self.extended_dynamic_state3_color_write_mask |
| && other.extended_dynamic_state3_color_write_mask) |
| || (self.extended_dynamic_state3_conservative_rasterization_mode |
| && other.extended_dynamic_state3_conservative_rasterization_mode) |
| || (self.extended_dynamic_state3_coverage_modulation_mode |
| && other.extended_dynamic_state3_coverage_modulation_mode) |
| || (self.extended_dynamic_state3_coverage_modulation_table |
| && other.extended_dynamic_state3_coverage_modulation_table) |
| || (self.extended_dynamic_state3_coverage_modulation_table_enable |
| && other.extended_dynamic_state3_coverage_modulation_table_enable) |
| || (self.extended_dynamic_state3_coverage_reduction_mode |
| && other.extended_dynamic_state3_coverage_reduction_mode) |
| || (self.extended_dynamic_state3_coverage_to_color_enable |
| && other.extended_dynamic_state3_coverage_to_color_enable) |
| || (self.extended_dynamic_state3_coverage_to_color_location |
| && other.extended_dynamic_state3_coverage_to_color_location) |
| || (self.extended_dynamic_state3_depth_clamp_enable |
| && other.extended_dynamic_state3_depth_clamp_enable) |
| || (self.extended_dynamic_state3_depth_clip_enable |
| && other.extended_dynamic_state3_depth_clip_enable) |
| || (self.extended_dynamic_state3_depth_clip_negative_one_to_one |
| && other.extended_dynamic_state3_depth_clip_negative_one_to_one) |
| || (self.extended_dynamic_state3_extra_primitive_overestimation_size |
| && other.extended_dynamic_state3_extra_primitive_overestimation_size) |
| || (self.extended_dynamic_state3_line_rasterization_mode |
| && other.extended_dynamic_state3_line_rasterization_mode) |
| || (self.extended_dynamic_state3_line_stipple_enable |
| && other.extended_dynamic_state3_line_stipple_enable) |
| || (self.extended_dynamic_state3_logic_op_enable |
| && other.extended_dynamic_state3_logic_op_enable) |
| || (self.extended_dynamic_state3_polygon_mode |
| && other.extended_dynamic_state3_polygon_mode) |
| || (self.extended_dynamic_state3_provoking_vertex_mode |
| && other.extended_dynamic_state3_provoking_vertex_mode) |
| || (self.extended_dynamic_state3_rasterization_samples |
| && other.extended_dynamic_state3_rasterization_samples) |
| || (self.extended_dynamic_state3_rasterization_stream |
| && other.extended_dynamic_state3_rasterization_stream) |
| || (self.extended_dynamic_state3_representative_fragment_test_enable |
| && other.extended_dynamic_state3_representative_fragment_test_enable) |
| || (self.extended_dynamic_state3_sample_locations_enable |
| && other.extended_dynamic_state3_sample_locations_enable) |
| || (self.extended_dynamic_state3_sample_mask |
| && other.extended_dynamic_state3_sample_mask) |
| || (self.extended_dynamic_state3_shading_rate_image_enable |
| && other.extended_dynamic_state3_shading_rate_image_enable) |
| || (self.extended_dynamic_state3_tessellation_domain_origin |
| && other.extended_dynamic_state3_tessellation_domain_origin) |
| || (self.extended_dynamic_state3_viewport_swizzle |
| && other.extended_dynamic_state3_viewport_swizzle) |
| || (self.extended_dynamic_state3_viewport_w_scaling_enable |
| && other.extended_dynamic_state3_viewport_w_scaling_enable) |
| || (self.external_memory_rdma && other.external_memory_rdma) |
| || (self.fill_mode_non_solid && other.fill_mode_non_solid) |
| || (self.format_a4b4g4r4 && other.format_a4b4g4r4) |
| || (self.format_a4r4g4b4 && other.format_a4r4g4b4) |
| || (self.format_rgba10x6_without_y_cb_cr_sampler |
| && other.format_rgba10x6_without_y_cb_cr_sampler) |
| || (self.fragment_density_map && other.fragment_density_map) |
| || (self.fragment_density_map_deferred && other.fragment_density_map_deferred) |
| || (self.fragment_density_map_dynamic && other.fragment_density_map_dynamic) |
| || (self.fragment_density_map_non_subsampled_images |
| && other.fragment_density_map_non_subsampled_images) |
| || (self.fragment_density_map_offset && other.fragment_density_map_offset) |
| || (self.fragment_shader_barycentric && other.fragment_shader_barycentric) |
| || (self.fragment_shader_pixel_interlock && other.fragment_shader_pixel_interlock) |
| || (self.fragment_shader_sample_interlock && other.fragment_shader_sample_interlock) |
| || (self.fragment_shader_shading_rate_interlock |
| && other.fragment_shader_shading_rate_interlock) |
| || (self.fragment_shading_rate_enums && other.fragment_shading_rate_enums) |
| || (self.fragment_stores_and_atomics && other.fragment_stores_and_atomics) |
| || (self.full_draw_index_uint32 && other.full_draw_index_uint32) |
| || (self.geometry_shader && other.geometry_shader) |
| || (self.geometry_streams && other.geometry_streams) |
| || (self.global_priority_query && other.global_priority_query) |
| || (self.graphics_pipeline_library && other.graphics_pipeline_library) |
| || (self.host_query_reset && other.host_query_reset) |
| || (self.image2_d_view_of3_d && other.image2_d_view_of3_d) |
| || (self.image_compression_control && other.image_compression_control) |
| || (self.image_compression_control_swapchain |
| && other.image_compression_control_swapchain) |
| || (self.image_cube_array && other.image_cube_array) |
| || (self.image_footprint && other.image_footprint) |
| || (self.image_view2_d_on3_d_image && other.image_view2_d_on3_d_image) |
| || (self.image_view_format_reinterpretation && other.image_view_format_reinterpretation) |
| || (self.image_view_format_swizzle && other.image_view_format_swizzle) |
| || (self.imageless_framebuffer && other.imageless_framebuffer) |
| || (self.independent_blend && other.independent_blend) |
| || (self.index_type_uint8 && other.index_type_uint8) |
| || (self.indirect_copy && other.indirect_copy) |
| || (self.inherited_conditional_rendering && other.inherited_conditional_rendering) |
| || (self.inherited_queries && other.inherited_queries) |
| || (self.inherited_viewport_scissor2_d && other.inherited_viewport_scissor2_d) |
| || (self.inline_uniform_block && other.inline_uniform_block) |
| || (self.invocation_mask && other.invocation_mask) |
| || (self.large_points && other.large_points) |
| || (self.legacy_dithering && other.legacy_dithering) |
| || (self.linear_color_attachment && other.linear_color_attachment) |
| || (self.logic_op && other.logic_op) |
| || (self.maintenance4 && other.maintenance4) |
| || (self.memory_decompression && other.memory_decompression) |
| || (self.memory_priority && other.memory_priority) |
| || (self.mesh_shader && other.mesh_shader) |
| || (self.mesh_shader_queries && other.mesh_shader_queries) |
| || (self.micromap && other.micromap) |
| || (self.micromap_capture_replay && other.micromap_capture_replay) |
| || (self.micromap_host_commands && other.micromap_host_commands) |
| || (self.min_lod && other.min_lod) |
| || (self.multi_draw && other.multi_draw) |
| || (self.multi_draw_indirect && other.multi_draw_indirect) |
| || (self.multi_viewport && other.multi_viewport) |
| || (self.multisample_array_image && other.multisample_array_image) |
| || (self.multisampled_render_to_single_sampled |
| && other.multisampled_render_to_single_sampled) |
| || (self.multiview && other.multiview) |
| || (self.multiview_geometry_shader && other.multiview_geometry_shader) |
| || (self.multiview_mesh_shader && other.multiview_mesh_shader) |
| || (self.multiview_per_view_viewports && other.multiview_per_view_viewports) |
| || (self.multiview_tessellation_shader && other.multiview_tessellation_shader) |
| || (self.mutable_comparison_samplers && other.mutable_comparison_samplers) |
| || (self.mutable_descriptor_type && other.mutable_descriptor_type) |
| || (self.no_invocation_fragment_shading_rates |
| && other.no_invocation_fragment_shading_rates) |
| || (self.non_seamless_cube_map && other.non_seamless_cube_map) |
| || (self.null_descriptor && other.null_descriptor) |
| || (self.occlusion_query_precise && other.occlusion_query_precise) |
| || (self.optical_flow && other.optical_flow) |
| || (self.pageable_device_local_memory && other.pageable_device_local_memory) |
| || (self.performance_counter_multiple_query_pools |
| && other.performance_counter_multiple_query_pools) |
| || (self.performance_counter_query_pools && other.performance_counter_query_pools) |
| || (self.pipeline_creation_cache_control && other.pipeline_creation_cache_control) |
| || (self.pipeline_executable_info && other.pipeline_executable_info) |
| || (self.pipeline_fragment_shading_rate && other.pipeline_fragment_shading_rate) |
| || (self.pipeline_properties_identifier && other.pipeline_properties_identifier) |
| || (self.pipeline_protected_access && other.pipeline_protected_access) |
| || (self.pipeline_robustness && other.pipeline_robustness) |
| || (self.pipeline_statistics_query && other.pipeline_statistics_query) |
| || (self.point_polygons && other.point_polygons) |
| || (self.present_barrier && other.present_barrier) |
| || (self.present_id && other.present_id) |
| || (self.present_wait && other.present_wait) |
| || (self.primitive_fragment_shading_rate && other.primitive_fragment_shading_rate) |
| || (self.primitive_fragment_shading_rate_mesh_shader |
| && other.primitive_fragment_shading_rate_mesh_shader) |
| || (self.primitive_topology_list_restart && other.primitive_topology_list_restart) |
| || (self.primitive_topology_patch_list_restart |
| && other.primitive_topology_patch_list_restart) |
| || (self.primitives_generated_query && other.primitives_generated_query) |
| || (self.primitives_generated_query_with_non_zero_streams |
| && other.primitives_generated_query_with_non_zero_streams) |
| || (self.primitives_generated_query_with_rasterizer_discard |
| && other.primitives_generated_query_with_rasterizer_discard) |
| || (self.private_data && other.private_data) |
| || (self.protected_memory && other.protected_memory) |
| || (self.provoking_vertex_last && other.provoking_vertex_last) |
| || (self.rasterization_order_color_attachment_access |
| && other.rasterization_order_color_attachment_access) |
| || (self.rasterization_order_depth_attachment_access |
| && other.rasterization_order_depth_attachment_access) |
| || (self.rasterization_order_stencil_attachment_access |
| && other.rasterization_order_stencil_attachment_access) |
| || (self.ray_query && other.ray_query) |
| || (self.ray_tracing_invocation_reorder && other.ray_tracing_invocation_reorder) |
| || (self.ray_tracing_maintenance1 && other.ray_tracing_maintenance1) |
| || (self.ray_tracing_motion_blur && other.ray_tracing_motion_blur) |
| || (self.ray_tracing_motion_blur_pipeline_trace_rays_indirect |
| && other.ray_tracing_motion_blur_pipeline_trace_rays_indirect) |
| || (self.ray_tracing_pipeline && other.ray_tracing_pipeline) |
| || (self.ray_tracing_pipeline_shader_group_handle_capture_replay |
| && other.ray_tracing_pipeline_shader_group_handle_capture_replay) |
| || (self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed |
| && other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed) |
| || (self.ray_tracing_pipeline_trace_rays_indirect |
| && other.ray_tracing_pipeline_trace_rays_indirect) |
| || (self.ray_tracing_pipeline_trace_rays_indirect2 |
| && other.ray_tracing_pipeline_trace_rays_indirect2) |
| || (self.ray_traversal_primitive_culling && other.ray_traversal_primitive_culling) |
| || (self.rectangular_lines && other.rectangular_lines) |
| || (self.report_address_binding && other.report_address_binding) |
| || (self.representative_fragment_test && other.representative_fragment_test) |
| || (self.robust_buffer_access && other.robust_buffer_access) |
| || (self.robust_buffer_access2 && other.robust_buffer_access2) |
| || (self.robust_image_access && other.robust_image_access) |
| || (self.robust_image_access2 && other.robust_image_access2) |
| || (self.runtime_descriptor_array && other.runtime_descriptor_array) |
| || (self.sample_rate_shading && other.sample_rate_shading) |
| || (self.sampler2_d_view_of3_d && other.sampler2_d_view_of3_d) |
| || (self.sampler_anisotropy && other.sampler_anisotropy) |
| || (self.sampler_filter_minmax && other.sampler_filter_minmax) |
| || (self.sampler_mip_lod_bias && other.sampler_mip_lod_bias) |
| || (self.sampler_mirror_clamp_to_edge && other.sampler_mirror_clamp_to_edge) |
| || (self.sampler_ycbcr_conversion && other.sampler_ycbcr_conversion) |
| || (self.scalar_block_layout && other.scalar_block_layout) |
| || (self.separate_depth_stencil_layouts && other.separate_depth_stencil_layouts) |
| || (self.separate_stencil_mask_ref && other.separate_stencil_mask_ref) |
| || (self.shader_buffer_float16_atomic_add && other.shader_buffer_float16_atomic_add) |
| || (self.shader_buffer_float16_atomic_min_max |
| && other.shader_buffer_float16_atomic_min_max) |
| || (self.shader_buffer_float16_atomics && other.shader_buffer_float16_atomics) |
| || (self.shader_buffer_float32_atomic_add && other.shader_buffer_float32_atomic_add) |
| || (self.shader_buffer_float32_atomic_min_max |
| && other.shader_buffer_float32_atomic_min_max) |
| || (self.shader_buffer_float32_atomics && other.shader_buffer_float32_atomics) |
| || (self.shader_buffer_float64_atomic_add && other.shader_buffer_float64_atomic_add) |
| || (self.shader_buffer_float64_atomic_min_max |
| && other.shader_buffer_float64_atomic_min_max) |
| || (self.shader_buffer_float64_atomics && other.shader_buffer_float64_atomics) |
| || (self.shader_buffer_int64_atomics && other.shader_buffer_int64_atomics) |
| || (self.shader_clip_distance && other.shader_clip_distance) |
| || (self.shader_core_builtins && other.shader_core_builtins) |
| || (self.shader_cull_distance && other.shader_cull_distance) |
| || (self.shader_demote_to_helper_invocation && other.shader_demote_to_helper_invocation) |
| || (self.shader_device_clock && other.shader_device_clock) |
| || (self.shader_draw_parameters && other.shader_draw_parameters) |
| || (self.shader_early_and_late_fragment_tests |
| && other.shader_early_and_late_fragment_tests) |
| || (self.shader_float16 && other.shader_float16) |
| || (self.shader_float64 && other.shader_float64) |
| || (self.shader_image_float32_atomic_add && other.shader_image_float32_atomic_add) |
| || (self.shader_image_float32_atomic_min_max |
| && other.shader_image_float32_atomic_min_max) |
| || (self.shader_image_float32_atomics && other.shader_image_float32_atomics) |
| || (self.shader_image_gather_extended && other.shader_image_gather_extended) |
| || (self.shader_image_int64_atomics && other.shader_image_int64_atomics) |
| || (self.shader_input_attachment_array_dynamic_indexing |
| && other.shader_input_attachment_array_dynamic_indexing) |
| || (self.shader_input_attachment_array_non_uniform_indexing |
| && other.shader_input_attachment_array_non_uniform_indexing) |
| || (self.shader_int16 && other.shader_int16) |
| || (self.shader_int64 && other.shader_int64) |
| || (self.shader_int8 && other.shader_int8) |
| || (self.shader_integer_dot_product && other.shader_integer_dot_product) |
| || (self.shader_integer_functions2 && other.shader_integer_functions2) |
| || (self.shader_module_identifier && other.shader_module_identifier) |
| || (self.shader_output_layer && other.shader_output_layer) |
| || (self.shader_output_viewport_index && other.shader_output_viewport_index) |
| || (self.shader_resource_min_lod && other.shader_resource_min_lod) |
| || (self.shader_resource_residency && other.shader_resource_residency) |
| || (self.shader_sample_rate_interpolation_functions |
| && other.shader_sample_rate_interpolation_functions) |
| || (self.shader_sampled_image_array_dynamic_indexing |
| && other.shader_sampled_image_array_dynamic_indexing) |
| || (self.shader_sampled_image_array_non_uniform_indexing |
| && other.shader_sampled_image_array_non_uniform_indexing) |
| || (self.shader_shared_float16_atomic_add && other.shader_shared_float16_atomic_add) |
| || (self.shader_shared_float16_atomic_min_max |
| && other.shader_shared_float16_atomic_min_max) |
| || (self.shader_shared_float16_atomics && other.shader_shared_float16_atomics) |
| || (self.shader_shared_float32_atomic_add && other.shader_shared_float32_atomic_add) |
| || (self.shader_shared_float32_atomic_min_max |
| && other.shader_shared_float32_atomic_min_max) |
| || (self.shader_shared_float32_atomics && other.shader_shared_float32_atomics) |
| || (self.shader_shared_float64_atomic_add && other.shader_shared_float64_atomic_add) |
| || (self.shader_shared_float64_atomic_min_max |
| && other.shader_shared_float64_atomic_min_max) |
| || (self.shader_shared_float64_atomics && other.shader_shared_float64_atomics) |
| || (self.shader_shared_int64_atomics && other.shader_shared_int64_atomics) |
| || (self.shader_sm_builtins && other.shader_sm_builtins) |
| || (self.shader_storage_buffer_array_dynamic_indexing |
| && other.shader_storage_buffer_array_dynamic_indexing) |
| || (self.shader_storage_buffer_array_non_uniform_indexing |
| && other.shader_storage_buffer_array_non_uniform_indexing) |
| || (self.shader_storage_image_array_dynamic_indexing |
| && other.shader_storage_image_array_dynamic_indexing) |
| || (self.shader_storage_image_array_non_uniform_indexing |
| && other.shader_storage_image_array_non_uniform_indexing) |
| || (self.shader_storage_image_extended_formats |
| && other.shader_storage_image_extended_formats) |
| || (self.shader_storage_image_multisample && other.shader_storage_image_multisample) |
| || (self.shader_storage_image_read_without_format |
| && other.shader_storage_image_read_without_format) |
| || (self.shader_storage_image_write_without_format |
| && other.shader_storage_image_write_without_format) |
| || (self.shader_storage_texel_buffer_array_dynamic_indexing |
| && other.shader_storage_texel_buffer_array_dynamic_indexing) |
| || (self.shader_storage_texel_buffer_array_non_uniform_indexing |
| && other.shader_storage_texel_buffer_array_non_uniform_indexing) |
| || (self.shader_subgroup_clock && other.shader_subgroup_clock) |
| || (self.shader_subgroup_extended_types && other.shader_subgroup_extended_types) |
| || (self.shader_subgroup_uniform_control_flow |
| && other.shader_subgroup_uniform_control_flow) |
| || (self.shader_terminate_invocation && other.shader_terminate_invocation) |
| || (self.shader_tessellation_and_geometry_point_size |
| && other.shader_tessellation_and_geometry_point_size) |
| || (self.shader_uniform_buffer_array_dynamic_indexing |
| && other.shader_uniform_buffer_array_dynamic_indexing) |
| || (self.shader_uniform_buffer_array_non_uniform_indexing |
| && other.shader_uniform_buffer_array_non_uniform_indexing) |
| || (self.shader_uniform_texel_buffer_array_dynamic_indexing |
| && other.shader_uniform_texel_buffer_array_dynamic_indexing) |
| || (self.shader_uniform_texel_buffer_array_non_uniform_indexing |
| && other.shader_uniform_texel_buffer_array_non_uniform_indexing) |
| || (self.shader_zero_initialize_workgroup_memory |
| && other.shader_zero_initialize_workgroup_memory) |
| || (self.shading_rate_coarse_sample_order && other.shading_rate_coarse_sample_order) |
| || (self.shading_rate_image && other.shading_rate_image) |
| || (self.smooth_lines && other.smooth_lines) |
| || (self.sparse_binding && other.sparse_binding) |
| || (self.sparse_image_float32_atomic_add && other.sparse_image_float32_atomic_add) |
| || (self.sparse_image_float32_atomic_min_max |
| && other.sparse_image_float32_atomic_min_max) |
| || (self.sparse_image_float32_atomics && other.sparse_image_float32_atomics) |
| || (self.sparse_image_int64_atomics && other.sparse_image_int64_atomics) |
| || (self.sparse_residency16_samples && other.sparse_residency16_samples) |
| || (self.sparse_residency2_samples && other.sparse_residency2_samples) |
| || (self.sparse_residency4_samples && other.sparse_residency4_samples) |
| || (self.sparse_residency8_samples && other.sparse_residency8_samples) |
| || (self.sparse_residency_aliased && other.sparse_residency_aliased) |
| || (self.sparse_residency_buffer && other.sparse_residency_buffer) |
| || (self.sparse_residency_image2_d && other.sparse_residency_image2_d) |
| || (self.sparse_residency_image3_d && other.sparse_residency_image3_d) |
| || (self.stippled_bresenham_lines && other.stippled_bresenham_lines) |
| || (self.stippled_rectangular_lines && other.stippled_rectangular_lines) |
| || (self.stippled_smooth_lines && other.stippled_smooth_lines) |
| || (self.storage_buffer16_bit_access && other.storage_buffer16_bit_access) |
| || (self.storage_buffer8_bit_access && other.storage_buffer8_bit_access) |
| || (self.storage_input_output16 && other.storage_input_output16) |
| || (self.storage_push_constant16 && other.storage_push_constant16) |
| || (self.storage_push_constant8 && other.storage_push_constant8) |
| || (self.subgroup_broadcast_dynamic_id && other.subgroup_broadcast_dynamic_id) |
| || (self.subgroup_size_control && other.subgroup_size_control) |
| || (self.subpass_merge_feedback && other.subpass_merge_feedback) |
| || (self.subpass_shading && other.subpass_shading) |
| || (self.supersample_fragment_shading_rates && other.supersample_fragment_shading_rates) |
| || (self.swapchain_maintenance1 && other.swapchain_maintenance1) |
| || (self.synchronization2 && other.synchronization2) |
| || (self.task_shader && other.task_shader) |
| || (self.tessellation_isolines && other.tessellation_isolines) |
| || (self.tessellation_point_mode && other.tessellation_point_mode) |
| || (self.tessellation_shader && other.tessellation_shader) |
| || (self.texel_buffer_alignment && other.texel_buffer_alignment) |
| || (self.texture_block_match && other.texture_block_match) |
| || (self.texture_box_filter && other.texture_box_filter) |
| || (self.texture_compression_astc_hdr && other.texture_compression_astc_hdr) |
| || (self.texture_compression_astc_ldr && other.texture_compression_astc_ldr) |
| || (self.texture_compression_bc && other.texture_compression_bc) |
| || (self.texture_compression_etc2 && other.texture_compression_etc2) |
| || (self.texture_sample_weighted && other.texture_sample_weighted) |
| || (self.tile_properties && other.tile_properties) |
| || (self.timeline_semaphore && other.timeline_semaphore) |
| || (self.transform_feedback && other.transform_feedback) |
| || (self.transform_feedback_preserves_provoking_vertex |
| && other.transform_feedback_preserves_provoking_vertex) |
| || (self.triangle_fans && other.triangle_fans) |
| || (self.uniform_and_storage_buffer16_bit_access |
| && other.uniform_and_storage_buffer16_bit_access) |
| || (self.uniform_and_storage_buffer8_bit_access |
| && other.uniform_and_storage_buffer8_bit_access) |
| || (self.uniform_buffer_standard_layout && other.uniform_buffer_standard_layout) |
| || (self.variable_multisample_rate && other.variable_multisample_rate) |
| || (self.variable_pointers && other.variable_pointers) |
| || (self.variable_pointers_storage_buffer && other.variable_pointers_storage_buffer) |
| || (self.vertex_attribute_access_beyond_stride |
| && other.vertex_attribute_access_beyond_stride) |
| || (self.vertex_attribute_instance_rate_divisor |
| && other.vertex_attribute_instance_rate_divisor) |
| || (self.vertex_attribute_instance_rate_zero_divisor |
| && other.vertex_attribute_instance_rate_zero_divisor) |
| || (self.vertex_input_dynamic_state && other.vertex_input_dynamic_state) |
| || (self.vertex_pipeline_stores_and_atomics && other.vertex_pipeline_stores_and_atomics) |
| || (self.vulkan_memory_model && other.vulkan_memory_model) |
| || (self.vulkan_memory_model_availability_visibility_chains |
| && other.vulkan_memory_model_availability_visibility_chains) |
| || (self.vulkan_memory_model_device_scope && other.vulkan_memory_model_device_scope) |
| || (self.wide_lines && other.wide_lines) |
| || (self.workgroup_memory_explicit_layout && other.workgroup_memory_explicit_layout) |
| || (self.workgroup_memory_explicit_layout16_bit_access |
| && other.workgroup_memory_explicit_layout16_bit_access) |
| || (self.workgroup_memory_explicit_layout8_bit_access |
| && other.workgroup_memory_explicit_layout8_bit_access) |
| || (self.workgroup_memory_explicit_layout_scalar_block_layout |
| && other.workgroup_memory_explicit_layout_scalar_block_layout) |
| || (self.ycbcr2plane444_formats && other.ycbcr2plane444_formats) |
| || (self.ycbcr_image_arrays && other.ycbcr_image_arrays) |
| } |
| #[doc = r" Returns whether all members in `other` are set in `self`."] |
| #[inline] |
| pub const fn contains(&self, other: &Self) -> bool { |
| (self.acceleration_structure || !other.acceleration_structure) |
| && (self.acceleration_structure_capture_replay |
| || !other.acceleration_structure_capture_replay) |
| && (self.acceleration_structure_host_commands |
| || !other.acceleration_structure_host_commands) |
| && (self.acceleration_structure_indirect_build |
| || !other.acceleration_structure_indirect_build) |
| && (self.advanced_blend_coherent_operations |
| || !other.advanced_blend_coherent_operations) |
| && (self.alpha_to_one || !other.alpha_to_one) |
| && (self.amigo_profiling || !other.amigo_profiling) |
| && (self.attachment_feedback_loop_layout || !other.attachment_feedback_loop_layout) |
| && (self.attachment_fragment_shading_rate || !other.attachment_fragment_shading_rate) |
| && (self.border_color_swizzle || !other.border_color_swizzle) |
| && (self.border_color_swizzle_from_image || !other.border_color_swizzle_from_image) |
| && (self.bresenham_lines || !other.bresenham_lines) |
| && (self.buffer_device_address || !other.buffer_device_address) |
| && (self.buffer_device_address_capture_replay |
| || !other.buffer_device_address_capture_replay) |
| && (self.buffer_device_address_multi_device |
| || !other.buffer_device_address_multi_device) |
| && (self.color_write_enable || !other.color_write_enable) |
| && (self.compute_derivative_group_linear || !other.compute_derivative_group_linear) |
| && (self.compute_derivative_group_quads || !other.compute_derivative_group_quads) |
| && (self.compute_full_subgroups || !other.compute_full_subgroups) |
| && (self.conditional_rendering || !other.conditional_rendering) |
| && (self.constant_alpha_color_blend_factors |
| || !other.constant_alpha_color_blend_factors) |
| && (self.cooperative_matrix || !other.cooperative_matrix) |
| && (self.cooperative_matrix_robust_buffer_access |
| || !other.cooperative_matrix_robust_buffer_access) |
| && (self.corner_sampled_image || !other.corner_sampled_image) |
| && (self.coverage_reduction_mode || !other.coverage_reduction_mode) |
| && (self.custom_border_color_without_format |
| || !other.custom_border_color_without_format) |
| && (self.custom_border_colors || !other.custom_border_colors) |
| && (self.decode_mode_shared_exponent || !other.decode_mode_shared_exponent) |
| && (self.dedicated_allocation_image_aliasing |
| || !other.dedicated_allocation_image_aliasing) |
| && (self.depth_bias_clamp || !other.depth_bias_clamp) |
| && (self.depth_bounds || !other.depth_bounds) |
| && (self.depth_clamp || !other.depth_clamp) |
| && (self.depth_clamp_zero_one || !other.depth_clamp_zero_one) |
| && (self.depth_clip_control || !other.depth_clip_control) |
| && (self.depth_clip_enable || !other.depth_clip_enable) |
| && (self.descriptor_binding_acceleration_structure_update_after_bind |
| || !other.descriptor_binding_acceleration_structure_update_after_bind) |
| && (self.descriptor_binding_inline_uniform_block_update_after_bind |
| || !other.descriptor_binding_inline_uniform_block_update_after_bind) |
| && (self.descriptor_binding_partially_bound |
| || !other.descriptor_binding_partially_bound) |
| && (self.descriptor_binding_sampled_image_update_after_bind |
| || !other.descriptor_binding_sampled_image_update_after_bind) |
| && (self.descriptor_binding_storage_buffer_update_after_bind |
| || !other.descriptor_binding_storage_buffer_update_after_bind) |
| && (self.descriptor_binding_storage_image_update_after_bind |
| || !other.descriptor_binding_storage_image_update_after_bind) |
| && (self.descriptor_binding_storage_texel_buffer_update_after_bind |
| || !other.descriptor_binding_storage_texel_buffer_update_after_bind) |
| && (self.descriptor_binding_uniform_buffer_update_after_bind |
| || !other.descriptor_binding_uniform_buffer_update_after_bind) |
| && (self.descriptor_binding_uniform_texel_buffer_update_after_bind |
| || !other.descriptor_binding_uniform_texel_buffer_update_after_bind) |
| && (self.descriptor_binding_update_unused_while_pending |
| || !other.descriptor_binding_update_unused_while_pending) |
| && (self.descriptor_binding_variable_descriptor_count |
| || !other.descriptor_binding_variable_descriptor_count) |
| && (self.descriptor_buffer || !other.descriptor_buffer) |
| && (self.descriptor_buffer_capture_replay || !other.descriptor_buffer_capture_replay) |
| && (self.descriptor_buffer_image_layout_ignored |
| || !other.descriptor_buffer_image_layout_ignored) |
| && (self.descriptor_buffer_push_descriptors |
| || !other.descriptor_buffer_push_descriptors) |
| && (self.descriptor_indexing || !other.descriptor_indexing) |
| && (self.descriptor_set_host_mapping || !other.descriptor_set_host_mapping) |
| && (self.device_coherent_memory || !other.device_coherent_memory) |
| && (self.device_fault || !other.device_fault) |
| && (self.device_fault_vendor_binary || !other.device_fault_vendor_binary) |
| && (self.device_generated_commands || !other.device_generated_commands) |
| && (self.device_memory_report || !other.device_memory_report) |
| && (self.diagnostics_config || !other.diagnostics_config) |
| && (self.draw_indirect_count || !other.draw_indirect_count) |
| && (self.draw_indirect_first_instance || !other.draw_indirect_first_instance) |
| && (self.dual_src_blend || !other.dual_src_blend) |
| && (self.dynamic_rendering || !other.dynamic_rendering) |
| && (self.events || !other.events) |
| && (self.exclusive_scissor || !other.exclusive_scissor) |
| && (self.extended_dynamic_state || !other.extended_dynamic_state) |
| && (self.extended_dynamic_state2 || !other.extended_dynamic_state2) |
| && (self.extended_dynamic_state2_logic_op || !other.extended_dynamic_state2_logic_op) |
| && (self.extended_dynamic_state2_patch_control_points |
| || !other.extended_dynamic_state2_patch_control_points) |
| && (self.extended_dynamic_state3_alpha_to_coverage_enable |
| || !other.extended_dynamic_state3_alpha_to_coverage_enable) |
| && (self.extended_dynamic_state3_alpha_to_one_enable |
| || !other.extended_dynamic_state3_alpha_to_one_enable) |
| && (self.extended_dynamic_state3_color_blend_advanced |
| || !other.extended_dynamic_state3_color_blend_advanced) |
| && (self.extended_dynamic_state3_color_blend_enable |
| || !other.extended_dynamic_state3_color_blend_enable) |
| && (self.extended_dynamic_state3_color_blend_equation |
| || !other.extended_dynamic_state3_color_blend_equation) |
| && (self.extended_dynamic_state3_color_write_mask |
| || !other.extended_dynamic_state3_color_write_mask) |
| && (self.extended_dynamic_state3_conservative_rasterization_mode |
| || !other.extended_dynamic_state3_conservative_rasterization_mode) |
| && (self.extended_dynamic_state3_coverage_modulation_mode |
| || !other.extended_dynamic_state3_coverage_modulation_mode) |
| && (self.extended_dynamic_state3_coverage_modulation_table |
| || !other.extended_dynamic_state3_coverage_modulation_table) |
| && (self.extended_dynamic_state3_coverage_modulation_table_enable |
| || !other.extended_dynamic_state3_coverage_modulation_table_enable) |
| && (self.extended_dynamic_state3_coverage_reduction_mode |
| || !other.extended_dynamic_state3_coverage_reduction_mode) |
| && (self.extended_dynamic_state3_coverage_to_color_enable |
| || !other.extended_dynamic_state3_coverage_to_color_enable) |
| && (self.extended_dynamic_state3_coverage_to_color_location |
| || !other.extended_dynamic_state3_coverage_to_color_location) |
| && (self.extended_dynamic_state3_depth_clamp_enable |
| || !other.extended_dynamic_state3_depth_clamp_enable) |
| && (self.extended_dynamic_state3_depth_clip_enable |
| || !other.extended_dynamic_state3_depth_clip_enable) |
| && (self.extended_dynamic_state3_depth_clip_negative_one_to_one |
| || !other.extended_dynamic_state3_depth_clip_negative_one_to_one) |
| && (self.extended_dynamic_state3_extra_primitive_overestimation_size |
| || !other.extended_dynamic_state3_extra_primitive_overestimation_size) |
| && (self.extended_dynamic_state3_line_rasterization_mode |
| || !other.extended_dynamic_state3_line_rasterization_mode) |
| && (self.extended_dynamic_state3_line_stipple_enable |
| || !other.extended_dynamic_state3_line_stipple_enable) |
| && (self.extended_dynamic_state3_logic_op_enable |
| || !other.extended_dynamic_state3_logic_op_enable) |
| && (self.extended_dynamic_state3_polygon_mode |
| || !other.extended_dynamic_state3_polygon_mode) |
| && (self.extended_dynamic_state3_provoking_vertex_mode |
| || !other.extended_dynamic_state3_provoking_vertex_mode) |
| && (self.extended_dynamic_state3_rasterization_samples |
| || !other.extended_dynamic_state3_rasterization_samples) |
| && (self.extended_dynamic_state3_rasterization_stream |
| || !other.extended_dynamic_state3_rasterization_stream) |
| && (self.extended_dynamic_state3_representative_fragment_test_enable |
| || !other.extended_dynamic_state3_representative_fragment_test_enable) |
| && (self.extended_dynamic_state3_sample_locations_enable |
| || !other.extended_dynamic_state3_sample_locations_enable) |
| && (self.extended_dynamic_state3_sample_mask |
| || !other.extended_dynamic_state3_sample_mask) |
| && (self.extended_dynamic_state3_shading_rate_image_enable |
| || !other.extended_dynamic_state3_shading_rate_image_enable) |
| && (self.extended_dynamic_state3_tessellation_domain_origin |
| || !other.extended_dynamic_state3_tessellation_domain_origin) |
| && (self.extended_dynamic_state3_viewport_swizzle |
| || !other.extended_dynamic_state3_viewport_swizzle) |
| && (self.extended_dynamic_state3_viewport_w_scaling_enable |
| || !other.extended_dynamic_state3_viewport_w_scaling_enable) |
| && (self.external_memory_rdma || !other.external_memory_rdma) |
| && (self.fill_mode_non_solid || !other.fill_mode_non_solid) |
| && (self.format_a4b4g4r4 || !other.format_a4b4g4r4) |
| && (self.format_a4r4g4b4 || !other.format_a4r4g4b4) |
| && (self.format_rgba10x6_without_y_cb_cr_sampler |
| || !other.format_rgba10x6_without_y_cb_cr_sampler) |
| && (self.fragment_density_map || !other.fragment_density_map) |
| && (self.fragment_density_map_deferred || !other.fragment_density_map_deferred) |
| && (self.fragment_density_map_dynamic || !other.fragment_density_map_dynamic) |
| && (self.fragment_density_map_non_subsampled_images |
| || !other.fragment_density_map_non_subsampled_images) |
| && (self.fragment_density_map_offset || !other.fragment_density_map_offset) |
| && (self.fragment_shader_barycentric || !other.fragment_shader_barycentric) |
| && (self.fragment_shader_pixel_interlock || !other.fragment_shader_pixel_interlock) |
| && (self.fragment_shader_sample_interlock || !other.fragment_shader_sample_interlock) |
| && (self.fragment_shader_shading_rate_interlock |
| || !other.fragment_shader_shading_rate_interlock) |
| && (self.fragment_shading_rate_enums || !other.fragment_shading_rate_enums) |
| && (self.fragment_stores_and_atomics || !other.fragment_stores_and_atomics) |
| && (self.full_draw_index_uint32 || !other.full_draw_index_uint32) |
| && (self.geometry_shader || !other.geometry_shader) |
| && (self.geometry_streams || !other.geometry_streams) |
| && (self.global_priority_query || !other.global_priority_query) |
| && (self.graphics_pipeline_library || !other.graphics_pipeline_library) |
| && (self.host_query_reset || !other.host_query_reset) |
| && (self.image2_d_view_of3_d || !other.image2_d_view_of3_d) |
| && (self.image_compression_control || !other.image_compression_control) |
| && (self.image_compression_control_swapchain |
| || !other.image_compression_control_swapchain) |
| && (self.image_cube_array || !other.image_cube_array) |
| && (self.image_footprint || !other.image_footprint) |
| && (self.image_view2_d_on3_d_image || !other.image_view2_d_on3_d_image) |
| && (self.image_view_format_reinterpretation |
| || !other.image_view_format_reinterpretation) |
| && (self.image_view_format_swizzle || !other.image_view_format_swizzle) |
| && (self.imageless_framebuffer || !other.imageless_framebuffer) |
| && (self.independent_blend || !other.independent_blend) |
| && (self.index_type_uint8 || !other.index_type_uint8) |
| && (self.indirect_copy || !other.indirect_copy) |
| && (self.inherited_conditional_rendering || !other.inherited_conditional_rendering) |
| && (self.inherited_queries || !other.inherited_queries) |
| && (self.inherited_viewport_scissor2_d || !other.inherited_viewport_scissor2_d) |
| && (self.inline_uniform_block || !other.inline_uniform_block) |
| && (self.invocation_mask || !other.invocation_mask) |
| && (self.large_points || !other.large_points) |
| && (self.legacy_dithering || !other.legacy_dithering) |
| && (self.linear_color_attachment || !other.linear_color_attachment) |
| && (self.logic_op || !other.logic_op) |
| && (self.maintenance4 || !other.maintenance4) |
| && (self.memory_decompression || !other.memory_decompression) |
| && (self.memory_priority || !other.memory_priority) |
| && (self.mesh_shader || !other.mesh_shader) |
| && (self.mesh_shader_queries || !other.mesh_shader_queries) |
| && (self.micromap || !other.micromap) |
| && (self.micromap_capture_replay || !other.micromap_capture_replay) |
| && (self.micromap_host_commands || !other.micromap_host_commands) |
| && (self.min_lod || !other.min_lod) |
| && (self.multi_draw || !other.multi_draw) |
| && (self.multi_draw_indirect || !other.multi_draw_indirect) |
| && (self.multi_viewport || !other.multi_viewport) |
| && (self.multisample_array_image || !other.multisample_array_image) |
| && (self.multisampled_render_to_single_sampled |
| || !other.multisampled_render_to_single_sampled) |
| && (self.multiview || !other.multiview) |
| && (self.multiview_geometry_shader || !other.multiview_geometry_shader) |
| && (self.multiview_mesh_shader || !other.multiview_mesh_shader) |
| && (self.multiview_per_view_viewports || !other.multiview_per_view_viewports) |
| && (self.multiview_tessellation_shader || !other.multiview_tessellation_shader) |
| && (self.mutable_comparison_samplers || !other.mutable_comparison_samplers) |
| && (self.mutable_descriptor_type || !other.mutable_descriptor_type) |
| && (self.no_invocation_fragment_shading_rates |
| || !other.no_invocation_fragment_shading_rates) |
| && (self.non_seamless_cube_map || !other.non_seamless_cube_map) |
| && (self.null_descriptor || !other.null_descriptor) |
| && (self.occlusion_query_precise || !other.occlusion_query_precise) |
| && (self.optical_flow || !other.optical_flow) |
| && (self.pageable_device_local_memory || !other.pageable_device_local_memory) |
| && (self.performance_counter_multiple_query_pools |
| || !other.performance_counter_multiple_query_pools) |
| && (self.performance_counter_query_pools || !other.performance_counter_query_pools) |
| && (self.pipeline_creation_cache_control || !other.pipeline_creation_cache_control) |
| && (self.pipeline_executable_info || !other.pipeline_executable_info) |
| && (self.pipeline_fragment_shading_rate || !other.pipeline_fragment_shading_rate) |
| && (self.pipeline_properties_identifier || !other.pipeline_properties_identifier) |
| && (self.pipeline_protected_access || !other.pipeline_protected_access) |
| && (self.pipeline_robustness || !other.pipeline_robustness) |
| && (self.pipeline_statistics_query || !other.pipeline_statistics_query) |
| && (self.point_polygons || !other.point_polygons) |
| && (self.present_barrier || !other.present_barrier) |
| && (self.present_id || !other.present_id) |
| && (self.present_wait || !other.present_wait) |
| && (self.primitive_fragment_shading_rate || !other.primitive_fragment_shading_rate) |
| && (self.primitive_fragment_shading_rate_mesh_shader |
| || !other.primitive_fragment_shading_rate_mesh_shader) |
| && (self.primitive_topology_list_restart || !other.primitive_topology_list_restart) |
| && (self.primitive_topology_patch_list_restart |
| || !other.primitive_topology_patch_list_restart) |
| && (self.primitives_generated_query || !other.primitives_generated_query) |
| && (self.primitives_generated_query_with_non_zero_streams |
| || !other.primitives_generated_query_with_non_zero_streams) |
| && (self.primitives_generated_query_with_rasterizer_discard |
| || !other.primitives_generated_query_with_rasterizer_discard) |
| && (self.private_data || !other.private_data) |
| && (self.protected_memory || !other.protected_memory) |
| && (self.provoking_vertex_last || !other.provoking_vertex_last) |
| && (self.rasterization_order_color_attachment_access |
| || !other.rasterization_order_color_attachment_access) |
| && (self.rasterization_order_depth_attachment_access |
| || !other.rasterization_order_depth_attachment_access) |
| && (self.rasterization_order_stencil_attachment_access |
| || !other.rasterization_order_stencil_attachment_access) |
| && (self.ray_query || !other.ray_query) |
| && (self.ray_tracing_invocation_reorder || !other.ray_tracing_invocation_reorder) |
| && (self.ray_tracing_maintenance1 || !other.ray_tracing_maintenance1) |
| && (self.ray_tracing_motion_blur || !other.ray_tracing_motion_blur) |
| && (self.ray_tracing_motion_blur_pipeline_trace_rays_indirect |
| || !other.ray_tracing_motion_blur_pipeline_trace_rays_indirect) |
| && (self.ray_tracing_pipeline || !other.ray_tracing_pipeline) |
| && (self.ray_tracing_pipeline_shader_group_handle_capture_replay |
| || !other.ray_tracing_pipeline_shader_group_handle_capture_replay) |
| && (self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed |
| || !other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed) |
| && (self.ray_tracing_pipeline_trace_rays_indirect |
| || !other.ray_tracing_pipeline_trace_rays_indirect) |
| && (self.ray_tracing_pipeline_trace_rays_indirect2 |
| || !other.ray_tracing_pipeline_trace_rays_indirect2) |
| && (self.ray_traversal_primitive_culling || !other.ray_traversal_primitive_culling) |
| && (self.rectangular_lines || !other.rectangular_lines) |
| && (self.report_address_binding || !other.report_address_binding) |
| && (self.representative_fragment_test || !other.representative_fragment_test) |
| && (self.robust_buffer_access || !other.robust_buffer_access) |
| && (self.robust_buffer_access2 || !other.robust_buffer_access2) |
| && (self.robust_image_access || !other.robust_image_access) |
| && (self.robust_image_access2 || !other.robust_image_access2) |
| && (self.runtime_descriptor_array || !other.runtime_descriptor_array) |
| && (self.sample_rate_shading || !other.sample_rate_shading) |
| && (self.sampler2_d_view_of3_d || !other.sampler2_d_view_of3_d) |
| && (self.sampler_anisotropy || !other.sampler_anisotropy) |
| && (self.sampler_filter_minmax || !other.sampler_filter_minmax) |
| && (self.sampler_mip_lod_bias || !other.sampler_mip_lod_bias) |
| && (self.sampler_mirror_clamp_to_edge || !other.sampler_mirror_clamp_to_edge) |
| && (self.sampler_ycbcr_conversion || !other.sampler_ycbcr_conversion) |
| && (self.scalar_block_layout || !other.scalar_block_layout) |
| && (self.separate_depth_stencil_layouts || !other.separate_depth_stencil_layouts) |
| && (self.separate_stencil_mask_ref || !other.separate_stencil_mask_ref) |
| && (self.shader_buffer_float16_atomic_add || !other.shader_buffer_float16_atomic_add) |
| && (self.shader_buffer_float16_atomic_min_max |
| || !other.shader_buffer_float16_atomic_min_max) |
| && (self.shader_buffer_float16_atomics || !other.shader_buffer_float16_atomics) |
| && (self.shader_buffer_float32_atomic_add || !other.shader_buffer_float32_atomic_add) |
| && (self.shader_buffer_float32_atomic_min_max |
| || !other.shader_buffer_float32_atomic_min_max) |
| && (self.shader_buffer_float32_atomics || !other.shader_buffer_float32_atomics) |
| && (self.shader_buffer_float64_atomic_add || !other.shader_buffer_float64_atomic_add) |
| && (self.shader_buffer_float64_atomic_min_max |
| || !other.shader_buffer_float64_atomic_min_max) |
| && (self.shader_buffer_float64_atomics || !other.shader_buffer_float64_atomics) |
| && (self.shader_buffer_int64_atomics || !other.shader_buffer_int64_atomics) |
| && (self.shader_clip_distance || !other.shader_clip_distance) |
| && (self.shader_core_builtins || !other.shader_core_builtins) |
| && (self.shader_cull_distance || !other.shader_cull_distance) |
| && (self.shader_demote_to_helper_invocation |
| || !other.shader_demote_to_helper_invocation) |
| && (self.shader_device_clock || !other.shader_device_clock) |
| && (self.shader_draw_parameters || !other.shader_draw_parameters) |
| && (self.shader_early_and_late_fragment_tests |
| || !other.shader_early_and_late_fragment_tests) |
| && (self.shader_float16 || !other.shader_float16) |
| && (self.shader_float64 || !other.shader_float64) |
| && (self.shader_image_float32_atomic_add || !other.shader_image_float32_atomic_add) |
| && (self.shader_image_float32_atomic_min_max |
| || !other.shader_image_float32_atomic_min_max) |
| && (self.shader_image_float32_atomics || !other.shader_image_float32_atomics) |
| && (self.shader_image_gather_extended || !other.shader_image_gather_extended) |
| && (self.shader_image_int64_atomics || !other.shader_image_int64_atomics) |
| && (self.shader_input_attachment_array_dynamic_indexing |
| || !other.shader_input_attachment_array_dynamic_indexing) |
| && (self.shader_input_attachment_array_non_uniform_indexing |
| || !other.shader_input_attachment_array_non_uniform_indexing) |
| && (self.shader_int16 || !other.shader_int16) |
| && (self.shader_int64 || !other.shader_int64) |
| && (self.shader_int8 || !other.shader_int8) |
| && (self.shader_integer_dot_product || !other.shader_integer_dot_product) |
| && (self.shader_integer_functions2 || !other.shader_integer_functions2) |
| && (self.shader_module_identifier || !other.shader_module_identifier) |
| && (self.shader_output_layer || !other.shader_output_layer) |
| && (self.shader_output_viewport_index || !other.shader_output_viewport_index) |
| && (self.shader_resource_min_lod || !other.shader_resource_min_lod) |
| && (self.shader_resource_residency || !other.shader_resource_residency) |
| && (self.shader_sample_rate_interpolation_functions |
| || !other.shader_sample_rate_interpolation_functions) |
| && (self.shader_sampled_image_array_dynamic_indexing |
| || !other.shader_sampled_image_array_dynamic_indexing) |
| && (self.shader_sampled_image_array_non_uniform_indexing |
| || !other.shader_sampled_image_array_non_uniform_indexing) |
| && (self.shader_shared_float16_atomic_add || !other.shader_shared_float16_atomic_add) |
| && (self.shader_shared_float16_atomic_min_max |
| || !other.shader_shared_float16_atomic_min_max) |
| && (self.shader_shared_float16_atomics || !other.shader_shared_float16_atomics) |
| && (self.shader_shared_float32_atomic_add || !other.shader_shared_float32_atomic_add) |
| && (self.shader_shared_float32_atomic_min_max |
| || !other.shader_shared_float32_atomic_min_max) |
| && (self.shader_shared_float32_atomics || !other.shader_shared_float32_atomics) |
| && (self.shader_shared_float64_atomic_add || !other.shader_shared_float64_atomic_add) |
| && (self.shader_shared_float64_atomic_min_max |
| || !other.shader_shared_float64_atomic_min_max) |
| && (self.shader_shared_float64_atomics || !other.shader_shared_float64_atomics) |
| && (self.shader_shared_int64_atomics || !other.shader_shared_int64_atomics) |
| && (self.shader_sm_builtins || !other.shader_sm_builtins) |
| && (self.shader_storage_buffer_array_dynamic_indexing |
| || !other.shader_storage_buffer_array_dynamic_indexing) |
| && (self.shader_storage_buffer_array_non_uniform_indexing |
| || !other.shader_storage_buffer_array_non_uniform_indexing) |
| && (self.shader_storage_image_array_dynamic_indexing |
| || !other.shader_storage_image_array_dynamic_indexing) |
| && (self.shader_storage_image_array_non_uniform_indexing |
| || !other.shader_storage_image_array_non_uniform_indexing) |
| && (self.shader_storage_image_extended_formats |
| || !other.shader_storage_image_extended_formats) |
| && (self.shader_storage_image_multisample || !other.shader_storage_image_multisample) |
| && (self.shader_storage_image_read_without_format |
| || !other.shader_storage_image_read_without_format) |
| && (self.shader_storage_image_write_without_format |
| || !other.shader_storage_image_write_without_format) |
| && (self.shader_storage_texel_buffer_array_dynamic_indexing |
| || !other.shader_storage_texel_buffer_array_dynamic_indexing) |
| && (self.shader_storage_texel_buffer_array_non_uniform_indexing |
| || !other.shader_storage_texel_buffer_array_non_uniform_indexing) |
| && (self.shader_subgroup_clock || !other.shader_subgroup_clock) |
| && (self.shader_subgroup_extended_types || !other.shader_subgroup_extended_types) |
| && (self.shader_subgroup_uniform_control_flow |
| || !other.shader_subgroup_uniform_control_flow) |
| && (self.shader_terminate_invocation || !other.shader_terminate_invocation) |
| && (self.shader_tessellation_and_geometry_point_size |
| || !other.shader_tessellation_and_geometry_point_size) |
| && (self.shader_uniform_buffer_array_dynamic_indexing |
| || !other.shader_uniform_buffer_array_dynamic_indexing) |
| && (self.shader_uniform_buffer_array_non_uniform_indexing |
| || !other.shader_uniform_buffer_array_non_uniform_indexing) |
| && (self.shader_uniform_texel_buffer_array_dynamic_indexing |
| || !other.shader_uniform_texel_buffer_array_dynamic_indexing) |
| && (self.shader_uniform_texel_buffer_array_non_uniform_indexing |
| || !other.shader_uniform_texel_buffer_array_non_uniform_indexing) |
| && (self.shader_zero_initialize_workgroup_memory |
| || !other.shader_zero_initialize_workgroup_memory) |
| && (self.shading_rate_coarse_sample_order || !other.shading_rate_coarse_sample_order) |
| && (self.shading_rate_image || !other.shading_rate_image) |
| && (self.smooth_lines || !other.smooth_lines) |
| && (self.sparse_binding || !other.sparse_binding) |
| && (self.sparse_image_float32_atomic_add || !other.sparse_image_float32_atomic_add) |
| && (self.sparse_image_float32_atomic_min_max |
| || !other.sparse_image_float32_atomic_min_max) |
| && (self.sparse_image_float32_atomics || !other.sparse_image_float32_atomics) |
| && (self.sparse_image_int64_atomics || !other.sparse_image_int64_atomics) |
| && (self.sparse_residency16_samples || !other.sparse_residency16_samples) |
| && (self.sparse_residency2_samples || !other.sparse_residency2_samples) |
| && (self.sparse_residency4_samples || !other.sparse_residency4_samples) |
| && (self.sparse_residency8_samples || !other.sparse_residency8_samples) |
| && (self.sparse_residency_aliased || !other.sparse_residency_aliased) |
| && (self.sparse_residency_buffer || !other.sparse_residency_buffer) |
| && (self.sparse_residency_image2_d || !other.sparse_residency_image2_d) |
| && (self.sparse_residency_image3_d || !other.sparse_residency_image3_d) |
| && (self.stippled_bresenham_lines || !other.stippled_bresenham_lines) |
| && (self.stippled_rectangular_lines || !other.stippled_rectangular_lines) |
| && (self.stippled_smooth_lines || !other.stippled_smooth_lines) |
| && (self.storage_buffer16_bit_access || !other.storage_buffer16_bit_access) |
| && (self.storage_buffer8_bit_access || !other.storage_buffer8_bit_access) |
| && (self.storage_input_output16 || !other.storage_input_output16) |
| && (self.storage_push_constant16 || !other.storage_push_constant16) |
| && (self.storage_push_constant8 || !other.storage_push_constant8) |
| && (self.subgroup_broadcast_dynamic_id || !other.subgroup_broadcast_dynamic_id) |
| && (self.subgroup_size_control || !other.subgroup_size_control) |
| && (self.subpass_merge_feedback || !other.subpass_merge_feedback) |
| && (self.subpass_shading || !other.subpass_shading) |
| && (self.supersample_fragment_shading_rates |
| || !other.supersample_fragment_shading_rates) |
| && (self.swapchain_maintenance1 || !other.swapchain_maintenance1) |
| && (self.synchronization2 || !other.synchronization2) |
| && (self.task_shader || !other.task_shader) |
| && (self.tessellation_isolines || !other.tessellation_isolines) |
| && (self.tessellation_point_mode || !other.tessellation_point_mode) |
| && (self.tessellation_shader || !other.tessellation_shader) |
| && (self.texel_buffer_alignment || !other.texel_buffer_alignment) |
| && (self.texture_block_match || !other.texture_block_match) |
| && (self.texture_box_filter || !other.texture_box_filter) |
| && (self.texture_compression_astc_hdr || !other.texture_compression_astc_hdr) |
| && (self.texture_compression_astc_ldr || !other.texture_compression_astc_ldr) |
| && (self.texture_compression_bc || !other.texture_compression_bc) |
| && (self.texture_compression_etc2 || !other.texture_compression_etc2) |
| && (self.texture_sample_weighted || !other.texture_sample_weighted) |
| && (self.tile_properties || !other.tile_properties) |
| && (self.timeline_semaphore || !other.timeline_semaphore) |
| && (self.transform_feedback || !other.transform_feedback) |
| && (self.transform_feedback_preserves_provoking_vertex |
| || !other.transform_feedback_preserves_provoking_vertex) |
| && (self.triangle_fans || !other.triangle_fans) |
| && (self.uniform_and_storage_buffer16_bit_access |
| || !other.uniform_and_storage_buffer16_bit_access) |
| && (self.uniform_and_storage_buffer8_bit_access |
| || !other.uniform_and_storage_buffer8_bit_access) |
| && (self.uniform_buffer_standard_layout || !other.uniform_buffer_standard_layout) |
| && (self.variable_multisample_rate || !other.variable_multisample_rate) |
| && (self.variable_pointers || !other.variable_pointers) |
| && (self.variable_pointers_storage_buffer || !other.variable_pointers_storage_buffer) |
| && (self.vertex_attribute_access_beyond_stride |
| || !other.vertex_attribute_access_beyond_stride) |
| && (self.vertex_attribute_instance_rate_divisor |
| || !other.vertex_attribute_instance_rate_divisor) |
| && (self.vertex_attribute_instance_rate_zero_divisor |
| || !other.vertex_attribute_instance_rate_zero_divisor) |
| && (self.vertex_input_dynamic_state || !other.vertex_input_dynamic_state) |
| && (self.vertex_pipeline_stores_and_atomics |
| || !other.vertex_pipeline_stores_and_atomics) |
| && (self.vulkan_memory_model || !other.vulkan_memory_model) |
| && (self.vulkan_memory_model_availability_visibility_chains |
| || !other.vulkan_memory_model_availability_visibility_chains) |
| && (self.vulkan_memory_model_device_scope || !other.vulkan_memory_model_device_scope) |
| && (self.wide_lines || !other.wide_lines) |
| && (self.workgroup_memory_explicit_layout || !other.workgroup_memory_explicit_layout) |
| && (self.workgroup_memory_explicit_layout16_bit_access |
| || !other.workgroup_memory_explicit_layout16_bit_access) |
| && (self.workgroup_memory_explicit_layout8_bit_access |
| || !other.workgroup_memory_explicit_layout8_bit_access) |
| && (self.workgroup_memory_explicit_layout_scalar_block_layout |
| || !other.workgroup_memory_explicit_layout_scalar_block_layout) |
| && (self.ycbcr2plane444_formats || !other.ycbcr2plane444_formats) |
| && (self.ycbcr_image_arrays || !other.ycbcr_image_arrays) |
| } |
| #[doc = r" Returns whether all members in `other` are set in `self`."] |
| #[deprecated(since = "0.31.0", note = "Use `contains` instead.")] |
| #[inline] |
| pub const fn is_superset_of(&self, other: &Self) -> bool { |
| self.contains(other) |
| } |
| #[doc = r" Returns the union of `self` and `other`."] |
| #[inline] |
| pub const fn union(&self, other: &Self) -> Self { |
| Self { |
| acceleration_structure: self.acceleration_structure || other.acceleration_structure, |
| acceleration_structure_capture_replay: self.acceleration_structure_capture_replay |
| || other.acceleration_structure_capture_replay, |
| acceleration_structure_host_commands: self.acceleration_structure_host_commands |
| || other.acceleration_structure_host_commands, |
| acceleration_structure_indirect_build: self.acceleration_structure_indirect_build |
| || other.acceleration_structure_indirect_build, |
| advanced_blend_coherent_operations: self.advanced_blend_coherent_operations |
| || other.advanced_blend_coherent_operations, |
| alpha_to_one: self.alpha_to_one || other.alpha_to_one, |
| amigo_profiling: self.amigo_profiling || other.amigo_profiling, |
| attachment_feedback_loop_layout: self.attachment_feedback_loop_layout |
| || other.attachment_feedback_loop_layout, |
| attachment_fragment_shading_rate: self.attachment_fragment_shading_rate |
| || other.attachment_fragment_shading_rate, |
| border_color_swizzle: self.border_color_swizzle || other.border_color_swizzle, |
| border_color_swizzle_from_image: self.border_color_swizzle_from_image |
| || other.border_color_swizzle_from_image, |
| bresenham_lines: self.bresenham_lines || other.bresenham_lines, |
| buffer_device_address: self.buffer_device_address || other.buffer_device_address, |
| buffer_device_address_capture_replay: self.buffer_device_address_capture_replay |
| || other.buffer_device_address_capture_replay, |
| buffer_device_address_multi_device: self.buffer_device_address_multi_device |
| || other.buffer_device_address_multi_device, |
| color_write_enable: self.color_write_enable || other.color_write_enable, |
| compute_derivative_group_linear: self.compute_derivative_group_linear |
| || other.compute_derivative_group_linear, |
| compute_derivative_group_quads: self.compute_derivative_group_quads |
| || other.compute_derivative_group_quads, |
| compute_full_subgroups: self.compute_full_subgroups || other.compute_full_subgroups, |
| conditional_rendering: self.conditional_rendering || other.conditional_rendering, |
| constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors |
| || other.constant_alpha_color_blend_factors, |
| cooperative_matrix: self.cooperative_matrix || other.cooperative_matrix, |
| cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access |
| || other.cooperative_matrix_robust_buffer_access, |
| corner_sampled_image: self.corner_sampled_image || other.corner_sampled_image, |
| coverage_reduction_mode: self.coverage_reduction_mode || other.coverage_reduction_mode, |
| custom_border_color_without_format: self.custom_border_color_without_format |
| || other.custom_border_color_without_format, |
| custom_border_colors: self.custom_border_colors || other.custom_border_colors, |
| decode_mode_shared_exponent: self.decode_mode_shared_exponent |
| || other.decode_mode_shared_exponent, |
| dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing |
| || other.dedicated_allocation_image_aliasing, |
| depth_bias_clamp: self.depth_bias_clamp || other.depth_bias_clamp, |
| depth_bounds: self.depth_bounds || other.depth_bounds, |
| depth_clamp: self.depth_clamp || other.depth_clamp, |
| depth_clamp_zero_one: self.depth_clamp_zero_one || other.depth_clamp_zero_one, |
| depth_clip_control: self.depth_clip_control || other.depth_clip_control, |
| depth_clip_enable: self.depth_clip_enable || other.depth_clip_enable, |
| descriptor_binding_acceleration_structure_update_after_bind: self |
| .descriptor_binding_acceleration_structure_update_after_bind |
| || other.descriptor_binding_acceleration_structure_update_after_bind, |
| descriptor_binding_inline_uniform_block_update_after_bind: self |
| .descriptor_binding_inline_uniform_block_update_after_bind |
| || other.descriptor_binding_inline_uniform_block_update_after_bind, |
| descriptor_binding_partially_bound: self.descriptor_binding_partially_bound |
| || other.descriptor_binding_partially_bound, |
| descriptor_binding_sampled_image_update_after_bind: self |
| .descriptor_binding_sampled_image_update_after_bind |
| || other.descriptor_binding_sampled_image_update_after_bind, |
| descriptor_binding_storage_buffer_update_after_bind: self |
| .descriptor_binding_storage_buffer_update_after_bind |
| || other.descriptor_binding_storage_buffer_update_after_bind, |
| descriptor_binding_storage_image_update_after_bind: self |
| .descriptor_binding_storage_image_update_after_bind |
| || other.descriptor_binding_storage_image_update_after_bind, |
| descriptor_binding_storage_texel_buffer_update_after_bind: self |
| .descriptor_binding_storage_texel_buffer_update_after_bind |
| || other.descriptor_binding_storage_texel_buffer_update_after_bind, |
| descriptor_binding_uniform_buffer_update_after_bind: self |
| .descriptor_binding_uniform_buffer_update_after_bind |
| || other.descriptor_binding_uniform_buffer_update_after_bind, |
| descriptor_binding_uniform_texel_buffer_update_after_bind: self |
| .descriptor_binding_uniform_texel_buffer_update_after_bind |
| || other.descriptor_binding_uniform_texel_buffer_update_after_bind, |
| descriptor_binding_update_unused_while_pending: self |
| .descriptor_binding_update_unused_while_pending |
| || other.descriptor_binding_update_unused_while_pending, |
| descriptor_binding_variable_descriptor_count: self |
| .descriptor_binding_variable_descriptor_count |
| || other.descriptor_binding_variable_descriptor_count, |
| descriptor_buffer: self.descriptor_buffer || other.descriptor_buffer, |
| descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay |
| || other.descriptor_buffer_capture_replay, |
| descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored |
| || other.descriptor_buffer_image_layout_ignored, |
| descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors |
| || other.descriptor_buffer_push_descriptors, |
| descriptor_indexing: self.descriptor_indexing || other.descriptor_indexing, |
| descriptor_set_host_mapping: self.descriptor_set_host_mapping |
| || other.descriptor_set_host_mapping, |
| device_coherent_memory: self.device_coherent_memory || other.device_coherent_memory, |
| device_fault: self.device_fault || other.device_fault, |
| device_fault_vendor_binary: self.device_fault_vendor_binary |
| || other.device_fault_vendor_binary, |
| device_generated_commands: self.device_generated_commands |
| || other.device_generated_commands, |
| device_memory_report: self.device_memory_report || other.device_memory_report, |
| diagnostics_config: self.diagnostics_config || other.diagnostics_config, |
| draw_indirect_count: self.draw_indirect_count || other.draw_indirect_count, |
| draw_indirect_first_instance: self.draw_indirect_first_instance |
| || other.draw_indirect_first_instance, |
| dual_src_blend: self.dual_src_blend || other.dual_src_blend, |
| dynamic_rendering: self.dynamic_rendering || other.dynamic_rendering, |
| events: self.events || other.events, |
| exclusive_scissor: self.exclusive_scissor || other.exclusive_scissor, |
| extended_dynamic_state: self.extended_dynamic_state || other.extended_dynamic_state, |
| extended_dynamic_state2: self.extended_dynamic_state2 || other.extended_dynamic_state2, |
| extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op |
| || other.extended_dynamic_state2_logic_op, |
| extended_dynamic_state2_patch_control_points: self |
| .extended_dynamic_state2_patch_control_points |
| || other.extended_dynamic_state2_patch_control_points, |
| extended_dynamic_state3_alpha_to_coverage_enable: self |
| .extended_dynamic_state3_alpha_to_coverage_enable |
| || other.extended_dynamic_state3_alpha_to_coverage_enable, |
| extended_dynamic_state3_alpha_to_one_enable: self |
| .extended_dynamic_state3_alpha_to_one_enable |
| || other.extended_dynamic_state3_alpha_to_one_enable, |
| extended_dynamic_state3_color_blend_advanced: self |
| .extended_dynamic_state3_color_blend_advanced |
| || other.extended_dynamic_state3_color_blend_advanced, |
| extended_dynamic_state3_color_blend_enable: self |
| .extended_dynamic_state3_color_blend_enable |
| || other.extended_dynamic_state3_color_blend_enable, |
| extended_dynamic_state3_color_blend_equation: self |
| .extended_dynamic_state3_color_blend_equation |
| || other.extended_dynamic_state3_color_blend_equation, |
| extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask |
| || other.extended_dynamic_state3_color_write_mask, |
| extended_dynamic_state3_conservative_rasterization_mode: self |
| .extended_dynamic_state3_conservative_rasterization_mode |
| || other.extended_dynamic_state3_conservative_rasterization_mode, |
| extended_dynamic_state3_coverage_modulation_mode: self |
| .extended_dynamic_state3_coverage_modulation_mode |
| || other.extended_dynamic_state3_coverage_modulation_mode, |
| extended_dynamic_state3_coverage_modulation_table: self |
| .extended_dynamic_state3_coverage_modulation_table |
| || other.extended_dynamic_state3_coverage_modulation_table, |
| extended_dynamic_state3_coverage_modulation_table_enable: self |
| .extended_dynamic_state3_coverage_modulation_table_enable |
| || other.extended_dynamic_state3_coverage_modulation_table_enable, |
| extended_dynamic_state3_coverage_reduction_mode: self |
| .extended_dynamic_state3_coverage_reduction_mode |
| || other.extended_dynamic_state3_coverage_reduction_mode, |
| extended_dynamic_state3_coverage_to_color_enable: self |
| .extended_dynamic_state3_coverage_to_color_enable |
| || other.extended_dynamic_state3_coverage_to_color_enable, |
| extended_dynamic_state3_coverage_to_color_location: self |
| .extended_dynamic_state3_coverage_to_color_location |
| || other.extended_dynamic_state3_coverage_to_color_location, |
| extended_dynamic_state3_depth_clamp_enable: self |
| .extended_dynamic_state3_depth_clamp_enable |
| || other.extended_dynamic_state3_depth_clamp_enable, |
| extended_dynamic_state3_depth_clip_enable: self |
| .extended_dynamic_state3_depth_clip_enable |
| || other.extended_dynamic_state3_depth_clip_enable, |
| extended_dynamic_state3_depth_clip_negative_one_to_one: self |
| .extended_dynamic_state3_depth_clip_negative_one_to_one |
| || other.extended_dynamic_state3_depth_clip_negative_one_to_one, |
| extended_dynamic_state3_extra_primitive_overestimation_size: self |
| .extended_dynamic_state3_extra_primitive_overestimation_size |
| || other.extended_dynamic_state3_extra_primitive_overestimation_size, |
| extended_dynamic_state3_line_rasterization_mode: self |
| .extended_dynamic_state3_line_rasterization_mode |
| || other.extended_dynamic_state3_line_rasterization_mode, |
| extended_dynamic_state3_line_stipple_enable: self |
| .extended_dynamic_state3_line_stipple_enable |
| || other.extended_dynamic_state3_line_stipple_enable, |
| extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable |
| || other.extended_dynamic_state3_logic_op_enable, |
| extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode |
| || other.extended_dynamic_state3_polygon_mode, |
| extended_dynamic_state3_provoking_vertex_mode: self |
| .extended_dynamic_state3_provoking_vertex_mode |
| || other.extended_dynamic_state3_provoking_vertex_mode, |
| extended_dynamic_state3_rasterization_samples: self |
| .extended_dynamic_state3_rasterization_samples |
| || other.extended_dynamic_state3_rasterization_samples, |
| extended_dynamic_state3_rasterization_stream: self |
| .extended_dynamic_state3_rasterization_stream |
| || other.extended_dynamic_state3_rasterization_stream, |
| extended_dynamic_state3_representative_fragment_test_enable: self |
| .extended_dynamic_state3_representative_fragment_test_enable |
| || other.extended_dynamic_state3_representative_fragment_test_enable, |
| extended_dynamic_state3_sample_locations_enable: self |
| .extended_dynamic_state3_sample_locations_enable |
| || other.extended_dynamic_state3_sample_locations_enable, |
| extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask |
| || other.extended_dynamic_state3_sample_mask, |
| extended_dynamic_state3_shading_rate_image_enable: self |
| .extended_dynamic_state3_shading_rate_image_enable |
| || other.extended_dynamic_state3_shading_rate_image_enable, |
| extended_dynamic_state3_tessellation_domain_origin: self |
| .extended_dynamic_state3_tessellation_domain_origin |
| || other.extended_dynamic_state3_tessellation_domain_origin, |
| extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle |
| || other.extended_dynamic_state3_viewport_swizzle, |
| extended_dynamic_state3_viewport_w_scaling_enable: self |
| .extended_dynamic_state3_viewport_w_scaling_enable |
| || other.extended_dynamic_state3_viewport_w_scaling_enable, |
| external_memory_rdma: self.external_memory_rdma || other.external_memory_rdma, |
| fill_mode_non_solid: self.fill_mode_non_solid || other.fill_mode_non_solid, |
| format_a4b4g4r4: self.format_a4b4g4r4 || other.format_a4b4g4r4, |
| format_a4r4g4b4: self.format_a4r4g4b4 || other.format_a4r4g4b4, |
| format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler |
| || other.format_rgba10x6_without_y_cb_cr_sampler, |
| fragment_density_map: self.fragment_density_map || other.fragment_density_map, |
| fragment_density_map_deferred: self.fragment_density_map_deferred |
| || other.fragment_density_map_deferred, |
| fragment_density_map_dynamic: self.fragment_density_map_dynamic |
| || other.fragment_density_map_dynamic, |
| fragment_density_map_non_subsampled_images: self |
| .fragment_density_map_non_subsampled_images |
| || other.fragment_density_map_non_subsampled_images, |
| fragment_density_map_offset: self.fragment_density_map_offset |
| || other.fragment_density_map_offset, |
| fragment_shader_barycentric: self.fragment_shader_barycentric |
| || other.fragment_shader_barycentric, |
| fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock |
| || other.fragment_shader_pixel_interlock, |
| fragment_shader_sample_interlock: self.fragment_shader_sample_interlock |
| || other.fragment_shader_sample_interlock, |
| fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock |
| || other.fragment_shader_shading_rate_interlock, |
| fragment_shading_rate_enums: self.fragment_shading_rate_enums |
| || other.fragment_shading_rate_enums, |
| fragment_stores_and_atomics: self.fragment_stores_and_atomics |
| || other.fragment_stores_and_atomics, |
| full_draw_index_uint32: self.full_draw_index_uint32 || other.full_draw_index_uint32, |
| geometry_shader: self.geometry_shader || other.geometry_shader, |
| geometry_streams: self.geometry_streams || other.geometry_streams, |
| global_priority_query: self.global_priority_query || other.global_priority_query, |
| graphics_pipeline_library: self.graphics_pipeline_library |
| || other.graphics_pipeline_library, |
| host_query_reset: self.host_query_reset || other.host_query_reset, |
| image2_d_view_of3_d: self.image2_d_view_of3_d || other.image2_d_view_of3_d, |
| image_compression_control: self.image_compression_control |
| || other.image_compression_control, |
| image_compression_control_swapchain: self.image_compression_control_swapchain |
| || other.image_compression_control_swapchain, |
| image_cube_array: self.image_cube_array || other.image_cube_array, |
| image_footprint: self.image_footprint || other.image_footprint, |
| image_view2_d_on3_d_image: self.image_view2_d_on3_d_image |
| || other.image_view2_d_on3_d_image, |
| image_view_format_reinterpretation: self.image_view_format_reinterpretation |
| || other.image_view_format_reinterpretation, |
| image_view_format_swizzle: self.image_view_format_swizzle |
| || other.image_view_format_swizzle, |
| imageless_framebuffer: self.imageless_framebuffer || other.imageless_framebuffer, |
| independent_blend: self.independent_blend || other.independent_blend, |
| index_type_uint8: self.index_type_uint8 || other.index_type_uint8, |
| indirect_copy: self.indirect_copy || other.indirect_copy, |
| inherited_conditional_rendering: self.inherited_conditional_rendering |
| || other.inherited_conditional_rendering, |
| inherited_queries: self.inherited_queries || other.inherited_queries, |
| inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d |
| || other.inherited_viewport_scissor2_d, |
| inline_uniform_block: self.inline_uniform_block || other.inline_uniform_block, |
| invocation_mask: self.invocation_mask || other.invocation_mask, |
| large_points: self.large_points || other.large_points, |
| legacy_dithering: self.legacy_dithering || other.legacy_dithering, |
| linear_color_attachment: self.linear_color_attachment || other.linear_color_attachment, |
| logic_op: self.logic_op || other.logic_op, |
| maintenance4: self.maintenance4 || other.maintenance4, |
| memory_decompression: self.memory_decompression || other.memory_decompression, |
| memory_priority: self.memory_priority || other.memory_priority, |
| mesh_shader: self.mesh_shader || other.mesh_shader, |
| mesh_shader_queries: self.mesh_shader_queries || other.mesh_shader_queries, |
| micromap: self.micromap || other.micromap, |
| micromap_capture_replay: self.micromap_capture_replay || other.micromap_capture_replay, |
| micromap_host_commands: self.micromap_host_commands || other.micromap_host_commands, |
| min_lod: self.min_lod || other.min_lod, |
| multi_draw: self.multi_draw || other.multi_draw, |
| multi_draw_indirect: self.multi_draw_indirect || other.multi_draw_indirect, |
| multi_viewport: self.multi_viewport || other.multi_viewport, |
| multisample_array_image: self.multisample_array_image || other.multisample_array_image, |
| multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled |
| || other.multisampled_render_to_single_sampled, |
| multiview: self.multiview || other.multiview, |
| multiview_geometry_shader: self.multiview_geometry_shader |
| || other.multiview_geometry_shader, |
| multiview_mesh_shader: self.multiview_mesh_shader || other.multiview_mesh_shader, |
| multiview_per_view_viewports: self.multiview_per_view_viewports |
| || other.multiview_per_view_viewports, |
| multiview_tessellation_shader: self.multiview_tessellation_shader |
| || other.multiview_tessellation_shader, |
| mutable_comparison_samplers: self.mutable_comparison_samplers |
| || other.mutable_comparison_samplers, |
| mutable_descriptor_type: self.mutable_descriptor_type || other.mutable_descriptor_type, |
| no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates |
| || other.no_invocation_fragment_shading_rates, |
| non_seamless_cube_map: self.non_seamless_cube_map || other.non_seamless_cube_map, |
| null_descriptor: self.null_descriptor || other.null_descriptor, |
| occlusion_query_precise: self.occlusion_query_precise || other.occlusion_query_precise, |
| optical_flow: self.optical_flow || other.optical_flow, |
| pageable_device_local_memory: self.pageable_device_local_memory |
| || other.pageable_device_local_memory, |
| performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools |
| || other.performance_counter_multiple_query_pools, |
| performance_counter_query_pools: self.performance_counter_query_pools |
| || other.performance_counter_query_pools, |
| pipeline_creation_cache_control: self.pipeline_creation_cache_control |
| || other.pipeline_creation_cache_control, |
| pipeline_executable_info: self.pipeline_executable_info |
| || other.pipeline_executable_info, |
| pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate |
| || other.pipeline_fragment_shading_rate, |
| pipeline_properties_identifier: self.pipeline_properties_identifier |
| || other.pipeline_properties_identifier, |
| pipeline_protected_access: self.pipeline_protected_access |
| || other.pipeline_protected_access, |
| pipeline_robustness: self.pipeline_robustness || other.pipeline_robustness, |
| pipeline_statistics_query: self.pipeline_statistics_query |
| || other.pipeline_statistics_query, |
| point_polygons: self.point_polygons || other.point_polygons, |
| present_barrier: self.present_barrier || other.present_barrier, |
| present_id: self.present_id || other.present_id, |
| present_wait: self.present_wait || other.present_wait, |
| primitive_fragment_shading_rate: self.primitive_fragment_shading_rate |
| || other.primitive_fragment_shading_rate, |
| primitive_fragment_shading_rate_mesh_shader: self |
| .primitive_fragment_shading_rate_mesh_shader |
| || other.primitive_fragment_shading_rate_mesh_shader, |
| primitive_topology_list_restart: self.primitive_topology_list_restart |
| || other.primitive_topology_list_restart, |
| primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart |
| || other.primitive_topology_patch_list_restart, |
| primitives_generated_query: self.primitives_generated_query |
| || other.primitives_generated_query, |
| primitives_generated_query_with_non_zero_streams: self |
| .primitives_generated_query_with_non_zero_streams |
| || other.primitives_generated_query_with_non_zero_streams, |
| primitives_generated_query_with_rasterizer_discard: self |
| .primitives_generated_query_with_rasterizer_discard |
| || other.primitives_generated_query_with_rasterizer_discard, |
| private_data: self.private_data || other.private_data, |
| protected_memory: self.protected_memory || other.protected_memory, |
| provoking_vertex_last: self.provoking_vertex_last || other.provoking_vertex_last, |
| rasterization_order_color_attachment_access: self |
| .rasterization_order_color_attachment_access |
| || other.rasterization_order_color_attachment_access, |
| rasterization_order_depth_attachment_access: self |
| .rasterization_order_depth_attachment_access |
| || other.rasterization_order_depth_attachment_access, |
| rasterization_order_stencil_attachment_access: self |
| .rasterization_order_stencil_attachment_access |
| || other.rasterization_order_stencil_attachment_access, |
| ray_query: self.ray_query || other.ray_query, |
| ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder |
| || other.ray_tracing_invocation_reorder, |
| ray_tracing_maintenance1: self.ray_tracing_maintenance1 |
| || other.ray_tracing_maintenance1, |
| ray_tracing_motion_blur: self.ray_tracing_motion_blur || other.ray_tracing_motion_blur, |
| ray_tracing_motion_blur_pipeline_trace_rays_indirect: self |
| .ray_tracing_motion_blur_pipeline_trace_rays_indirect |
| || other.ray_tracing_motion_blur_pipeline_trace_rays_indirect, |
| ray_tracing_pipeline: self.ray_tracing_pipeline || other.ray_tracing_pipeline, |
| ray_tracing_pipeline_shader_group_handle_capture_replay: self |
| .ray_tracing_pipeline_shader_group_handle_capture_replay |
| || other.ray_tracing_pipeline_shader_group_handle_capture_replay, |
| ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self |
| .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed |
| || other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed, |
| ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect |
| || other.ray_tracing_pipeline_trace_rays_indirect, |
| ray_tracing_pipeline_trace_rays_indirect2: self |
| .ray_tracing_pipeline_trace_rays_indirect2 |
| || other.ray_tracing_pipeline_trace_rays_indirect2, |
| ray_traversal_primitive_culling: self.ray_traversal_primitive_culling |
| || other.ray_traversal_primitive_culling, |
| rectangular_lines: self.rectangular_lines || other.rectangular_lines, |
| report_address_binding: self.report_address_binding || other.report_address_binding, |
| representative_fragment_test: self.representative_fragment_test |
| || other.representative_fragment_test, |
| robust_buffer_access: self.robust_buffer_access || other.robust_buffer_access, |
| robust_buffer_access2: self.robust_buffer_access2 || other.robust_buffer_access2, |
| robust_image_access: self.robust_image_access || other.robust_image_access, |
| robust_image_access2: self.robust_image_access2 || other.robust_image_access2, |
| runtime_descriptor_array: self.runtime_descriptor_array |
| || other.runtime_descriptor_array, |
| sample_rate_shading: self.sample_rate_shading || other.sample_rate_shading, |
| sampler2_d_view_of3_d: self.sampler2_d_view_of3_d || other.sampler2_d_view_of3_d, |
| sampler_anisotropy: self.sampler_anisotropy || other.sampler_anisotropy, |
| sampler_filter_minmax: self.sampler_filter_minmax || other.sampler_filter_minmax, |
| sampler_mip_lod_bias: self.sampler_mip_lod_bias || other.sampler_mip_lod_bias, |
| sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge |
| || other.sampler_mirror_clamp_to_edge, |
| sampler_ycbcr_conversion: self.sampler_ycbcr_conversion |
| || other.sampler_ycbcr_conversion, |
| scalar_block_layout: self.scalar_block_layout || other.scalar_block_layout, |
| separate_depth_stencil_layouts: self.separate_depth_stencil_layouts |
| || other.separate_depth_stencil_layouts, |
| separate_stencil_mask_ref: self.separate_stencil_mask_ref |
| || other.separate_stencil_mask_ref, |
| shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add |
| || other.shader_buffer_float16_atomic_add, |
| shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max |
| || other.shader_buffer_float16_atomic_min_max, |
| shader_buffer_float16_atomics: self.shader_buffer_float16_atomics |
| || other.shader_buffer_float16_atomics, |
| shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add |
| || other.shader_buffer_float32_atomic_add, |
| shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max |
| || other.shader_buffer_float32_atomic_min_max, |
| shader_buffer_float32_atomics: self.shader_buffer_float32_atomics |
| || other.shader_buffer_float32_atomics, |
| shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add |
| || other.shader_buffer_float64_atomic_add, |
| shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max |
| || other.shader_buffer_float64_atomic_min_max, |
| shader_buffer_float64_atomics: self.shader_buffer_float64_atomics |
| || other.shader_buffer_float64_atomics, |
| shader_buffer_int64_atomics: self.shader_buffer_int64_atomics |
| || other.shader_buffer_int64_atomics, |
| shader_clip_distance: self.shader_clip_distance || other.shader_clip_distance, |
| shader_core_builtins: self.shader_core_builtins || other.shader_core_builtins, |
| shader_cull_distance: self.shader_cull_distance || other.shader_cull_distance, |
| shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation |
| || other.shader_demote_to_helper_invocation, |
| shader_device_clock: self.shader_device_clock || other.shader_device_clock, |
| shader_draw_parameters: self.shader_draw_parameters || other.shader_draw_parameters, |
| shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests |
| || other.shader_early_and_late_fragment_tests, |
| shader_float16: self.shader_float16 || other.shader_float16, |
| shader_float64: self.shader_float64 || other.shader_float64, |
| shader_image_float32_atomic_add: self.shader_image_float32_atomic_add |
| || other.shader_image_float32_atomic_add, |
| shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max |
| || other.shader_image_float32_atomic_min_max, |
| shader_image_float32_atomics: self.shader_image_float32_atomics |
| || other.shader_image_float32_atomics, |
| shader_image_gather_extended: self.shader_image_gather_extended |
| || other.shader_image_gather_extended, |
| shader_image_int64_atomics: self.shader_image_int64_atomics |
| || other.shader_image_int64_atomics, |
| shader_input_attachment_array_dynamic_indexing: self |
| .shader_input_attachment_array_dynamic_indexing |
| || other.shader_input_attachment_array_dynamic_indexing, |
| shader_input_attachment_array_non_uniform_indexing: self |
| .shader_input_attachment_array_non_uniform_indexing |
| || other.shader_input_attachment_array_non_uniform_indexing, |
| shader_int16: self.shader_int16 || other.shader_int16, |
| shader_int64: self.shader_int64 || other.shader_int64, |
| shader_int8: self.shader_int8 || other.shader_int8, |
| shader_integer_dot_product: self.shader_integer_dot_product |
| || other.shader_integer_dot_product, |
| shader_integer_functions2: self.shader_integer_functions2 |
| || other.shader_integer_functions2, |
| shader_module_identifier: self.shader_module_identifier |
| || other.shader_module_identifier, |
| shader_output_layer: self.shader_output_layer || other.shader_output_layer, |
| shader_output_viewport_index: self.shader_output_viewport_index |
| || other.shader_output_viewport_index, |
| shader_resource_min_lod: self.shader_resource_min_lod || other.shader_resource_min_lod, |
| shader_resource_residency: self.shader_resource_residency |
| || other.shader_resource_residency, |
| shader_sample_rate_interpolation_functions: self |
| .shader_sample_rate_interpolation_functions |
| || other.shader_sample_rate_interpolation_functions, |
| shader_sampled_image_array_dynamic_indexing: self |
| .shader_sampled_image_array_dynamic_indexing |
| || other.shader_sampled_image_array_dynamic_indexing, |
| shader_sampled_image_array_non_uniform_indexing: self |
| .shader_sampled_image_array_non_uniform_indexing |
| || other.shader_sampled_image_array_non_uniform_indexing, |
| shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add |
| || other.shader_shared_float16_atomic_add, |
| shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max |
| || other.shader_shared_float16_atomic_min_max, |
| shader_shared_float16_atomics: self.shader_shared_float16_atomics |
| || other.shader_shared_float16_atomics, |
| shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add |
| || other.shader_shared_float32_atomic_add, |
| shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max |
| || other.shader_shared_float32_atomic_min_max, |
| shader_shared_float32_atomics: self.shader_shared_float32_atomics |
| || other.shader_shared_float32_atomics, |
| shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add |
| || other.shader_shared_float64_atomic_add, |
| shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max |
| || other.shader_shared_float64_atomic_min_max, |
| shader_shared_float64_atomics: self.shader_shared_float64_atomics |
| || other.shader_shared_float64_atomics, |
| shader_shared_int64_atomics: self.shader_shared_int64_atomics |
| || other.shader_shared_int64_atomics, |
| shader_sm_builtins: self.shader_sm_builtins || other.shader_sm_builtins, |
| shader_storage_buffer_array_dynamic_indexing: self |
| .shader_storage_buffer_array_dynamic_indexing |
| || other.shader_storage_buffer_array_dynamic_indexing, |
| shader_storage_buffer_array_non_uniform_indexing: self |
| .shader_storage_buffer_array_non_uniform_indexing |
| || other.shader_storage_buffer_array_non_uniform_indexing, |
| shader_storage_image_array_dynamic_indexing: self |
| .shader_storage_image_array_dynamic_indexing |
| || other.shader_storage_image_array_dynamic_indexing, |
| shader_storage_image_array_non_uniform_indexing: self |
| .shader_storage_image_array_non_uniform_indexing |
| || other.shader_storage_image_array_non_uniform_indexing, |
| shader_storage_image_extended_formats: self.shader_storage_image_extended_formats |
| || other.shader_storage_image_extended_formats, |
| shader_storage_image_multisample: self.shader_storage_image_multisample |
| || other.shader_storage_image_multisample, |
| shader_storage_image_read_without_format: self.shader_storage_image_read_without_format |
| || other.shader_storage_image_read_without_format, |
| shader_storage_image_write_without_format: self |
| .shader_storage_image_write_without_format |
| || other.shader_storage_image_write_without_format, |
| shader_storage_texel_buffer_array_dynamic_indexing: self |
| .shader_storage_texel_buffer_array_dynamic_indexing |
| || other.shader_storage_texel_buffer_array_dynamic_indexing, |
| shader_storage_texel_buffer_array_non_uniform_indexing: self |
| .shader_storage_texel_buffer_array_non_uniform_indexing |
| || other.shader_storage_texel_buffer_array_non_uniform_indexing, |
| shader_subgroup_clock: self.shader_subgroup_clock || other.shader_subgroup_clock, |
| shader_subgroup_extended_types: self.shader_subgroup_extended_types |
| || other.shader_subgroup_extended_types, |
| shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow |
| || other.shader_subgroup_uniform_control_flow, |
| shader_terminate_invocation: self.shader_terminate_invocation |
| || other.shader_terminate_invocation, |
| shader_tessellation_and_geometry_point_size: self |
| .shader_tessellation_and_geometry_point_size |
| || other.shader_tessellation_and_geometry_point_size, |
| shader_uniform_buffer_array_dynamic_indexing: self |
| .shader_uniform_buffer_array_dynamic_indexing |
| || other.shader_uniform_buffer_array_dynamic_indexing, |
| shader_uniform_buffer_array_non_uniform_indexing: self |
| .shader_uniform_buffer_array_non_uniform_indexing |
| || other.shader_uniform_buffer_array_non_uniform_indexing, |
| shader_uniform_texel_buffer_array_dynamic_indexing: self |
| .shader_uniform_texel_buffer_array_dynamic_indexing |
| || other.shader_uniform_texel_buffer_array_dynamic_indexing, |
| shader_uniform_texel_buffer_array_non_uniform_indexing: self |
| .shader_uniform_texel_buffer_array_non_uniform_indexing |
| || other.shader_uniform_texel_buffer_array_non_uniform_indexing, |
| shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory |
| || other.shader_zero_initialize_workgroup_memory, |
| shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order |
| || other.shading_rate_coarse_sample_order, |
| shading_rate_image: self.shading_rate_image || other.shading_rate_image, |
| smooth_lines: self.smooth_lines || other.smooth_lines, |
| sparse_binding: self.sparse_binding || other.sparse_binding, |
| sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add |
| || other.sparse_image_float32_atomic_add, |
| sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max |
| || other.sparse_image_float32_atomic_min_max, |
| sparse_image_float32_atomics: self.sparse_image_float32_atomics |
| || other.sparse_image_float32_atomics, |
| sparse_image_int64_atomics: self.sparse_image_int64_atomics |
| || other.sparse_image_int64_atomics, |
| sparse_residency16_samples: self.sparse_residency16_samples |
| || other.sparse_residency16_samples, |
| sparse_residency2_samples: self.sparse_residency2_samples |
| || other.sparse_residency2_samples, |
| sparse_residency4_samples: self.sparse_residency4_samples |
| || other.sparse_residency4_samples, |
| sparse_residency8_samples: self.sparse_residency8_samples |
| || other.sparse_residency8_samples, |
| sparse_residency_aliased: self.sparse_residency_aliased |
| || other.sparse_residency_aliased, |
| sparse_residency_buffer: self.sparse_residency_buffer || other.sparse_residency_buffer, |
| sparse_residency_image2_d: self.sparse_residency_image2_d |
| || other.sparse_residency_image2_d, |
| sparse_residency_image3_d: self.sparse_residency_image3_d |
| || other.sparse_residency_image3_d, |
| stippled_bresenham_lines: self.stippled_bresenham_lines |
| || other.stippled_bresenham_lines, |
| stippled_rectangular_lines: self.stippled_rectangular_lines |
| || other.stippled_rectangular_lines, |
| stippled_smooth_lines: self.stippled_smooth_lines || other.stippled_smooth_lines, |
| storage_buffer16_bit_access: self.storage_buffer16_bit_access |
| || other.storage_buffer16_bit_access, |
| storage_buffer8_bit_access: self.storage_buffer8_bit_access |
| || other.storage_buffer8_bit_access, |
| storage_input_output16: self.storage_input_output16 || other.storage_input_output16, |
| storage_push_constant16: self.storage_push_constant16 || other.storage_push_constant16, |
| storage_push_constant8: self.storage_push_constant8 || other.storage_push_constant8, |
| subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id |
| || other.subgroup_broadcast_dynamic_id, |
| subgroup_size_control: self.subgroup_size_control || other.subgroup_size_control, |
| subpass_merge_feedback: self.subpass_merge_feedback || other.subpass_merge_feedback, |
| subpass_shading: self.subpass_shading || other.subpass_shading, |
| supersample_fragment_shading_rates: self.supersample_fragment_shading_rates |
| || other.supersample_fragment_shading_rates, |
| swapchain_maintenance1: self.swapchain_maintenance1 || other.swapchain_maintenance1, |
| synchronization2: self.synchronization2 || other.synchronization2, |
| task_shader: self.task_shader || other.task_shader, |
| tessellation_isolines: self.tessellation_isolines || other.tessellation_isolines, |
| tessellation_point_mode: self.tessellation_point_mode || other.tessellation_point_mode, |
| tessellation_shader: self.tessellation_shader || other.tessellation_shader, |
| texel_buffer_alignment: self.texel_buffer_alignment || other.texel_buffer_alignment, |
| texture_block_match: self.texture_block_match || other.texture_block_match, |
| texture_box_filter: self.texture_box_filter || other.texture_box_filter, |
| texture_compression_astc_hdr: self.texture_compression_astc_hdr |
| || other.texture_compression_astc_hdr, |
| texture_compression_astc_ldr: self.texture_compression_astc_ldr |
| || other.texture_compression_astc_ldr, |
| texture_compression_bc: self.texture_compression_bc || other.texture_compression_bc, |
| texture_compression_etc2: self.texture_compression_etc2 |
| || other.texture_compression_etc2, |
| texture_sample_weighted: self.texture_sample_weighted || other.texture_sample_weighted, |
| tile_properties: self.tile_properties || other.tile_properties, |
| timeline_semaphore: self.timeline_semaphore || other.timeline_semaphore, |
| transform_feedback: self.transform_feedback || other.transform_feedback, |
| transform_feedback_preserves_provoking_vertex: self |
| .transform_feedback_preserves_provoking_vertex |
| || other.transform_feedback_preserves_provoking_vertex, |
| triangle_fans: self.triangle_fans || other.triangle_fans, |
| uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access |
| || other.uniform_and_storage_buffer16_bit_access, |
| uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access |
| || other.uniform_and_storage_buffer8_bit_access, |
| uniform_buffer_standard_layout: self.uniform_buffer_standard_layout |
| || other.uniform_buffer_standard_layout, |
| variable_multisample_rate: self.variable_multisample_rate |
| || other.variable_multisample_rate, |
| variable_pointers: self.variable_pointers || other.variable_pointers, |
| variable_pointers_storage_buffer: self.variable_pointers_storage_buffer |
| || other.variable_pointers_storage_buffer, |
| vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride |
| || other.vertex_attribute_access_beyond_stride, |
| vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor |
| || other.vertex_attribute_instance_rate_divisor, |
| vertex_attribute_instance_rate_zero_divisor: self |
| .vertex_attribute_instance_rate_zero_divisor |
| || other.vertex_attribute_instance_rate_zero_divisor, |
| vertex_input_dynamic_state: self.vertex_input_dynamic_state |
| || other.vertex_input_dynamic_state, |
| vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics |
| || other.vertex_pipeline_stores_and_atomics, |
| vulkan_memory_model: self.vulkan_memory_model || other.vulkan_memory_model, |
| vulkan_memory_model_availability_visibility_chains: self |
| .vulkan_memory_model_availability_visibility_chains |
| || other.vulkan_memory_model_availability_visibility_chains, |
| vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope |
| || other.vulkan_memory_model_device_scope, |
| wide_lines: self.wide_lines || other.wide_lines, |
| workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout |
| || other.workgroup_memory_explicit_layout, |
| workgroup_memory_explicit_layout16_bit_access: self |
| .workgroup_memory_explicit_layout16_bit_access |
| || other.workgroup_memory_explicit_layout16_bit_access, |
| workgroup_memory_explicit_layout8_bit_access: self |
| .workgroup_memory_explicit_layout8_bit_access |
| || other.workgroup_memory_explicit_layout8_bit_access, |
| workgroup_memory_explicit_layout_scalar_block_layout: self |
| .workgroup_memory_explicit_layout_scalar_block_layout |
| || other.workgroup_memory_explicit_layout_scalar_block_layout, |
| ycbcr2plane444_formats: self.ycbcr2plane444_formats || other.ycbcr2plane444_formats, |
| ycbcr_image_arrays: self.ycbcr_image_arrays || other.ycbcr_image_arrays, |
| _ne: crate::NonExhaustive(()), |
| } |
| } |
| #[doc = r" Returns the intersection of `self` and `other`."] |
| #[inline] |
| pub const fn intersection(&self, other: &Self) -> Self { |
| Self { |
| acceleration_structure: self.acceleration_structure && other.acceleration_structure, |
| acceleration_structure_capture_replay: self.acceleration_structure_capture_replay |
| && other.acceleration_structure_capture_replay, |
| acceleration_structure_host_commands: self.acceleration_structure_host_commands |
| && other.acceleration_structure_host_commands, |
| acceleration_structure_indirect_build: self.acceleration_structure_indirect_build |
| && other.acceleration_structure_indirect_build, |
| advanced_blend_coherent_operations: self.advanced_blend_coherent_operations |
| && other.advanced_blend_coherent_operations, |
| alpha_to_one: self.alpha_to_one && other.alpha_to_one, |
| amigo_profiling: self.amigo_profiling && other.amigo_profiling, |
| attachment_feedback_loop_layout: self.attachment_feedback_loop_layout |
| && other.attachment_feedback_loop_layout, |
| attachment_fragment_shading_rate: self.attachment_fragment_shading_rate |
| && other.attachment_fragment_shading_rate, |
| border_color_swizzle: self.border_color_swizzle && other.border_color_swizzle, |
| border_color_swizzle_from_image: self.border_color_swizzle_from_image |
| && other.border_color_swizzle_from_image, |
| bresenham_lines: self.bresenham_lines && other.bresenham_lines, |
| buffer_device_address: self.buffer_device_address && other.buffer_device_address, |
| buffer_device_address_capture_replay: self.buffer_device_address_capture_replay |
| && other.buffer_device_address_capture_replay, |
| buffer_device_address_multi_device: self.buffer_device_address_multi_device |
| && other.buffer_device_address_multi_device, |
| color_write_enable: self.color_write_enable && other.color_write_enable, |
| compute_derivative_group_linear: self.compute_derivative_group_linear |
| && other.compute_derivative_group_linear, |
| compute_derivative_group_quads: self.compute_derivative_group_quads |
| && other.compute_derivative_group_quads, |
| compute_full_subgroups: self.compute_full_subgroups && other.compute_full_subgroups, |
| conditional_rendering: self.conditional_rendering && other.conditional_rendering, |
| constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors |
| && other.constant_alpha_color_blend_factors, |
| cooperative_matrix: self.cooperative_matrix && other.cooperative_matrix, |
| cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access |
| && other.cooperative_matrix_robust_buffer_access, |
| corner_sampled_image: self.corner_sampled_image && other.corner_sampled_image, |
| coverage_reduction_mode: self.coverage_reduction_mode && other.coverage_reduction_mode, |
| custom_border_color_without_format: self.custom_border_color_without_format |
| && other.custom_border_color_without_format, |
| custom_border_colors: self.custom_border_colors && other.custom_border_colors, |
| decode_mode_shared_exponent: self.decode_mode_shared_exponent |
| && other.decode_mode_shared_exponent, |
| dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing |
| && other.dedicated_allocation_image_aliasing, |
| depth_bias_clamp: self.depth_bias_clamp && other.depth_bias_clamp, |
| depth_bounds: self.depth_bounds && other.depth_bounds, |
| depth_clamp: self.depth_clamp && other.depth_clamp, |
| depth_clamp_zero_one: self.depth_clamp_zero_one && other.depth_clamp_zero_one, |
| depth_clip_control: self.depth_clip_control && other.depth_clip_control, |
| depth_clip_enable: self.depth_clip_enable && other.depth_clip_enable, |
| descriptor_binding_acceleration_structure_update_after_bind: self |
| .descriptor_binding_acceleration_structure_update_after_bind |
| && other.descriptor_binding_acceleration_structure_update_after_bind, |
| descriptor_binding_inline_uniform_block_update_after_bind: self |
| .descriptor_binding_inline_uniform_block_update_after_bind |
| && other.descriptor_binding_inline_uniform_block_update_after_bind, |
| descriptor_binding_partially_bound: self.descriptor_binding_partially_bound |
| && other.descriptor_binding_partially_bound, |
| descriptor_binding_sampled_image_update_after_bind: self |
| .descriptor_binding_sampled_image_update_after_bind |
| && other.descriptor_binding_sampled_image_update_after_bind, |
| descriptor_binding_storage_buffer_update_after_bind: self |
| .descriptor_binding_storage_buffer_update_after_bind |
| && other.descriptor_binding_storage_buffer_update_after_bind, |
| descriptor_binding_storage_image_update_after_bind: self |
| .descriptor_binding_storage_image_update_after_bind |
| && other.descriptor_binding_storage_image_update_after_bind, |
| descriptor_binding_storage_texel_buffer_update_after_bind: self |
| .descriptor_binding_storage_texel_buffer_update_after_bind |
| && other.descriptor_binding_storage_texel_buffer_update_after_bind, |
| descriptor_binding_uniform_buffer_update_after_bind: self |
| .descriptor_binding_uniform_buffer_update_after_bind |
| && other.descriptor_binding_uniform_buffer_update_after_bind, |
| descriptor_binding_uniform_texel_buffer_update_after_bind: self |
| .descriptor_binding_uniform_texel_buffer_update_after_bind |
| && other.descriptor_binding_uniform_texel_buffer_update_after_bind, |
| descriptor_binding_update_unused_while_pending: self |
| .descriptor_binding_update_unused_while_pending |
| && other.descriptor_binding_update_unused_while_pending, |
| descriptor_binding_variable_descriptor_count: self |
| .descriptor_binding_variable_descriptor_count |
| && other.descriptor_binding_variable_descriptor_count, |
| descriptor_buffer: self.descriptor_buffer && other.descriptor_buffer, |
| descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay |
| && other.descriptor_buffer_capture_replay, |
| descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored |
| && other.descriptor_buffer_image_layout_ignored, |
| descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors |
| && other.descriptor_buffer_push_descriptors, |
| descriptor_indexing: self.descriptor_indexing && other.descriptor_indexing, |
| descriptor_set_host_mapping: self.descriptor_set_host_mapping |
| && other.descriptor_set_host_mapping, |
| device_coherent_memory: self.device_coherent_memory && other.device_coherent_memory, |
| device_fault: self.device_fault && other.device_fault, |
| device_fault_vendor_binary: self.device_fault_vendor_binary |
| && other.device_fault_vendor_binary, |
| device_generated_commands: self.device_generated_commands |
| && other.device_generated_commands, |
| device_memory_report: self.device_memory_report && other.device_memory_report, |
| diagnostics_config: self.diagnostics_config && other.diagnostics_config, |
| draw_indirect_count: self.draw_indirect_count && other.draw_indirect_count, |
| draw_indirect_first_instance: self.draw_indirect_first_instance |
| && other.draw_indirect_first_instance, |
| dual_src_blend: self.dual_src_blend && other.dual_src_blend, |
| dynamic_rendering: self.dynamic_rendering && other.dynamic_rendering, |
| events: self.events && other.events, |
| exclusive_scissor: self.exclusive_scissor && other.exclusive_scissor, |
| extended_dynamic_state: self.extended_dynamic_state && other.extended_dynamic_state, |
| extended_dynamic_state2: self.extended_dynamic_state2 && other.extended_dynamic_state2, |
| extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op |
| && other.extended_dynamic_state2_logic_op, |
| extended_dynamic_state2_patch_control_points: self |
| .extended_dynamic_state2_patch_control_points |
| && other.extended_dynamic_state2_patch_control_points, |
| extended_dynamic_state3_alpha_to_coverage_enable: self |
| .extended_dynamic_state3_alpha_to_coverage_enable |
| && other.extended_dynamic_state3_alpha_to_coverage_enable, |
| extended_dynamic_state3_alpha_to_one_enable: self |
| .extended_dynamic_state3_alpha_to_one_enable |
| && other.extended_dynamic_state3_alpha_to_one_enable, |
| extended_dynamic_state3_color_blend_advanced: self |
| .extended_dynamic_state3_color_blend_advanced |
| && other.extended_dynamic_state3_color_blend_advanced, |
| extended_dynamic_state3_color_blend_enable: self |
| .extended_dynamic_state3_color_blend_enable |
| && other.extended_dynamic_state3_color_blend_enable, |
| extended_dynamic_state3_color_blend_equation: self |
| .extended_dynamic_state3_color_blend_equation |
| && other.extended_dynamic_state3_color_blend_equation, |
| extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask |
| && other.extended_dynamic_state3_color_write_mask, |
| extended_dynamic_state3_conservative_rasterization_mode: self |
| .extended_dynamic_state3_conservative_rasterization_mode |
| && other.extended_dynamic_state3_conservative_rasterization_mode, |
| extended_dynamic_state3_coverage_modulation_mode: self |
| .extended_dynamic_state3_coverage_modulation_mode |
| && other.extended_dynamic_state3_coverage_modulation_mode, |
| extended_dynamic_state3_coverage_modulation_table: self |
| .extended_dynamic_state3_coverage_modulation_table |
| && other.extended_dynamic_state3_coverage_modulation_table, |
| extended_dynamic_state3_coverage_modulation_table_enable: self |
| .extended_dynamic_state3_coverage_modulation_table_enable |
| && other.extended_dynamic_state3_coverage_modulation_table_enable, |
| extended_dynamic_state3_coverage_reduction_mode: self |
| .extended_dynamic_state3_coverage_reduction_mode |
| && other.extended_dynamic_state3_coverage_reduction_mode, |
| extended_dynamic_state3_coverage_to_color_enable: self |
| .extended_dynamic_state3_coverage_to_color_enable |
| && other.extended_dynamic_state3_coverage_to_color_enable, |
| extended_dynamic_state3_coverage_to_color_location: self |
| .extended_dynamic_state3_coverage_to_color_location |
| && other.extended_dynamic_state3_coverage_to_color_location, |
| extended_dynamic_state3_depth_clamp_enable: self |
| .extended_dynamic_state3_depth_clamp_enable |
| && other.extended_dynamic_state3_depth_clamp_enable, |
| extended_dynamic_state3_depth_clip_enable: self |
| .extended_dynamic_state3_depth_clip_enable |
| && other.extended_dynamic_state3_depth_clip_enable, |
| extended_dynamic_state3_depth_clip_negative_one_to_one: self |
| .extended_dynamic_state3_depth_clip_negative_one_to_one |
| && other.extended_dynamic_state3_depth_clip_negative_one_to_one, |
| extended_dynamic_state3_extra_primitive_overestimation_size: self |
| .extended_dynamic_state3_extra_primitive_overestimation_size |
| && other.extended_dynamic_state3_extra_primitive_overestimation_size, |
| extended_dynamic_state3_line_rasterization_mode: self |
| .extended_dynamic_state3_line_rasterization_mode |
| && other.extended_dynamic_state3_line_rasterization_mode, |
| extended_dynamic_state3_line_stipple_enable: self |
| .extended_dynamic_state3_line_stipple_enable |
| && other.extended_dynamic_state3_line_stipple_enable, |
| extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable |
| && other.extended_dynamic_state3_logic_op_enable, |
| extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode |
| && other.extended_dynamic_state3_polygon_mode, |
| extended_dynamic_state3_provoking_vertex_mode: self |
| .extended_dynamic_state3_provoking_vertex_mode |
| && other.extended_dynamic_state3_provoking_vertex_mode, |
| extended_dynamic_state3_rasterization_samples: self |
| .extended_dynamic_state3_rasterization_samples |
| && other.extended_dynamic_state3_rasterization_samples, |
| extended_dynamic_state3_rasterization_stream: self |
| .extended_dynamic_state3_rasterization_stream |
| && other.extended_dynamic_state3_rasterization_stream, |
| extended_dynamic_state3_representative_fragment_test_enable: self |
| .extended_dynamic_state3_representative_fragment_test_enable |
| && other.extended_dynamic_state3_representative_fragment_test_enable, |
| extended_dynamic_state3_sample_locations_enable: self |
| .extended_dynamic_state3_sample_locations_enable |
| && other.extended_dynamic_state3_sample_locations_enable, |
| extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask |
| && other.extended_dynamic_state3_sample_mask, |
| extended_dynamic_state3_shading_rate_image_enable: self |
| .extended_dynamic_state3_shading_rate_image_enable |
| && other.extended_dynamic_state3_shading_rate_image_enable, |
| extended_dynamic_state3_tessellation_domain_origin: self |
| .extended_dynamic_state3_tessellation_domain_origin |
| && other.extended_dynamic_state3_tessellation_domain_origin, |
| extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle |
| && other.extended_dynamic_state3_viewport_swizzle, |
| extended_dynamic_state3_viewport_w_scaling_enable: self |
| .extended_dynamic_state3_viewport_w_scaling_enable |
| && other.extended_dynamic_state3_viewport_w_scaling_enable, |
| external_memory_rdma: self.external_memory_rdma && other.external_memory_rdma, |
| fill_mode_non_solid: self.fill_mode_non_solid && other.fill_mode_non_solid, |
| format_a4b4g4r4: self.format_a4b4g4r4 && other.format_a4b4g4r4, |
| format_a4r4g4b4: self.format_a4r4g4b4 && other.format_a4r4g4b4, |
| format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler |
| && other.format_rgba10x6_without_y_cb_cr_sampler, |
| fragment_density_map: self.fragment_density_map && other.fragment_density_map, |
| fragment_density_map_deferred: self.fragment_density_map_deferred |
| && other.fragment_density_map_deferred, |
| fragment_density_map_dynamic: self.fragment_density_map_dynamic |
| && other.fragment_density_map_dynamic, |
| fragment_density_map_non_subsampled_images: self |
| .fragment_density_map_non_subsampled_images |
| && other.fragment_density_map_non_subsampled_images, |
| fragment_density_map_offset: self.fragment_density_map_offset |
| && other.fragment_density_map_offset, |
| fragment_shader_barycentric: self.fragment_shader_barycentric |
| && other.fragment_shader_barycentric, |
| fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock |
| && other.fragment_shader_pixel_interlock, |
| fragment_shader_sample_interlock: self.fragment_shader_sample_interlock |
| && other.fragment_shader_sample_interlock, |
| fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock |
| && other.fragment_shader_shading_rate_interlock, |
| fragment_shading_rate_enums: self.fragment_shading_rate_enums |
| && other.fragment_shading_rate_enums, |
| fragment_stores_and_atomics: self.fragment_stores_and_atomics |
| && other.fragment_stores_and_atomics, |
| full_draw_index_uint32: self.full_draw_index_uint32 && other.full_draw_index_uint32, |
| geometry_shader: self.geometry_shader && other.geometry_shader, |
| geometry_streams: self.geometry_streams && other.geometry_streams, |
| global_priority_query: self.global_priority_query && other.global_priority_query, |
| graphics_pipeline_library: self.graphics_pipeline_library |
| && other.graphics_pipeline_library, |
| host_query_reset: self.host_query_reset && other.host_query_reset, |
| image2_d_view_of3_d: self.image2_d_view_of3_d && other.image2_d_view_of3_d, |
| image_compression_control: self.image_compression_control |
| && other.image_compression_control, |
| image_compression_control_swapchain: self.image_compression_control_swapchain |
| && other.image_compression_control_swapchain, |
| image_cube_array: self.image_cube_array && other.image_cube_array, |
| image_footprint: self.image_footprint && other.image_footprint, |
| image_view2_d_on3_d_image: self.image_view2_d_on3_d_image |
| && other.image_view2_d_on3_d_image, |
| image_view_format_reinterpretation: self.image_view_format_reinterpretation |
| && other.image_view_format_reinterpretation, |
| image_view_format_swizzle: self.image_view_format_swizzle |
| && other.image_view_format_swizzle, |
| imageless_framebuffer: self.imageless_framebuffer && other.imageless_framebuffer, |
| independent_blend: self.independent_blend && other.independent_blend, |
| index_type_uint8: self.index_type_uint8 && other.index_type_uint8, |
| indirect_copy: self.indirect_copy && other.indirect_copy, |
| inherited_conditional_rendering: self.inherited_conditional_rendering |
| && other.inherited_conditional_rendering, |
| inherited_queries: self.inherited_queries && other.inherited_queries, |
| inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d |
| && other.inherited_viewport_scissor2_d, |
| inline_uniform_block: self.inline_uniform_block && other.inline_uniform_block, |
| invocation_mask: self.invocation_mask && other.invocation_mask, |
| large_points: self.large_points && other.large_points, |
| legacy_dithering: self.legacy_dithering && other.legacy_dithering, |
| linear_color_attachment: self.linear_color_attachment && other.linear_color_attachment, |
| logic_op: self.logic_op && other.logic_op, |
| maintenance4: self.maintenance4 && other.maintenance4, |
| memory_decompression: self.memory_decompression && other.memory_decompression, |
| memory_priority: self.memory_priority && other.memory_priority, |
| mesh_shader: self.mesh_shader && other.mesh_shader, |
| mesh_shader_queries: self.mesh_shader_queries && other.mesh_shader_queries, |
| micromap: self.micromap && other.micromap, |
| micromap_capture_replay: self.micromap_capture_replay && other.micromap_capture_replay, |
| micromap_host_commands: self.micromap_host_commands && other.micromap_host_commands, |
| min_lod: self.min_lod && other.min_lod, |
| multi_draw: self.multi_draw && other.multi_draw, |
| multi_draw_indirect: self.multi_draw_indirect && other.multi_draw_indirect, |
| multi_viewport: self.multi_viewport && other.multi_viewport, |
| multisample_array_image: self.multisample_array_image && other.multisample_array_image, |
| multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled |
| && other.multisampled_render_to_single_sampled, |
| multiview: self.multiview && other.multiview, |
| multiview_geometry_shader: self.multiview_geometry_shader |
| && other.multiview_geometry_shader, |
| multiview_mesh_shader: self.multiview_mesh_shader && other.multiview_mesh_shader, |
| multiview_per_view_viewports: self.multiview_per_view_viewports |
| && other.multiview_per_view_viewports, |
| multiview_tessellation_shader: self.multiview_tessellation_shader |
| && other.multiview_tessellation_shader, |
| mutable_comparison_samplers: self.mutable_comparison_samplers |
| && other.mutable_comparison_samplers, |
| mutable_descriptor_type: self.mutable_descriptor_type && other.mutable_descriptor_type, |
| no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates |
| && other.no_invocation_fragment_shading_rates, |
| non_seamless_cube_map: self.non_seamless_cube_map && other.non_seamless_cube_map, |
| null_descriptor: self.null_descriptor && other.null_descriptor, |
| occlusion_query_precise: self.occlusion_query_precise && other.occlusion_query_precise, |
| optical_flow: self.optical_flow && other.optical_flow, |
| pageable_device_local_memory: self.pageable_device_local_memory |
| && other.pageable_device_local_memory, |
| performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools |
| && other.performance_counter_multiple_query_pools, |
| performance_counter_query_pools: self.performance_counter_query_pools |
| && other.performance_counter_query_pools, |
| pipeline_creation_cache_control: self.pipeline_creation_cache_control |
| && other.pipeline_creation_cache_control, |
| pipeline_executable_info: self.pipeline_executable_info |
| && other.pipeline_executable_info, |
| pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate |
| && other.pipeline_fragment_shading_rate, |
| pipeline_properties_identifier: self.pipeline_properties_identifier |
| && other.pipeline_properties_identifier, |
| pipeline_protected_access: self.pipeline_protected_access |
| && other.pipeline_protected_access, |
| pipeline_robustness: self.pipeline_robustness && other.pipeline_robustness, |
| pipeline_statistics_query: self.pipeline_statistics_query |
| && other.pipeline_statistics_query, |
| point_polygons: self.point_polygons && other.point_polygons, |
| present_barrier: self.present_barrier && other.present_barrier, |
| present_id: self.present_id && other.present_id, |
| present_wait: self.present_wait && other.present_wait, |
| primitive_fragment_shading_rate: self.primitive_fragment_shading_rate |
| && other.primitive_fragment_shading_rate, |
| primitive_fragment_shading_rate_mesh_shader: self |
| .primitive_fragment_shading_rate_mesh_shader |
| && other.primitive_fragment_shading_rate_mesh_shader, |
| primitive_topology_list_restart: self.primitive_topology_list_restart |
| && other.primitive_topology_list_restart, |
| primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart |
| && other.primitive_topology_patch_list_restart, |
| primitives_generated_query: self.primitives_generated_query |
| && other.primitives_generated_query, |
| primitives_generated_query_with_non_zero_streams: self |
| .primitives_generated_query_with_non_zero_streams |
| && other.primitives_generated_query_with_non_zero_streams, |
| primitives_generated_query_with_rasterizer_discard: self |
| .primitives_generated_query_with_rasterizer_discard |
| && other.primitives_generated_query_with_rasterizer_discard, |
| private_data: self.private_data && other.private_data, |
| protected_memory: self.protected_memory && other.protected_memory, |
| provoking_vertex_last: self.provoking_vertex_last && other.provoking_vertex_last, |
| rasterization_order_color_attachment_access: self |
| .rasterization_order_color_attachment_access |
| && other.rasterization_order_color_attachment_access, |
| rasterization_order_depth_attachment_access: self |
| .rasterization_order_depth_attachment_access |
| && other.rasterization_order_depth_attachment_access, |
| rasterization_order_stencil_attachment_access: self |
| .rasterization_order_stencil_attachment_access |
| && other.rasterization_order_stencil_attachment_access, |
| ray_query: self.ray_query && other.ray_query, |
| ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder |
| && other.ray_tracing_invocation_reorder, |
| ray_tracing_maintenance1: self.ray_tracing_maintenance1 |
| && other.ray_tracing_maintenance1, |
| ray_tracing_motion_blur: self.ray_tracing_motion_blur && other.ray_tracing_motion_blur, |
| ray_tracing_motion_blur_pipeline_trace_rays_indirect: self |
| .ray_tracing_motion_blur_pipeline_trace_rays_indirect |
| && other.ray_tracing_motion_blur_pipeline_trace_rays_indirect, |
| ray_tracing_pipeline: self.ray_tracing_pipeline && other.ray_tracing_pipeline, |
| ray_tracing_pipeline_shader_group_handle_capture_replay: self |
| .ray_tracing_pipeline_shader_group_handle_capture_replay |
| && other.ray_tracing_pipeline_shader_group_handle_capture_replay, |
| ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self |
| .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed |
| && other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed, |
| ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect |
| && other.ray_tracing_pipeline_trace_rays_indirect, |
| ray_tracing_pipeline_trace_rays_indirect2: self |
| .ray_tracing_pipeline_trace_rays_indirect2 |
| && other.ray_tracing_pipeline_trace_rays_indirect2, |
| ray_traversal_primitive_culling: self.ray_traversal_primitive_culling |
| && other.ray_traversal_primitive_culling, |
| rectangular_lines: self.rectangular_lines && other.rectangular_lines, |
| report_address_binding: self.report_address_binding && other.report_address_binding, |
| representative_fragment_test: self.representative_fragment_test |
| && other.representative_fragment_test, |
| robust_buffer_access: self.robust_buffer_access && other.robust_buffer_access, |
| robust_buffer_access2: self.robust_buffer_access2 && other.robust_buffer_access2, |
| robust_image_access: self.robust_image_access && other.robust_image_access, |
| robust_image_access2: self.robust_image_access2 && other.robust_image_access2, |
| runtime_descriptor_array: self.runtime_descriptor_array |
| && other.runtime_descriptor_array, |
| sample_rate_shading: self.sample_rate_shading && other.sample_rate_shading, |
| sampler2_d_view_of3_d: self.sampler2_d_view_of3_d && other.sampler2_d_view_of3_d, |
| sampler_anisotropy: self.sampler_anisotropy && other.sampler_anisotropy, |
| sampler_filter_minmax: self.sampler_filter_minmax && other.sampler_filter_minmax, |
| sampler_mip_lod_bias: self.sampler_mip_lod_bias && other.sampler_mip_lod_bias, |
| sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge |
| && other.sampler_mirror_clamp_to_edge, |
| sampler_ycbcr_conversion: self.sampler_ycbcr_conversion |
| && other.sampler_ycbcr_conversion, |
| scalar_block_layout: self.scalar_block_layout && other.scalar_block_layout, |
| separate_depth_stencil_layouts: self.separate_depth_stencil_layouts |
| && other.separate_depth_stencil_layouts, |
| separate_stencil_mask_ref: self.separate_stencil_mask_ref |
| && other.separate_stencil_mask_ref, |
| shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add |
| && other.shader_buffer_float16_atomic_add, |
| shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max |
| && other.shader_buffer_float16_atomic_min_max, |
| shader_buffer_float16_atomics: self.shader_buffer_float16_atomics |
| && other.shader_buffer_float16_atomics, |
| shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add |
| && other.shader_buffer_float32_atomic_add, |
| shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max |
| && other.shader_buffer_float32_atomic_min_max, |
| shader_buffer_float32_atomics: self.shader_buffer_float32_atomics |
| && other.shader_buffer_float32_atomics, |
| shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add |
| && other.shader_buffer_float64_atomic_add, |
| shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max |
| && other.shader_buffer_float64_atomic_min_max, |
| shader_buffer_float64_atomics: self.shader_buffer_float64_atomics |
| && other.shader_buffer_float64_atomics, |
| shader_buffer_int64_atomics: self.shader_buffer_int64_atomics |
| && other.shader_buffer_int64_atomics, |
| shader_clip_distance: self.shader_clip_distance && other.shader_clip_distance, |
| shader_core_builtins: self.shader_core_builtins && other.shader_core_builtins, |
| shader_cull_distance: self.shader_cull_distance && other.shader_cull_distance, |
| shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation |
| && other.shader_demote_to_helper_invocation, |
| shader_device_clock: self.shader_device_clock && other.shader_device_clock, |
| shader_draw_parameters: self.shader_draw_parameters && other.shader_draw_parameters, |
| shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests |
| && other.shader_early_and_late_fragment_tests, |
| shader_float16: self.shader_float16 && other.shader_float16, |
| shader_float64: self.shader_float64 && other.shader_float64, |
| shader_image_float32_atomic_add: self.shader_image_float32_atomic_add |
| && other.shader_image_float32_atomic_add, |
| shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max |
| && other.shader_image_float32_atomic_min_max, |
| shader_image_float32_atomics: self.shader_image_float32_atomics |
| && other.shader_image_float32_atomics, |
| shader_image_gather_extended: self.shader_image_gather_extended |
| && other.shader_image_gather_extended, |
| shader_image_int64_atomics: self.shader_image_int64_atomics |
| && other.shader_image_int64_atomics, |
| shader_input_attachment_array_dynamic_indexing: self |
| .shader_input_attachment_array_dynamic_indexing |
| && other.shader_input_attachment_array_dynamic_indexing, |
| shader_input_attachment_array_non_uniform_indexing: self |
| .shader_input_attachment_array_non_uniform_indexing |
| && other.shader_input_attachment_array_non_uniform_indexing, |
| shader_int16: self.shader_int16 && other.shader_int16, |
| shader_int64: self.shader_int64 && other.shader_int64, |
| shader_int8: self.shader_int8 && other.shader_int8, |
| shader_integer_dot_product: self.shader_integer_dot_product |
| && other.shader_integer_dot_product, |
| shader_integer_functions2: self.shader_integer_functions2 |
| && other.shader_integer_functions2, |
| shader_module_identifier: self.shader_module_identifier |
| && other.shader_module_identifier, |
| shader_output_layer: self.shader_output_layer && other.shader_output_layer, |
| shader_output_viewport_index: self.shader_output_viewport_index |
| && other.shader_output_viewport_index, |
| shader_resource_min_lod: self.shader_resource_min_lod && other.shader_resource_min_lod, |
| shader_resource_residency: self.shader_resource_residency |
| && other.shader_resource_residency, |
| shader_sample_rate_interpolation_functions: self |
| .shader_sample_rate_interpolation_functions |
| && other.shader_sample_rate_interpolation_functions, |
| shader_sampled_image_array_dynamic_indexing: self |
| .shader_sampled_image_array_dynamic_indexing |
| && other.shader_sampled_image_array_dynamic_indexing, |
| shader_sampled_image_array_non_uniform_indexing: self |
| .shader_sampled_image_array_non_uniform_indexing |
| && other.shader_sampled_image_array_non_uniform_indexing, |
| shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add |
| && other.shader_shared_float16_atomic_add, |
| shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max |
| && other.shader_shared_float16_atomic_min_max, |
| shader_shared_float16_atomics: self.shader_shared_float16_atomics |
| && other.shader_shared_float16_atomics, |
| shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add |
| && other.shader_shared_float32_atomic_add, |
| shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max |
| && other.shader_shared_float32_atomic_min_max, |
| shader_shared_float32_atomics: self.shader_shared_float32_atomics |
| && other.shader_shared_float32_atomics, |
| shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add |
| && other.shader_shared_float64_atomic_add, |
| shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max |
| && other.shader_shared_float64_atomic_min_max, |
| shader_shared_float64_atomics: self.shader_shared_float64_atomics |
| && other.shader_shared_float64_atomics, |
| shader_shared_int64_atomics: self.shader_shared_int64_atomics |
| && other.shader_shared_int64_atomics, |
| shader_sm_builtins: self.shader_sm_builtins && other.shader_sm_builtins, |
| shader_storage_buffer_array_dynamic_indexing: self |
| .shader_storage_buffer_array_dynamic_indexing |
| && other.shader_storage_buffer_array_dynamic_indexing, |
| shader_storage_buffer_array_non_uniform_indexing: self |
| .shader_storage_buffer_array_non_uniform_indexing |
| && other.shader_storage_buffer_array_non_uniform_indexing, |
| shader_storage_image_array_dynamic_indexing: self |
| .shader_storage_image_array_dynamic_indexing |
| && other.shader_storage_image_array_dynamic_indexing, |
| shader_storage_image_array_non_uniform_indexing: self |
| .shader_storage_image_array_non_uniform_indexing |
| && other.shader_storage_image_array_non_uniform_indexing, |
| shader_storage_image_extended_formats: self.shader_storage_image_extended_formats |
| && other.shader_storage_image_extended_formats, |
| shader_storage_image_multisample: self.shader_storage_image_multisample |
| && other.shader_storage_image_multisample, |
| shader_storage_image_read_without_format: self.shader_storage_image_read_without_format |
| && other.shader_storage_image_read_without_format, |
| shader_storage_image_write_without_format: self |
| .shader_storage_image_write_without_format |
| && other.shader_storage_image_write_without_format, |
| shader_storage_texel_buffer_array_dynamic_indexing: self |
| .shader_storage_texel_buffer_array_dynamic_indexing |
| && other.shader_storage_texel_buffer_array_dynamic_indexing, |
| shader_storage_texel_buffer_array_non_uniform_indexing: self |
| .shader_storage_texel_buffer_array_non_uniform_indexing |
| && other.shader_storage_texel_buffer_array_non_uniform_indexing, |
| shader_subgroup_clock: self.shader_subgroup_clock && other.shader_subgroup_clock, |
| shader_subgroup_extended_types: self.shader_subgroup_extended_types |
| && other.shader_subgroup_extended_types, |
| shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow |
| && other.shader_subgroup_uniform_control_flow, |
| shader_terminate_invocation: self.shader_terminate_invocation |
| && other.shader_terminate_invocation, |
| shader_tessellation_and_geometry_point_size: self |
| .shader_tessellation_and_geometry_point_size |
| && other.shader_tessellation_and_geometry_point_size, |
| shader_uniform_buffer_array_dynamic_indexing: self |
| .shader_uniform_buffer_array_dynamic_indexing |
| && other.shader_uniform_buffer_array_dynamic_indexing, |
| shader_uniform_buffer_array_non_uniform_indexing: self |
| .shader_uniform_buffer_array_non_uniform_indexing |
| && other.shader_uniform_buffer_array_non_uniform_indexing, |
| shader_uniform_texel_buffer_array_dynamic_indexing: self |
| .shader_uniform_texel_buffer_array_dynamic_indexing |
| && other.shader_uniform_texel_buffer_array_dynamic_indexing, |
| shader_uniform_texel_buffer_array_non_uniform_indexing: self |
| .shader_uniform_texel_buffer_array_non_uniform_indexing |
| && other.shader_uniform_texel_buffer_array_non_uniform_indexing, |
| shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory |
| && other.shader_zero_initialize_workgroup_memory, |
| shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order |
| && other.shading_rate_coarse_sample_order, |
| shading_rate_image: self.shading_rate_image && other.shading_rate_image, |
| smooth_lines: self.smooth_lines && other.smooth_lines, |
| sparse_binding: self.sparse_binding && other.sparse_binding, |
| sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add |
| && other.sparse_image_float32_atomic_add, |
| sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max |
| && other.sparse_image_float32_atomic_min_max, |
| sparse_image_float32_atomics: self.sparse_image_float32_atomics |
| && other.sparse_image_float32_atomics, |
| sparse_image_int64_atomics: self.sparse_image_int64_atomics |
| && other.sparse_image_int64_atomics, |
| sparse_residency16_samples: self.sparse_residency16_samples |
| && other.sparse_residency16_samples, |
| sparse_residency2_samples: self.sparse_residency2_samples |
| && other.sparse_residency2_samples, |
| sparse_residency4_samples: self.sparse_residency4_samples |
| && other.sparse_residency4_samples, |
| sparse_residency8_samples: self.sparse_residency8_samples |
| && other.sparse_residency8_samples, |
| sparse_residency_aliased: self.sparse_residency_aliased |
| && other.sparse_residency_aliased, |
| sparse_residency_buffer: self.sparse_residency_buffer && other.sparse_residency_buffer, |
| sparse_residency_image2_d: self.sparse_residency_image2_d |
| && other.sparse_residency_image2_d, |
| sparse_residency_image3_d: self.sparse_residency_image3_d |
| && other.sparse_residency_image3_d, |
| stippled_bresenham_lines: self.stippled_bresenham_lines |
| && other.stippled_bresenham_lines, |
| stippled_rectangular_lines: self.stippled_rectangular_lines |
| && other.stippled_rectangular_lines, |
| stippled_smooth_lines: self.stippled_smooth_lines && other.stippled_smooth_lines, |
| storage_buffer16_bit_access: self.storage_buffer16_bit_access |
| && other.storage_buffer16_bit_access, |
| storage_buffer8_bit_access: self.storage_buffer8_bit_access |
| && other.storage_buffer8_bit_access, |
| storage_input_output16: self.storage_input_output16 && other.storage_input_output16, |
| storage_push_constant16: self.storage_push_constant16 && other.storage_push_constant16, |
| storage_push_constant8: self.storage_push_constant8 && other.storage_push_constant8, |
| subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id |
| && other.subgroup_broadcast_dynamic_id, |
| subgroup_size_control: self.subgroup_size_control && other.subgroup_size_control, |
| subpass_merge_feedback: self.subpass_merge_feedback && other.subpass_merge_feedback, |
| subpass_shading: self.subpass_shading && other.subpass_shading, |
| supersample_fragment_shading_rates: self.supersample_fragment_shading_rates |
| && other.supersample_fragment_shading_rates, |
| swapchain_maintenance1: self.swapchain_maintenance1 && other.swapchain_maintenance1, |
| synchronization2: self.synchronization2 && other.synchronization2, |
| task_shader: self.task_shader && other.task_shader, |
| tessellation_isolines: self.tessellation_isolines && other.tessellation_isolines, |
| tessellation_point_mode: self.tessellation_point_mode && other.tessellation_point_mode, |
| tessellation_shader: self.tessellation_shader && other.tessellation_shader, |
| texel_buffer_alignment: self.texel_buffer_alignment && other.texel_buffer_alignment, |
| texture_block_match: self.texture_block_match && other.texture_block_match, |
| texture_box_filter: self.texture_box_filter && other.texture_box_filter, |
| texture_compression_astc_hdr: self.texture_compression_astc_hdr |
| && other.texture_compression_astc_hdr, |
| texture_compression_astc_ldr: self.texture_compression_astc_ldr |
| && other.texture_compression_astc_ldr, |
| texture_compression_bc: self.texture_compression_bc && other.texture_compression_bc, |
| texture_compression_etc2: self.texture_compression_etc2 |
| && other.texture_compression_etc2, |
| texture_sample_weighted: self.texture_sample_weighted && other.texture_sample_weighted, |
| tile_properties: self.tile_properties && other.tile_properties, |
| timeline_semaphore: self.timeline_semaphore && other.timeline_semaphore, |
| transform_feedback: self.transform_feedback && other.transform_feedback, |
| transform_feedback_preserves_provoking_vertex: self |
| .transform_feedback_preserves_provoking_vertex |
| && other.transform_feedback_preserves_provoking_vertex, |
| triangle_fans: self.triangle_fans && other.triangle_fans, |
| uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access |
| && other.uniform_and_storage_buffer16_bit_access, |
| uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access |
| && other.uniform_and_storage_buffer8_bit_access, |
| uniform_buffer_standard_layout: self.uniform_buffer_standard_layout |
| && other.uniform_buffer_standard_layout, |
| variable_multisample_rate: self.variable_multisample_rate |
| && other.variable_multisample_rate, |
| variable_pointers: self.variable_pointers && other.variable_pointers, |
| variable_pointers_storage_buffer: self.variable_pointers_storage_buffer |
| && other.variable_pointers_storage_buffer, |
| vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride |
| && other.vertex_attribute_access_beyond_stride, |
| vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor |
| && other.vertex_attribute_instance_rate_divisor, |
| vertex_attribute_instance_rate_zero_divisor: self |
| .vertex_attribute_instance_rate_zero_divisor |
| && other.vertex_attribute_instance_rate_zero_divisor, |
| vertex_input_dynamic_state: self.vertex_input_dynamic_state |
| && other.vertex_input_dynamic_state, |
| vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics |
| && other.vertex_pipeline_stores_and_atomics, |
| vulkan_memory_model: self.vulkan_memory_model && other.vulkan_memory_model, |
| vulkan_memory_model_availability_visibility_chains: self |
| .vulkan_memory_model_availability_visibility_chains |
| && other.vulkan_memory_model_availability_visibility_chains, |
| vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope |
| && other.vulkan_memory_model_device_scope, |
| wide_lines: self.wide_lines && other.wide_lines, |
| workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout |
| && other.workgroup_memory_explicit_layout, |
| workgroup_memory_explicit_layout16_bit_access: self |
| .workgroup_memory_explicit_layout16_bit_access |
| && other.workgroup_memory_explicit_layout16_bit_access, |
| workgroup_memory_explicit_layout8_bit_access: self |
| .workgroup_memory_explicit_layout8_bit_access |
| && other.workgroup_memory_explicit_layout8_bit_access, |
| workgroup_memory_explicit_layout_scalar_block_layout: self |
| .workgroup_memory_explicit_layout_scalar_block_layout |
| && other.workgroup_memory_explicit_layout_scalar_block_layout, |
| ycbcr2plane444_formats: self.ycbcr2plane444_formats && other.ycbcr2plane444_formats, |
| ycbcr_image_arrays: self.ycbcr_image_arrays && other.ycbcr_image_arrays, |
| _ne: crate::NonExhaustive(()), |
| } |
| } |
| #[doc = r" Returns `self` without the members set in `other`."] |
| #[inline] |
| pub const fn difference(&self, other: &Self) -> Self { |
| Self { |
| acceleration_structure: self.acceleration_structure && !other.acceleration_structure, |
| acceleration_structure_capture_replay: self.acceleration_structure_capture_replay |
| && !other.acceleration_structure_capture_replay, |
| acceleration_structure_host_commands: self.acceleration_structure_host_commands |
| && !other.acceleration_structure_host_commands, |
| acceleration_structure_indirect_build: self.acceleration_structure_indirect_build |
| && !other.acceleration_structure_indirect_build, |
| advanced_blend_coherent_operations: self.advanced_blend_coherent_operations |
| && !other.advanced_blend_coherent_operations, |
| alpha_to_one: self.alpha_to_one && !other.alpha_to_one, |
| amigo_profiling: self.amigo_profiling && !other.amigo_profiling, |
| attachment_feedback_loop_layout: self.attachment_feedback_loop_layout |
| && !other.attachment_feedback_loop_layout, |
| attachment_fragment_shading_rate: self.attachment_fragment_shading_rate |
| && !other.attachment_fragment_shading_rate, |
| border_color_swizzle: self.border_color_swizzle && !other.border_color_swizzle, |
| border_color_swizzle_from_image: self.border_color_swizzle_from_image |
| && !other.border_color_swizzle_from_image, |
| bresenham_lines: self.bresenham_lines && !other.bresenham_lines, |
| buffer_device_address: self.buffer_device_address && !other.buffer_device_address, |
| buffer_device_address_capture_replay: self.buffer_device_address_capture_replay |
| && !other.buffer_device_address_capture_replay, |
| buffer_device_address_multi_device: self.buffer_device_address_multi_device |
| && !other.buffer_device_address_multi_device, |
| color_write_enable: self.color_write_enable && !other.color_write_enable, |
| compute_derivative_group_linear: self.compute_derivative_group_linear |
| && !other.compute_derivative_group_linear, |
| compute_derivative_group_quads: self.compute_derivative_group_quads |
| && !other.compute_derivative_group_quads, |
| compute_full_subgroups: self.compute_full_subgroups && !other.compute_full_subgroups, |
| conditional_rendering: self.conditional_rendering && !other.conditional_rendering, |
| constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors |
| && !other.constant_alpha_color_blend_factors, |
| cooperative_matrix: self.cooperative_matrix && !other.cooperative_matrix, |
| cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access |
| && !other.cooperative_matrix_robust_buffer_access, |
| corner_sampled_image: self.corner_sampled_image && !other.corner_sampled_image, |
| coverage_reduction_mode: self.coverage_reduction_mode && !other.coverage_reduction_mode, |
| custom_border_color_without_format: self.custom_border_color_without_format |
| && !other.custom_border_color_without_format, |
| custom_border_colors: self.custom_border_colors && !other.custom_border_colors, |
| decode_mode_shared_exponent: self.decode_mode_shared_exponent |
| && !other.decode_mode_shared_exponent, |
| dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing |
| && !other.dedicated_allocation_image_aliasing, |
| depth_bias_clamp: self.depth_bias_clamp && !other.depth_bias_clamp, |
| depth_bounds: self.depth_bounds && !other.depth_bounds, |
| depth_clamp: self.depth_clamp && !other.depth_clamp, |
| depth_clamp_zero_one: self.depth_clamp_zero_one && !other.depth_clamp_zero_one, |
| depth_clip_control: self.depth_clip_control && !other.depth_clip_control, |
| depth_clip_enable: self.depth_clip_enable && !other.depth_clip_enable, |
| descriptor_binding_acceleration_structure_update_after_bind: self |
| .descriptor_binding_acceleration_structure_update_after_bind |
| && !other.descriptor_binding_acceleration_structure_update_after_bind, |
| descriptor_binding_inline_uniform_block_update_after_bind: self |
| .descriptor_binding_inline_uniform_block_update_after_bind |
| && !other.descriptor_binding_inline_uniform_block_update_after_bind, |
| descriptor_binding_partially_bound: self.descriptor_binding_partially_bound |
| && !other.descriptor_binding_partially_bound, |
| descriptor_binding_sampled_image_update_after_bind: self |
| .descriptor_binding_sampled_image_update_after_bind |
| && !other.descriptor_binding_sampled_image_update_after_bind, |
| descriptor_binding_storage_buffer_update_after_bind: self |
| .descriptor_binding_storage_buffer_update_after_bind |
| && !other.descriptor_binding_storage_buffer_update_after_bind, |
| descriptor_binding_storage_image_update_after_bind: self |
| .descriptor_binding_storage_image_update_after_bind |
| && !other.descriptor_binding_storage_image_update_after_bind, |
| descriptor_binding_storage_texel_buffer_update_after_bind: self |
| .descriptor_binding_storage_texel_buffer_update_after_bind |
| && !other.descriptor_binding_storage_texel_buffer_update_after_bind, |
| descriptor_binding_uniform_buffer_update_after_bind: self |
| .descriptor_binding_uniform_buffer_update_after_bind |
| && !other.descriptor_binding_uniform_buffer_update_after_bind, |
| descriptor_binding_uniform_texel_buffer_update_after_bind: self |
| .descriptor_binding_uniform_texel_buffer_update_after_bind |
| && !other.descriptor_binding_uniform_texel_buffer_update_after_bind, |
| descriptor_binding_update_unused_while_pending: self |
| .descriptor_binding_update_unused_while_pending |
| && !other.descriptor_binding_update_unused_while_pending, |
| descriptor_binding_variable_descriptor_count: self |
| .descriptor_binding_variable_descriptor_count |
| && !other.descriptor_binding_variable_descriptor_count, |
| descriptor_buffer: self.descriptor_buffer && !other.descriptor_buffer, |
| descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay |
| && !other.descriptor_buffer_capture_replay, |
| descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored |
| && !other.descriptor_buffer_image_layout_ignored, |
| descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors |
| && !other.descriptor_buffer_push_descriptors, |
| descriptor_indexing: self.descriptor_indexing && !other.descriptor_indexing, |
| descriptor_set_host_mapping: self.descriptor_set_host_mapping |
| && !other.descriptor_set_host_mapping, |
| device_coherent_memory: self.device_coherent_memory && !other.device_coherent_memory, |
| device_fault: self.device_fault && !other.device_fault, |
| device_fault_vendor_binary: self.device_fault_vendor_binary |
| && !other.device_fault_vendor_binary, |
| device_generated_commands: self.device_generated_commands |
| && !other.device_generated_commands, |
| device_memory_report: self.device_memory_report && !other.device_memory_report, |
| diagnostics_config: self.diagnostics_config && !other.diagnostics_config, |
| draw_indirect_count: self.draw_indirect_count && !other.draw_indirect_count, |
| draw_indirect_first_instance: self.draw_indirect_first_instance |
| && !other.draw_indirect_first_instance, |
| dual_src_blend: self.dual_src_blend && !other.dual_src_blend, |
| dynamic_rendering: self.dynamic_rendering && !other.dynamic_rendering, |
| events: self.events && !other.events, |
| exclusive_scissor: self.exclusive_scissor && !other.exclusive_scissor, |
| extended_dynamic_state: self.extended_dynamic_state && !other.extended_dynamic_state, |
| extended_dynamic_state2: self.extended_dynamic_state2 && !other.extended_dynamic_state2, |
| extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op |
| && !other.extended_dynamic_state2_logic_op, |
| extended_dynamic_state2_patch_control_points: self |
| .extended_dynamic_state2_patch_control_points |
| && !other.extended_dynamic_state2_patch_control_points, |
| extended_dynamic_state3_alpha_to_coverage_enable: self |
| .extended_dynamic_state3_alpha_to_coverage_enable |
| && !other.extended_dynamic_state3_alpha_to_coverage_enable, |
| extended_dynamic_state3_alpha_to_one_enable: self |
| .extended_dynamic_state3_alpha_to_one_enable |
| && !other.extended_dynamic_state3_alpha_to_one_enable, |
| extended_dynamic_state3_color_blend_advanced: self |
| .extended_dynamic_state3_color_blend_advanced |
| && !other.extended_dynamic_state3_color_blend_advanced, |
| extended_dynamic_state3_color_blend_enable: self |
| .extended_dynamic_state3_color_blend_enable |
| && !other.extended_dynamic_state3_color_blend_enable, |
| extended_dynamic_state3_color_blend_equation: self |
| .extended_dynamic_state3_color_blend_equation |
| && !other.extended_dynamic_state3_color_blend_equation, |
| extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask |
| && !other.extended_dynamic_state3_color_write_mask, |
| extended_dynamic_state3_conservative_rasterization_mode: self |
| .extended_dynamic_state3_conservative_rasterization_mode |
| && !other.extended_dynamic_state3_conservative_rasterization_mode, |
| extended_dynamic_state3_coverage_modulation_mode: self |
| .extended_dynamic_state3_coverage_modulation_mode |
| && !other.extended_dynamic_state3_coverage_modulation_mode, |
| extended_dynamic_state3_coverage_modulation_table: self |
| .extended_dynamic_state3_coverage_modulation_table |
| && !other.extended_dynamic_state3_coverage_modulation_table, |
| extended_dynamic_state3_coverage_modulation_table_enable: self |
| .extended_dynamic_state3_coverage_modulation_table_enable |
| && !other.extended_dynamic_state3_coverage_modulation_table_enable, |
| extended_dynamic_state3_coverage_reduction_mode: self |
| .extended_dynamic_state3_coverage_reduction_mode |
| && !other.extended_dynamic_state3_coverage_reduction_mode, |
| extended_dynamic_state3_coverage_to_color_enable: self |
| .extended_dynamic_state3_coverage_to_color_enable |
| && !other.extended_dynamic_state3_coverage_to_color_enable, |
| extended_dynamic_state3_coverage_to_color_location: self |
| .extended_dynamic_state3_coverage_to_color_location |
| && !other.extended_dynamic_state3_coverage_to_color_location, |
| extended_dynamic_state3_depth_clamp_enable: self |
| .extended_dynamic_state3_depth_clamp_enable |
| && !other.extended_dynamic_state3_depth_clamp_enable, |
| extended_dynamic_state3_depth_clip_enable: self |
| .extended_dynamic_state3_depth_clip_enable |
| && !other.extended_dynamic_state3_depth_clip_enable, |
| extended_dynamic_state3_depth_clip_negative_one_to_one: self |
| .extended_dynamic_state3_depth_clip_negative_one_to_one |
| && !other.extended_dynamic_state3_depth_clip_negative_one_to_one, |
| extended_dynamic_state3_extra_primitive_overestimation_size: self |
| .extended_dynamic_state3_extra_primitive_overestimation_size |
| && !other.extended_dynamic_state3_extra_primitive_overestimation_size, |
| extended_dynamic_state3_line_rasterization_mode: self |
| .extended_dynamic_state3_line_rasterization_mode |
| && !other.extended_dynamic_state3_line_rasterization_mode, |
| extended_dynamic_state3_line_stipple_enable: self |
| .extended_dynamic_state3_line_stipple_enable |
| && !other.extended_dynamic_state3_line_stipple_enable, |
| extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable |
| && !other.extended_dynamic_state3_logic_op_enable, |
| extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode |
| && !other.extended_dynamic_state3_polygon_mode, |
| extended_dynamic_state3_provoking_vertex_mode: self |
| .extended_dynamic_state3_provoking_vertex_mode |
| && !other.extended_dynamic_state3_provoking_vertex_mode, |
| extended_dynamic_state3_rasterization_samples: self |
| .extended_dynamic_state3_rasterization_samples |
| && !other.extended_dynamic_state3_rasterization_samples, |
| extended_dynamic_state3_rasterization_stream: self |
| .extended_dynamic_state3_rasterization_stream |
| && !other.extended_dynamic_state3_rasterization_stream, |
| extended_dynamic_state3_representative_fragment_test_enable: self |
| .extended_dynamic_state3_representative_fragment_test_enable |
| && !other.extended_dynamic_state3_representative_fragment_test_enable, |
| extended_dynamic_state3_sample_locations_enable: self |
| .extended_dynamic_state3_sample_locations_enable |
| && !other.extended_dynamic_state3_sample_locations_enable, |
| extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask |
| && !other.extended_dynamic_state3_sample_mask, |
| extended_dynamic_state3_shading_rate_image_enable: self |
| .extended_dynamic_state3_shading_rate_image_enable |
| && !other.extended_dynamic_state3_shading_rate_image_enable, |
| extended_dynamic_state3_tessellation_domain_origin: self |
| .extended_dynamic_state3_tessellation_domain_origin |
| && !other.extended_dynamic_state3_tessellation_domain_origin, |
| extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle |
| && !other.extended_dynamic_state3_viewport_swizzle, |
| extended_dynamic_state3_viewport_w_scaling_enable: self |
| .extended_dynamic_state3_viewport_w_scaling_enable |
| && !other.extended_dynamic_state3_viewport_w_scaling_enable, |
| external_memory_rdma: self.external_memory_rdma && !other.external_memory_rdma, |
| fill_mode_non_solid: self.fill_mode_non_solid && !other.fill_mode_non_solid, |
| format_a4b4g4r4: self.format_a4b4g4r4 && !other.format_a4b4g4r4, |
| format_a4r4g4b4: self.format_a4r4g4b4 && !other.format_a4r4g4b4, |
| format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler |
| && !other.format_rgba10x6_without_y_cb_cr_sampler, |
| fragment_density_map: self.fragment_density_map && !other.fragment_density_map, |
| fragment_density_map_deferred: self.fragment_density_map_deferred |
| && !other.fragment_density_map_deferred, |
| fragment_density_map_dynamic: self.fragment_density_map_dynamic |
| && !other.fragment_density_map_dynamic, |
| fragment_density_map_non_subsampled_images: self |
| .fragment_density_map_non_subsampled_images |
| && !other.fragment_density_map_non_subsampled_images, |
| fragment_density_map_offset: self.fragment_density_map_offset |
| && !other.fragment_density_map_offset, |
| fragment_shader_barycentric: self.fragment_shader_barycentric |
| && !other.fragment_shader_barycentric, |
| fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock |
| && !other.fragment_shader_pixel_interlock, |
| fragment_shader_sample_interlock: self.fragment_shader_sample_interlock |
| && !other.fragment_shader_sample_interlock, |
| fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock |
| && !other.fragment_shader_shading_rate_interlock, |
| fragment_shading_rate_enums: self.fragment_shading_rate_enums |
| && !other.fragment_shading_rate_enums, |
| fragment_stores_and_atomics: self.fragment_stores_and_atomics |
| && !other.fragment_stores_and_atomics, |
| full_draw_index_uint32: self.full_draw_index_uint32 && !other.full_draw_index_uint32, |
| geometry_shader: self.geometry_shader && !other.geometry_shader, |
| geometry_streams: self.geometry_streams && !other.geometry_streams, |
| global_priority_query: self.global_priority_query && !other.global_priority_query, |
| graphics_pipeline_library: self.graphics_pipeline_library |
| && !other.graphics_pipeline_library, |
| host_query_reset: self.host_query_reset && !other.host_query_reset, |
| image2_d_view_of3_d: self.image2_d_view_of3_d && !other.image2_d_view_of3_d, |
| image_compression_control: self.image_compression_control |
| && !other.image_compression_control, |
| image_compression_control_swapchain: self.image_compression_control_swapchain |
| && !other.image_compression_control_swapchain, |
| image_cube_array: self.image_cube_array && !other.image_cube_array, |
| image_footprint: self.image_footprint && !other.image_footprint, |
| image_view2_d_on3_d_image: self.image_view2_d_on3_d_image |
| && !other.image_view2_d_on3_d_image, |
| image_view_format_reinterpretation: self.image_view_format_reinterpretation |
| && !other.image_view_format_reinterpretation, |
| image_view_format_swizzle: self.image_view_format_swizzle |
| && !other.image_view_format_swizzle, |
| imageless_framebuffer: self.imageless_framebuffer && !other.imageless_framebuffer, |
| independent_blend: self.independent_blend && !other.independent_blend, |
| index_type_uint8: self.index_type_uint8 && !other.index_type_uint8, |
| indirect_copy: self.indirect_copy && !other.indirect_copy, |
| inherited_conditional_rendering: self.inherited_conditional_rendering |
| && !other.inherited_conditional_rendering, |
| inherited_queries: self.inherited_queries && !other.inherited_queries, |
| inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d |
| && !other.inherited_viewport_scissor2_d, |
| inline_uniform_block: self.inline_uniform_block && !other.inline_uniform_block, |
| invocation_mask: self.invocation_mask && !other.invocation_mask, |
| large_points: self.large_points && !other.large_points, |
| legacy_dithering: self.legacy_dithering && !other.legacy_dithering, |
| linear_color_attachment: self.linear_color_attachment && !other.linear_color_attachment, |
| logic_op: self.logic_op && !other.logic_op, |
| maintenance4: self.maintenance4 && !other.maintenance4, |
| memory_decompression: self.memory_decompression && !other.memory_decompression, |
| memory_priority: self.memory_priority && !other.memory_priority, |
| mesh_shader: self.mesh_shader && !other.mesh_shader, |
| mesh_shader_queries: self.mesh_shader_queries && !other.mesh_shader_queries, |
| micromap: self.micromap && !other.micromap, |
| micromap_capture_replay: self.micromap_capture_replay && !other.micromap_capture_replay, |
| micromap_host_commands: self.micromap_host_commands && !other.micromap_host_commands, |
| min_lod: self.min_lod && !other.min_lod, |
| multi_draw: self.multi_draw && !other.multi_draw, |
| multi_draw_indirect: self.multi_draw_indirect && !other.multi_draw_indirect, |
| multi_viewport: self.multi_viewport && !other.multi_viewport, |
| multisample_array_image: self.multisample_array_image && !other.multisample_array_image, |
| multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled |
| && !other.multisampled_render_to_single_sampled, |
| multiview: self.multiview && !other.multiview, |
| multiview_geometry_shader: self.multiview_geometry_shader |
| && !other.multiview_geometry_shader, |
| multiview_mesh_shader: self.multiview_mesh_shader && !other.multiview_mesh_shader, |
| multiview_per_view_viewports: self.multiview_per_view_viewports |
| && !other.multiview_per_view_viewports, |
| multiview_tessellation_shader: self.multiview_tessellation_shader |
| && !other.multiview_tessellation_shader, |
| mutable_comparison_samplers: self.mutable_comparison_samplers |
| && !other.mutable_comparison_samplers, |
| mutable_descriptor_type: self.mutable_descriptor_type && !other.mutable_descriptor_type, |
| no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates |
| && !other.no_invocation_fragment_shading_rates, |
| non_seamless_cube_map: self.non_seamless_cube_map && !other.non_seamless_cube_map, |
| null_descriptor: self.null_descriptor && !other.null_descriptor, |
| occlusion_query_precise: self.occlusion_query_precise && !other.occlusion_query_precise, |
| optical_flow: self.optical_flow && !other.optical_flow, |
| pageable_device_local_memory: self.pageable_device_local_memory |
| && !other.pageable_device_local_memory, |
| performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools |
| && !other.performance_counter_multiple_query_pools, |
| performance_counter_query_pools: self.performance_counter_query_pools |
| && !other.performance_counter_query_pools, |
| pipeline_creation_cache_control: self.pipeline_creation_cache_control |
| && !other.pipeline_creation_cache_control, |
| pipeline_executable_info: self.pipeline_executable_info |
| && !other.pipeline_executable_info, |
| pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate |
| && !other.pipeline_fragment_shading_rate, |
| pipeline_properties_identifier: self.pipeline_properties_identifier |
| && !other.pipeline_properties_identifier, |
| pipeline_protected_access: self.pipeline_protected_access |
| && !other.pipeline_protected_access, |
| pipeline_robustness: self.pipeline_robustness && !other.pipeline_robustness, |
| pipeline_statistics_query: self.pipeline_statistics_query |
| && !other.pipeline_statistics_query, |
| point_polygons: self.point_polygons && !other.point_polygons, |
| present_barrier: self.present_barrier && !other.present_barrier, |
| present_id: self.present_id && !other.present_id, |
| present_wait: self.present_wait && !other.present_wait, |
| primitive_fragment_shading_rate: self.primitive_fragment_shading_rate |
| && !other.primitive_fragment_shading_rate, |
| primitive_fragment_shading_rate_mesh_shader: self |
| .primitive_fragment_shading_rate_mesh_shader |
| && !other.primitive_fragment_shading_rate_mesh_shader, |
| primitive_topology_list_restart: self.primitive_topology_list_restart |
| && !other.primitive_topology_list_restart, |
| primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart |
| && !other.primitive_topology_patch_list_restart, |
| primitives_generated_query: self.primitives_generated_query |
| && !other.primitives_generated_query, |
| primitives_generated_query_with_non_zero_streams: self |
| .primitives_generated_query_with_non_zero_streams |
| && !other.primitives_generated_query_with_non_zero_streams, |
| primitives_generated_query_with_rasterizer_discard: self |
| .primitives_generated_query_with_rasterizer_discard |
| && !other.primitives_generated_query_with_rasterizer_discard, |
| private_data: self.private_data && !other.private_data, |
| protected_memory: self.protected_memory && !other.protected_memory, |
| provoking_vertex_last: self.provoking_vertex_last && !other.provoking_vertex_last, |
| rasterization_order_color_attachment_access: self |
| .rasterization_order_color_attachment_access |
| && !other.rasterization_order_color_attachment_access, |
| rasterization_order_depth_attachment_access: self |
| .rasterization_order_depth_attachment_access |
| && !other.rasterization_order_depth_attachment_access, |
| rasterization_order_stencil_attachment_access: self |
| .rasterization_order_stencil_attachment_access |
| && !other.rasterization_order_stencil_attachment_access, |
| ray_query: self.ray_query && !other.ray_query, |
| ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder |
| && !other.ray_tracing_invocation_reorder, |
| ray_tracing_maintenance1: self.ray_tracing_maintenance1 |
| && !other.ray_tracing_maintenance1, |
| ray_tracing_motion_blur: self.ray_tracing_motion_blur && !other.ray_tracing_motion_blur, |
| ray_tracing_motion_blur_pipeline_trace_rays_indirect: self |
| .ray_tracing_motion_blur_pipeline_trace_rays_indirect |
| && !other.ray_tracing_motion_blur_pipeline_trace_rays_indirect, |
| ray_tracing_pipeline: self.ray_tracing_pipeline && !other.ray_tracing_pipeline, |
| ray_tracing_pipeline_shader_group_handle_capture_replay: self |
| .ray_tracing_pipeline_shader_group_handle_capture_replay |
| && !other.ray_tracing_pipeline_shader_group_handle_capture_replay, |
| ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self |
| .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed |
| && !other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed, |
| ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect |
| && !other.ray_tracing_pipeline_trace_rays_indirect, |
| ray_tracing_pipeline_trace_rays_indirect2: self |
| .ray_tracing_pipeline_trace_rays_indirect2 |
| && !other.ray_tracing_pipeline_trace_rays_indirect2, |
| ray_traversal_primitive_culling: self.ray_traversal_primitive_culling |
| && !other.ray_traversal_primitive_culling, |
| rectangular_lines: self.rectangular_lines && !other.rectangular_lines, |
| report_address_binding: self.report_address_binding && !other.report_address_binding, |
| representative_fragment_test: self.representative_fragment_test |
| && !other.representative_fragment_test, |
| robust_buffer_access: self.robust_buffer_access && !other.robust_buffer_access, |
| robust_buffer_access2: self.robust_buffer_access2 && !other.robust_buffer_access2, |
| robust_image_access: self.robust_image_access && !other.robust_image_access, |
| robust_image_access2: self.robust_image_access2 && !other.robust_image_access2, |
| runtime_descriptor_array: self.runtime_descriptor_array |
| && !other.runtime_descriptor_array, |
| sample_rate_shading: self.sample_rate_shading && !other.sample_rate_shading, |
| sampler2_d_view_of3_d: self.sampler2_d_view_of3_d && !other.sampler2_d_view_of3_d, |
| sampler_anisotropy: self.sampler_anisotropy && !other.sampler_anisotropy, |
| sampler_filter_minmax: self.sampler_filter_minmax && !other.sampler_filter_minmax, |
| sampler_mip_lod_bias: self.sampler_mip_lod_bias && !other.sampler_mip_lod_bias, |
| sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge |
| && !other.sampler_mirror_clamp_to_edge, |
| sampler_ycbcr_conversion: self.sampler_ycbcr_conversion |
| && !other.sampler_ycbcr_conversion, |
| scalar_block_layout: self.scalar_block_layout && !other.scalar_block_layout, |
| separate_depth_stencil_layouts: self.separate_depth_stencil_layouts |
| && !other.separate_depth_stencil_layouts, |
| separate_stencil_mask_ref: self.separate_stencil_mask_ref |
| && !other.separate_stencil_mask_ref, |
| shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add |
| && !other.shader_buffer_float16_atomic_add, |
| shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max |
| && !other.shader_buffer_float16_atomic_min_max, |
| shader_buffer_float16_atomics: self.shader_buffer_float16_atomics |
| && !other.shader_buffer_float16_atomics, |
| shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add |
| && !other.shader_buffer_float32_atomic_add, |
| shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max |
| && !other.shader_buffer_float32_atomic_min_max, |
| shader_buffer_float32_atomics: self.shader_buffer_float32_atomics |
| && !other.shader_buffer_float32_atomics, |
| shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add |
| && !other.shader_buffer_float64_atomic_add, |
| shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max |
| && !other.shader_buffer_float64_atomic_min_max, |
| shader_buffer_float64_atomics: self.shader_buffer_float64_atomics |
| && !other.shader_buffer_float64_atomics, |
| shader_buffer_int64_atomics: self.shader_buffer_int64_atomics |
| && !other.shader_buffer_int64_atomics, |
| shader_clip_distance: self.shader_clip_distance && !other.shader_clip_distance, |
| shader_core_builtins: self.shader_core_builtins && !other.shader_core_builtins, |
| shader_cull_distance: self.shader_cull_distance && !other.shader_cull_distance, |
| shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation |
| && !other.shader_demote_to_helper_invocation, |
| shader_device_clock: self.shader_device_clock && !other.shader_device_clock, |
| shader_draw_parameters: self.shader_draw_parameters && !other.shader_draw_parameters, |
| shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests |
| && !other.shader_early_and_late_fragment_tests, |
| shader_float16: self.shader_float16 && !other.shader_float16, |
| shader_float64: self.shader_float64 && !other.shader_float64, |
| shader_image_float32_atomic_add: self.shader_image_float32_atomic_add |
| && !other.shader_image_float32_atomic_add, |
| shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max |
| && !other.shader_image_float32_atomic_min_max, |
| shader_image_float32_atomics: self.shader_image_float32_atomics |
| && !other.shader_image_float32_atomics, |
| shader_image_gather_extended: self.shader_image_gather_extended |
| && !other.shader_image_gather_extended, |
| shader_image_int64_atomics: self.shader_image_int64_atomics |
| && !other.shader_image_int64_atomics, |
| shader_input_attachment_array_dynamic_indexing: self |
| .shader_input_attachment_array_dynamic_indexing |
| && !other.shader_input_attachment_array_dynamic_indexing, |
| shader_input_attachment_array_non_uniform_indexing: self |
| .shader_input_attachment_array_non_uniform_indexing |
| && !other.shader_input_attachment_array_non_uniform_indexing, |
| shader_int16: self.shader_int16 && !other.shader_int16, |
| shader_int64: self.shader_int64 && !other.shader_int64, |
| shader_int8: self.shader_int8 && !other.shader_int8, |
| shader_integer_dot_product: self.shader_integer_dot_product |
| && !other.shader_integer_dot_product, |
| shader_integer_functions2: self.shader_integer_functions2 |
| && !other.shader_integer_functions2, |
| shader_module_identifier: self.shader_module_identifier |
| && !other.shader_module_identifier, |
| shader_output_layer: self.shader_output_layer && !other.shader_output_layer, |
| shader_output_viewport_index: self.shader_output_viewport_index |
| && !other.shader_output_viewport_index, |
| shader_resource_min_lod: self.shader_resource_min_lod && !other.shader_resource_min_lod, |
| shader_resource_residency: self.shader_resource_residency |
| && !other.shader_resource_residency, |
| shader_sample_rate_interpolation_functions: self |
| .shader_sample_rate_interpolation_functions |
| && !other.shader_sample_rate_interpolation_functions, |
| shader_sampled_image_array_dynamic_indexing: self |
| .shader_sampled_image_array_dynamic_indexing |
| && !other.shader_sampled_image_array_dynamic_indexing, |
| shader_sampled_image_array_non_uniform_indexing: self |
| .shader_sampled_image_array_non_uniform_indexing |
| && !other.shader_sampled_image_array_non_uniform_indexing, |
| shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add |
| && !other.shader_shared_float16_atomic_add, |
| shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max |
| && !other.shader_shared_float16_atomic_min_max, |
| shader_shared_float16_atomics: self.shader_shared_float16_atomics |
| && !other.shader_shared_float16_atomics, |
| shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add |
| && !other.shader_shared_float32_atomic_add, |
| shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max |
| && !other.shader_shared_float32_atomic_min_max, |
| shader_shared_float32_atomics: self.shader_shared_float32_atomics |
| && !other.shader_shared_float32_atomics, |
| shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add |
| && !other.shader_shared_float64_atomic_add, |
| shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max |
| && !other.shader_shared_float64_atomic_min_max, |
| shader_shared_float64_atomics: self.shader_shared_float64_atomics |
| && !other.shader_shared_float64_atomics, |
| shader_shared_int64_atomics: self.shader_shared_int64_atomics |
| && !other.shader_shared_int64_atomics, |
| shader_sm_builtins: self.shader_sm_builtins && !other.shader_sm_builtins, |
| shader_storage_buffer_array_dynamic_indexing: self |
| .shader_storage_buffer_array_dynamic_indexing |
| && !other.shader_storage_buffer_array_dynamic_indexing, |
| shader_storage_buffer_array_non_uniform_indexing: self |
| .shader_storage_buffer_array_non_uniform_indexing |
| && !other.shader_storage_buffer_array_non_uniform_indexing, |
| shader_storage_image_array_dynamic_indexing: self |
| .shader_storage_image_array_dynamic_indexing |
| && !other.shader_storage_image_array_dynamic_indexing, |
| shader_storage_image_array_non_uniform_indexing: self |
| .shader_storage_image_array_non_uniform_indexing |
| && !other.shader_storage_image_array_non_uniform_indexing, |
| shader_storage_image_extended_formats: self.shader_storage_image_extended_formats |
| && !other.shader_storage_image_extended_formats, |
| shader_storage_image_multisample: self.shader_storage_image_multisample |
| && !other.shader_storage_image_multisample, |
| shader_storage_image_read_without_format: self.shader_storage_image_read_without_format |
| && !other.shader_storage_image_read_without_format, |
| shader_storage_image_write_without_format: self |
| .shader_storage_image_write_without_format |
| && !other.shader_storage_image_write_without_format, |
| shader_storage_texel_buffer_array_dynamic_indexing: self |
| .shader_storage_texel_buffer_array_dynamic_indexing |
| && !other.shader_storage_texel_buffer_array_dynamic_indexing, |
| shader_storage_texel_buffer_array_non_uniform_indexing: self |
| .shader_storage_texel_buffer_array_non_uniform_indexing |
| && !other.shader_storage_texel_buffer_array_non_uniform_indexing, |
| shader_subgroup_clock: self.shader_subgroup_clock && !other.shader_subgroup_clock, |
| shader_subgroup_extended_types: self.shader_subgroup_extended_types |
| && !other.shader_subgroup_extended_types, |
| shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow |
| && !other.shader_subgroup_uniform_control_flow, |
| shader_terminate_invocation: self.shader_terminate_invocation |
| && !other.shader_terminate_invocation, |
| shader_tessellation_and_geometry_point_size: self |
| .shader_tessellation_and_geometry_point_size |
| && !other.shader_tessellation_and_geometry_point_size, |
| shader_uniform_buffer_array_dynamic_indexing: self |
| .shader_uniform_buffer_array_dynamic_indexing |
| && !other.shader_uniform_buffer_array_dynamic_indexing, |
| shader_uniform_buffer_array_non_uniform_indexing: self |
| .shader_uniform_buffer_array_non_uniform_indexing |
| && !other.shader_uniform_buffer_array_non_uniform_indexing, |
| shader_uniform_texel_buffer_array_dynamic_indexing: self |
| .shader_uniform_texel_buffer_array_dynamic_indexing |
| && !other.shader_uniform_texel_buffer_array_dynamic_indexing, |
| shader_uniform_texel_buffer_array_non_uniform_indexing: self |
| .shader_uniform_texel_buffer_array_non_uniform_indexing |
| && !other.shader_uniform_texel_buffer_array_non_uniform_indexing, |
| shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory |
| && !other.shader_zero_initialize_workgroup_memory, |
| shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order |
| && !other.shading_rate_coarse_sample_order, |
| shading_rate_image: self.shading_rate_image && !other.shading_rate_image, |
| smooth_lines: self.smooth_lines && !other.smooth_lines, |
| sparse_binding: self.sparse_binding && !other.sparse_binding, |
| sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add |
| && !other.sparse_image_float32_atomic_add, |
| sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max |
| && !other.sparse_image_float32_atomic_min_max, |
| sparse_image_float32_atomics: self.sparse_image_float32_atomics |
| && !other.sparse_image_float32_atomics, |
| sparse_image_int64_atomics: self.sparse_image_int64_atomics |
| && !other.sparse_image_int64_atomics, |
| sparse_residency16_samples: self.sparse_residency16_samples |
| && !other.sparse_residency16_samples, |
| sparse_residency2_samples: self.sparse_residency2_samples |
| && !other.sparse_residency2_samples, |
| sparse_residency4_samples: self.sparse_residency4_samples |
| && !other.sparse_residency4_samples, |
| sparse_residency8_samples: self.sparse_residency8_samples |
| && !other.sparse_residency8_samples, |
| sparse_residency_aliased: self.sparse_residency_aliased |
| && !other.sparse_residency_aliased, |
| sparse_residency_buffer: self.sparse_residency_buffer && !other.sparse_residency_buffer, |
| sparse_residency_image2_d: self.sparse_residency_image2_d |
| && !other.sparse_residency_image2_d, |
| sparse_residency_image3_d: self.sparse_residency_image3_d |
| && !other.sparse_residency_image3_d, |
| stippled_bresenham_lines: self.stippled_bresenham_lines |
| && !other.stippled_bresenham_lines, |
| stippled_rectangular_lines: self.stippled_rectangular_lines |
| && !other.stippled_rectangular_lines, |
| stippled_smooth_lines: self.stippled_smooth_lines && !other.stippled_smooth_lines, |
| storage_buffer16_bit_access: self.storage_buffer16_bit_access |
| && !other.storage_buffer16_bit_access, |
| storage_buffer8_bit_access: self.storage_buffer8_bit_access |
| && !other.storage_buffer8_bit_access, |
| storage_input_output16: self.storage_input_output16 && !other.storage_input_output16, |
| storage_push_constant16: self.storage_push_constant16 && !other.storage_push_constant16, |
| storage_push_constant8: self.storage_push_constant8 && !other.storage_push_constant8, |
| subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id |
| && !other.subgroup_broadcast_dynamic_id, |
| subgroup_size_control: self.subgroup_size_control && !other.subgroup_size_control, |
| subpass_merge_feedback: self.subpass_merge_feedback && !other.subpass_merge_feedback, |
| subpass_shading: self.subpass_shading && !other.subpass_shading, |
| supersample_fragment_shading_rates: self.supersample_fragment_shading_rates |
| && !other.supersample_fragment_shading_rates, |
| swapchain_maintenance1: self.swapchain_maintenance1 && !other.swapchain_maintenance1, |
| synchronization2: self.synchronization2 && !other.synchronization2, |
| task_shader: self.task_shader && !other.task_shader, |
| tessellation_isolines: self.tessellation_isolines && !other.tessellation_isolines, |
| tessellation_point_mode: self.tessellation_point_mode && !other.tessellation_point_mode, |
| tessellation_shader: self.tessellation_shader && !other.tessellation_shader, |
| texel_buffer_alignment: self.texel_buffer_alignment && !other.texel_buffer_alignment, |
| texture_block_match: self.texture_block_match && !other.texture_block_match, |
| texture_box_filter: self.texture_box_filter && !other.texture_box_filter, |
| texture_compression_astc_hdr: self.texture_compression_astc_hdr |
| && !other.texture_compression_astc_hdr, |
| texture_compression_astc_ldr: self.texture_compression_astc_ldr |
| && !other.texture_compression_astc_ldr, |
| texture_compression_bc: self.texture_compression_bc && !other.texture_compression_bc, |
| texture_compression_etc2: self.texture_compression_etc2 |
| && !other.texture_compression_etc2, |
| texture_sample_weighted: self.texture_sample_weighted && !other.texture_sample_weighted, |
| tile_properties: self.tile_properties && !other.tile_properties, |
| timeline_semaphore: self.timeline_semaphore && !other.timeline_semaphore, |
| transform_feedback: self.transform_feedback && !other.transform_feedback, |
| transform_feedback_preserves_provoking_vertex: self |
| .transform_feedback_preserves_provoking_vertex |
| && !other.transform_feedback_preserves_provoking_vertex, |
| triangle_fans: self.triangle_fans && !other.triangle_fans, |
| uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access |
| && !other.uniform_and_storage_buffer16_bit_access, |
| uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access |
| && !other.uniform_and_storage_buffer8_bit_access, |
| uniform_buffer_standard_layout: self.uniform_buffer_standard_layout |
| && !other.uniform_buffer_standard_layout, |
| variable_multisample_rate: self.variable_multisample_rate |
| && !other.variable_multisample_rate, |
| variable_pointers: self.variable_pointers && !other.variable_pointers, |
| variable_pointers_storage_buffer: self.variable_pointers_storage_buffer |
| && !other.variable_pointers_storage_buffer, |
| vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride |
| && !other.vertex_attribute_access_beyond_stride, |
| vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor |
| && !other.vertex_attribute_instance_rate_divisor, |
| vertex_attribute_instance_rate_zero_divisor: self |
| .vertex_attribute_instance_rate_zero_divisor |
| && !other.vertex_attribute_instance_rate_zero_divisor, |
| vertex_input_dynamic_state: self.vertex_input_dynamic_state |
| && !other.vertex_input_dynamic_state, |
| vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics |
| && !other.vertex_pipeline_stores_and_atomics, |
| vulkan_memory_model: self.vulkan_memory_model && !other.vulkan_memory_model, |
| vulkan_memory_model_availability_visibility_chains: self |
| .vulkan_memory_model_availability_visibility_chains |
| && !other.vulkan_memory_model_availability_visibility_chains, |
| vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope |
| && !other.vulkan_memory_model_device_scope, |
| wide_lines: self.wide_lines && !other.wide_lines, |
| workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout |
| && !other.workgroup_memory_explicit_layout, |
| workgroup_memory_explicit_layout16_bit_access: self |
| .workgroup_memory_explicit_layout16_bit_access |
| && !other.workgroup_memory_explicit_layout16_bit_access, |
| workgroup_memory_explicit_layout8_bit_access: self |
| .workgroup_memory_explicit_layout8_bit_access |
| && !other.workgroup_memory_explicit_layout8_bit_access, |
| workgroup_memory_explicit_layout_scalar_block_layout: self |
| .workgroup_memory_explicit_layout_scalar_block_layout |
| && !other.workgroup_memory_explicit_layout_scalar_block_layout, |
| ycbcr2plane444_formats: self.ycbcr2plane444_formats && !other.ycbcr2plane444_formats, |
| ycbcr_image_arrays: self.ycbcr_image_arrays && !other.ycbcr_image_arrays, |
| _ne: crate::NonExhaustive(()), |
| } |
| } |
| #[doc = r" Returns the members set in `self` or `other`, but not both."] |
| #[inline] |
| pub const fn symmetric_difference(&self, other: &Self) -> Self { |
| Self { |
| acceleration_structure: self.acceleration_structure ^ other.acceleration_structure, |
| acceleration_structure_capture_replay: self.acceleration_structure_capture_replay |
| ^ other.acceleration_structure_capture_replay, |
| acceleration_structure_host_commands: self.acceleration_structure_host_commands |
| ^ other.acceleration_structure_host_commands, |
| acceleration_structure_indirect_build: self.acceleration_structure_indirect_build |
| ^ other.acceleration_structure_indirect_build, |
| advanced_blend_coherent_operations: self.advanced_blend_coherent_operations |
| ^ other.advanced_blend_coherent_operations, |
| alpha_to_one: self.alpha_to_one ^ other.alpha_to_one, |
| amigo_profiling: self.amigo_profiling ^ other.amigo_profiling, |
| attachment_feedback_loop_layout: self.attachment_feedback_loop_layout |
| ^ other.attachment_feedback_loop_layout, |
| attachment_fragment_shading_rate: self.attachment_fragment_shading_rate |
| ^ other.attachment_fragment_shading_rate, |
| border_color_swizzle: self.border_color_swizzle ^ other.border_color_swizzle, |
| border_color_swizzle_from_image: self.border_color_swizzle_from_image |
| ^ other.border_color_swizzle_from_image, |
| bresenham_lines: self.bresenham_lines ^ other.bresenham_lines, |
| buffer_device_address: self.buffer_device_address ^ other.buffer_device_address, |
| buffer_device_address_capture_replay: self.buffer_device_address_capture_replay |
| ^ other.buffer_device_address_capture_replay, |
| buffer_device_address_multi_device: self.buffer_device_address_multi_device |
| ^ other.buffer_device_address_multi_device, |
| color_write_enable: self.color_write_enable ^ other.color_write_enable, |
| compute_derivative_group_linear: self.compute_derivative_group_linear |
| ^ other.compute_derivative_group_linear, |
| compute_derivative_group_quads: self.compute_derivative_group_quads |
| ^ other.compute_derivative_group_quads, |
| compute_full_subgroups: self.compute_full_subgroups ^ other.compute_full_subgroups, |
| conditional_rendering: self.conditional_rendering ^ other.conditional_rendering, |
| constant_alpha_color_blend_factors: self.constant_alpha_color_blend_factors |
| ^ other.constant_alpha_color_blend_factors, |
| cooperative_matrix: self.cooperative_matrix ^ other.cooperative_matrix, |
| cooperative_matrix_robust_buffer_access: self.cooperative_matrix_robust_buffer_access |
| ^ other.cooperative_matrix_robust_buffer_access, |
| corner_sampled_image: self.corner_sampled_image ^ other.corner_sampled_image, |
| coverage_reduction_mode: self.coverage_reduction_mode ^ other.coverage_reduction_mode, |
| custom_border_color_without_format: self.custom_border_color_without_format |
| ^ other.custom_border_color_without_format, |
| custom_border_colors: self.custom_border_colors ^ other.custom_border_colors, |
| decode_mode_shared_exponent: self.decode_mode_shared_exponent |
| ^ other.decode_mode_shared_exponent, |
| dedicated_allocation_image_aliasing: self.dedicated_allocation_image_aliasing |
| ^ other.dedicated_allocation_image_aliasing, |
| depth_bias_clamp: self.depth_bias_clamp ^ other.depth_bias_clamp, |
| depth_bounds: self.depth_bounds ^ other.depth_bounds, |
| depth_clamp: self.depth_clamp ^ other.depth_clamp, |
| depth_clamp_zero_one: self.depth_clamp_zero_one ^ other.depth_clamp_zero_one, |
| depth_clip_control: self.depth_clip_control ^ other.depth_clip_control, |
| depth_clip_enable: self.depth_clip_enable ^ other.depth_clip_enable, |
| descriptor_binding_acceleration_structure_update_after_bind: self |
| .descriptor_binding_acceleration_structure_update_after_bind |
| ^ other.descriptor_binding_acceleration_structure_update_after_bind, |
| descriptor_binding_inline_uniform_block_update_after_bind: self |
| .descriptor_binding_inline_uniform_block_update_after_bind |
| ^ other.descriptor_binding_inline_uniform_block_update_after_bind, |
| descriptor_binding_partially_bound: self.descriptor_binding_partially_bound |
| ^ other.descriptor_binding_partially_bound, |
| descriptor_binding_sampled_image_update_after_bind: self |
| .descriptor_binding_sampled_image_update_after_bind |
| ^ other.descriptor_binding_sampled_image_update_after_bind, |
| descriptor_binding_storage_buffer_update_after_bind: self |
| .descriptor_binding_storage_buffer_update_after_bind |
| ^ other.descriptor_binding_storage_buffer_update_after_bind, |
| descriptor_binding_storage_image_update_after_bind: self |
| .descriptor_binding_storage_image_update_after_bind |
| ^ other.descriptor_binding_storage_image_update_after_bind, |
| descriptor_binding_storage_texel_buffer_update_after_bind: self |
| .descriptor_binding_storage_texel_buffer_update_after_bind |
| ^ other.descriptor_binding_storage_texel_buffer_update_after_bind, |
| descriptor_binding_uniform_buffer_update_after_bind: self |
| .descriptor_binding_uniform_buffer_update_after_bind |
| ^ other.descriptor_binding_uniform_buffer_update_after_bind, |
| descriptor_binding_uniform_texel_buffer_update_after_bind: self |
| .descriptor_binding_uniform_texel_buffer_update_after_bind |
| ^ other.descriptor_binding_uniform_texel_buffer_update_after_bind, |
| descriptor_binding_update_unused_while_pending: self |
| .descriptor_binding_update_unused_while_pending |
| ^ other.descriptor_binding_update_unused_while_pending, |
| descriptor_binding_variable_descriptor_count: self |
| .descriptor_binding_variable_descriptor_count |
| ^ other.descriptor_binding_variable_descriptor_count, |
| descriptor_buffer: self.descriptor_buffer ^ other.descriptor_buffer, |
| descriptor_buffer_capture_replay: self.descriptor_buffer_capture_replay |
| ^ other.descriptor_buffer_capture_replay, |
| descriptor_buffer_image_layout_ignored: self.descriptor_buffer_image_layout_ignored |
| ^ other.descriptor_buffer_image_layout_ignored, |
| descriptor_buffer_push_descriptors: self.descriptor_buffer_push_descriptors |
| ^ other.descriptor_buffer_push_descriptors, |
| descriptor_indexing: self.descriptor_indexing ^ other.descriptor_indexing, |
| descriptor_set_host_mapping: self.descriptor_set_host_mapping |
| ^ other.descriptor_set_host_mapping, |
| device_coherent_memory: self.device_coherent_memory ^ other.device_coherent_memory, |
| device_fault: self.device_fault ^ other.device_fault, |
| device_fault_vendor_binary: self.device_fault_vendor_binary |
| ^ other.device_fault_vendor_binary, |
| device_generated_commands: self.device_generated_commands |
| ^ other.device_generated_commands, |
| device_memory_report: self.device_memory_report ^ other.device_memory_report, |
| diagnostics_config: self.diagnostics_config ^ other.diagnostics_config, |
| draw_indirect_count: self.draw_indirect_count ^ other.draw_indirect_count, |
| draw_indirect_first_instance: self.draw_indirect_first_instance |
| ^ other.draw_indirect_first_instance, |
| dual_src_blend: self.dual_src_blend ^ other.dual_src_blend, |
| dynamic_rendering: self.dynamic_rendering ^ other.dynamic_rendering, |
| events: self.events ^ other.events, |
| exclusive_scissor: self.exclusive_scissor ^ other.exclusive_scissor, |
| extended_dynamic_state: self.extended_dynamic_state ^ other.extended_dynamic_state, |
| extended_dynamic_state2: self.extended_dynamic_state2 ^ other.extended_dynamic_state2, |
| extended_dynamic_state2_logic_op: self.extended_dynamic_state2_logic_op |
| ^ other.extended_dynamic_state2_logic_op, |
| extended_dynamic_state2_patch_control_points: self |
| .extended_dynamic_state2_patch_control_points |
| ^ other.extended_dynamic_state2_patch_control_points, |
| extended_dynamic_state3_alpha_to_coverage_enable: self |
| .extended_dynamic_state3_alpha_to_coverage_enable |
| ^ other.extended_dynamic_state3_alpha_to_coverage_enable, |
| extended_dynamic_state3_alpha_to_one_enable: self |
| .extended_dynamic_state3_alpha_to_one_enable |
| ^ other.extended_dynamic_state3_alpha_to_one_enable, |
| extended_dynamic_state3_color_blend_advanced: self |
| .extended_dynamic_state3_color_blend_advanced |
| ^ other.extended_dynamic_state3_color_blend_advanced, |
| extended_dynamic_state3_color_blend_enable: self |
| .extended_dynamic_state3_color_blend_enable |
| ^ other.extended_dynamic_state3_color_blend_enable, |
| extended_dynamic_state3_color_blend_equation: self |
| .extended_dynamic_state3_color_blend_equation |
| ^ other.extended_dynamic_state3_color_blend_equation, |
| extended_dynamic_state3_color_write_mask: self.extended_dynamic_state3_color_write_mask |
| ^ other.extended_dynamic_state3_color_write_mask, |
| extended_dynamic_state3_conservative_rasterization_mode: self |
| .extended_dynamic_state3_conservative_rasterization_mode |
| ^ other.extended_dynamic_state3_conservative_rasterization_mode, |
| extended_dynamic_state3_coverage_modulation_mode: self |
| .extended_dynamic_state3_coverage_modulation_mode |
| ^ other.extended_dynamic_state3_coverage_modulation_mode, |
| extended_dynamic_state3_coverage_modulation_table: self |
| .extended_dynamic_state3_coverage_modulation_table |
| ^ other.extended_dynamic_state3_coverage_modulation_table, |
| extended_dynamic_state3_coverage_modulation_table_enable: self |
| .extended_dynamic_state3_coverage_modulation_table_enable |
| ^ other.extended_dynamic_state3_coverage_modulation_table_enable, |
| extended_dynamic_state3_coverage_reduction_mode: self |
| .extended_dynamic_state3_coverage_reduction_mode |
| ^ other.extended_dynamic_state3_coverage_reduction_mode, |
| extended_dynamic_state3_coverage_to_color_enable: self |
| .extended_dynamic_state3_coverage_to_color_enable |
| ^ other.extended_dynamic_state3_coverage_to_color_enable, |
| extended_dynamic_state3_coverage_to_color_location: self |
| .extended_dynamic_state3_coverage_to_color_location |
| ^ other.extended_dynamic_state3_coverage_to_color_location, |
| extended_dynamic_state3_depth_clamp_enable: self |
| .extended_dynamic_state3_depth_clamp_enable |
| ^ other.extended_dynamic_state3_depth_clamp_enable, |
| extended_dynamic_state3_depth_clip_enable: self |
| .extended_dynamic_state3_depth_clip_enable |
| ^ other.extended_dynamic_state3_depth_clip_enable, |
| extended_dynamic_state3_depth_clip_negative_one_to_one: self |
| .extended_dynamic_state3_depth_clip_negative_one_to_one |
| ^ other.extended_dynamic_state3_depth_clip_negative_one_to_one, |
| extended_dynamic_state3_extra_primitive_overestimation_size: self |
| .extended_dynamic_state3_extra_primitive_overestimation_size |
| ^ other.extended_dynamic_state3_extra_primitive_overestimation_size, |
| extended_dynamic_state3_line_rasterization_mode: self |
| .extended_dynamic_state3_line_rasterization_mode |
| ^ other.extended_dynamic_state3_line_rasterization_mode, |
| extended_dynamic_state3_line_stipple_enable: self |
| .extended_dynamic_state3_line_stipple_enable |
| ^ other.extended_dynamic_state3_line_stipple_enable, |
| extended_dynamic_state3_logic_op_enable: self.extended_dynamic_state3_logic_op_enable |
| ^ other.extended_dynamic_state3_logic_op_enable, |
| extended_dynamic_state3_polygon_mode: self.extended_dynamic_state3_polygon_mode |
| ^ other.extended_dynamic_state3_polygon_mode, |
| extended_dynamic_state3_provoking_vertex_mode: self |
| .extended_dynamic_state3_provoking_vertex_mode |
| ^ other.extended_dynamic_state3_provoking_vertex_mode, |
| extended_dynamic_state3_rasterization_samples: self |
| .extended_dynamic_state3_rasterization_samples |
| ^ other.extended_dynamic_state3_rasterization_samples, |
| extended_dynamic_state3_rasterization_stream: self |
| .extended_dynamic_state3_rasterization_stream |
| ^ other.extended_dynamic_state3_rasterization_stream, |
| extended_dynamic_state3_representative_fragment_test_enable: self |
| .extended_dynamic_state3_representative_fragment_test_enable |
| ^ other.extended_dynamic_state3_representative_fragment_test_enable, |
| extended_dynamic_state3_sample_locations_enable: self |
| .extended_dynamic_state3_sample_locations_enable |
| ^ other.extended_dynamic_state3_sample_locations_enable, |
| extended_dynamic_state3_sample_mask: self.extended_dynamic_state3_sample_mask |
| ^ other.extended_dynamic_state3_sample_mask, |
| extended_dynamic_state3_shading_rate_image_enable: self |
| .extended_dynamic_state3_shading_rate_image_enable |
| ^ other.extended_dynamic_state3_shading_rate_image_enable, |
| extended_dynamic_state3_tessellation_domain_origin: self |
| .extended_dynamic_state3_tessellation_domain_origin |
| ^ other.extended_dynamic_state3_tessellation_domain_origin, |
| extended_dynamic_state3_viewport_swizzle: self.extended_dynamic_state3_viewport_swizzle |
| ^ other.extended_dynamic_state3_viewport_swizzle, |
| extended_dynamic_state3_viewport_w_scaling_enable: self |
| .extended_dynamic_state3_viewport_w_scaling_enable |
| ^ other.extended_dynamic_state3_viewport_w_scaling_enable, |
| external_memory_rdma: self.external_memory_rdma ^ other.external_memory_rdma, |
| fill_mode_non_solid: self.fill_mode_non_solid ^ other.fill_mode_non_solid, |
| format_a4b4g4r4: self.format_a4b4g4r4 ^ other.format_a4b4g4r4, |
| format_a4r4g4b4: self.format_a4r4g4b4 ^ other.format_a4r4g4b4, |
| format_rgba10x6_without_y_cb_cr_sampler: self.format_rgba10x6_without_y_cb_cr_sampler |
| ^ other.format_rgba10x6_without_y_cb_cr_sampler, |
| fragment_density_map: self.fragment_density_map ^ other.fragment_density_map, |
| fragment_density_map_deferred: self.fragment_density_map_deferred |
| ^ other.fragment_density_map_deferred, |
| fragment_density_map_dynamic: self.fragment_density_map_dynamic |
| ^ other.fragment_density_map_dynamic, |
| fragment_density_map_non_subsampled_images: self |
| .fragment_density_map_non_subsampled_images |
| ^ other.fragment_density_map_non_subsampled_images, |
| fragment_density_map_offset: self.fragment_density_map_offset |
| ^ other.fragment_density_map_offset, |
| fragment_shader_barycentric: self.fragment_shader_barycentric |
| ^ other.fragment_shader_barycentric, |
| fragment_shader_pixel_interlock: self.fragment_shader_pixel_interlock |
| ^ other.fragment_shader_pixel_interlock, |
| fragment_shader_sample_interlock: self.fragment_shader_sample_interlock |
| ^ other.fragment_shader_sample_interlock, |
| fragment_shader_shading_rate_interlock: self.fragment_shader_shading_rate_interlock |
| ^ other.fragment_shader_shading_rate_interlock, |
| fragment_shading_rate_enums: self.fragment_shading_rate_enums |
| ^ other.fragment_shading_rate_enums, |
| fragment_stores_and_atomics: self.fragment_stores_and_atomics |
| ^ other.fragment_stores_and_atomics, |
| full_draw_index_uint32: self.full_draw_index_uint32 ^ other.full_draw_index_uint32, |
| geometry_shader: self.geometry_shader ^ other.geometry_shader, |
| geometry_streams: self.geometry_streams ^ other.geometry_streams, |
| global_priority_query: self.global_priority_query ^ other.global_priority_query, |
| graphics_pipeline_library: self.graphics_pipeline_library |
| ^ other.graphics_pipeline_library, |
| host_query_reset: self.host_query_reset ^ other.host_query_reset, |
| image2_d_view_of3_d: self.image2_d_view_of3_d ^ other.image2_d_view_of3_d, |
| image_compression_control: self.image_compression_control |
| ^ other.image_compression_control, |
| image_compression_control_swapchain: self.image_compression_control_swapchain |
| ^ other.image_compression_control_swapchain, |
| image_cube_array: self.image_cube_array ^ other.image_cube_array, |
| image_footprint: self.image_footprint ^ other.image_footprint, |
| image_view2_d_on3_d_image: self.image_view2_d_on3_d_image |
| ^ other.image_view2_d_on3_d_image, |
| image_view_format_reinterpretation: self.image_view_format_reinterpretation |
| ^ other.image_view_format_reinterpretation, |
| image_view_format_swizzle: self.image_view_format_swizzle |
| ^ other.image_view_format_swizzle, |
| imageless_framebuffer: self.imageless_framebuffer ^ other.imageless_framebuffer, |
| independent_blend: self.independent_blend ^ other.independent_blend, |
| index_type_uint8: self.index_type_uint8 ^ other.index_type_uint8, |
| indirect_copy: self.indirect_copy ^ other.indirect_copy, |
| inherited_conditional_rendering: self.inherited_conditional_rendering |
| ^ other.inherited_conditional_rendering, |
| inherited_queries: self.inherited_queries ^ other.inherited_queries, |
| inherited_viewport_scissor2_d: self.inherited_viewport_scissor2_d |
| ^ other.inherited_viewport_scissor2_d, |
| inline_uniform_block: self.inline_uniform_block ^ other.inline_uniform_block, |
| invocation_mask: self.invocation_mask ^ other.invocation_mask, |
| large_points: self.large_points ^ other.large_points, |
| legacy_dithering: self.legacy_dithering ^ other.legacy_dithering, |
| linear_color_attachment: self.linear_color_attachment ^ other.linear_color_attachment, |
| logic_op: self.logic_op ^ other.logic_op, |
| maintenance4: self.maintenance4 ^ other.maintenance4, |
| memory_decompression: self.memory_decompression ^ other.memory_decompression, |
| memory_priority: self.memory_priority ^ other.memory_priority, |
| mesh_shader: self.mesh_shader ^ other.mesh_shader, |
| mesh_shader_queries: self.mesh_shader_queries ^ other.mesh_shader_queries, |
| micromap: self.micromap ^ other.micromap, |
| micromap_capture_replay: self.micromap_capture_replay ^ other.micromap_capture_replay, |
| micromap_host_commands: self.micromap_host_commands ^ other.micromap_host_commands, |
| min_lod: self.min_lod ^ other.min_lod, |
| multi_draw: self.multi_draw ^ other.multi_draw, |
| multi_draw_indirect: self.multi_draw_indirect ^ other.multi_draw_indirect, |
| multi_viewport: self.multi_viewport ^ other.multi_viewport, |
| multisample_array_image: self.multisample_array_image ^ other.multisample_array_image, |
| multisampled_render_to_single_sampled: self.multisampled_render_to_single_sampled |
| ^ other.multisampled_render_to_single_sampled, |
| multiview: self.multiview ^ other.multiview, |
| multiview_geometry_shader: self.multiview_geometry_shader |
| ^ other.multiview_geometry_shader, |
| multiview_mesh_shader: self.multiview_mesh_shader ^ other.multiview_mesh_shader, |
| multiview_per_view_viewports: self.multiview_per_view_viewports |
| ^ other.multiview_per_view_viewports, |
| multiview_tessellation_shader: self.multiview_tessellation_shader |
| ^ other.multiview_tessellation_shader, |
| mutable_comparison_samplers: self.mutable_comparison_samplers |
| ^ other.mutable_comparison_samplers, |
| mutable_descriptor_type: self.mutable_descriptor_type ^ other.mutable_descriptor_type, |
| no_invocation_fragment_shading_rates: self.no_invocation_fragment_shading_rates |
| ^ other.no_invocation_fragment_shading_rates, |
| non_seamless_cube_map: self.non_seamless_cube_map ^ other.non_seamless_cube_map, |
| null_descriptor: self.null_descriptor ^ other.null_descriptor, |
| occlusion_query_precise: self.occlusion_query_precise ^ other.occlusion_query_precise, |
| optical_flow: self.optical_flow ^ other.optical_flow, |
| pageable_device_local_memory: self.pageable_device_local_memory |
| ^ other.pageable_device_local_memory, |
| performance_counter_multiple_query_pools: self.performance_counter_multiple_query_pools |
| ^ other.performance_counter_multiple_query_pools, |
| performance_counter_query_pools: self.performance_counter_query_pools |
| ^ other.performance_counter_query_pools, |
| pipeline_creation_cache_control: self.pipeline_creation_cache_control |
| ^ other.pipeline_creation_cache_control, |
| pipeline_executable_info: self.pipeline_executable_info |
| ^ other.pipeline_executable_info, |
| pipeline_fragment_shading_rate: self.pipeline_fragment_shading_rate |
| ^ other.pipeline_fragment_shading_rate, |
| pipeline_properties_identifier: self.pipeline_properties_identifier |
| ^ other.pipeline_properties_identifier, |
| pipeline_protected_access: self.pipeline_protected_access |
| ^ other.pipeline_protected_access, |
| pipeline_robustness: self.pipeline_robustness ^ other.pipeline_robustness, |
| pipeline_statistics_query: self.pipeline_statistics_query |
| ^ other.pipeline_statistics_query, |
| point_polygons: self.point_polygons ^ other.point_polygons, |
| present_barrier: self.present_barrier ^ other.present_barrier, |
| present_id: self.present_id ^ other.present_id, |
| present_wait: self.present_wait ^ other.present_wait, |
| primitive_fragment_shading_rate: self.primitive_fragment_shading_rate |
| ^ other.primitive_fragment_shading_rate, |
| primitive_fragment_shading_rate_mesh_shader: self |
| .primitive_fragment_shading_rate_mesh_shader |
| ^ other.primitive_fragment_shading_rate_mesh_shader, |
| primitive_topology_list_restart: self.primitive_topology_list_restart |
| ^ other.primitive_topology_list_restart, |
| primitive_topology_patch_list_restart: self.primitive_topology_patch_list_restart |
| ^ other.primitive_topology_patch_list_restart, |
| primitives_generated_query: self.primitives_generated_query |
| ^ other.primitives_generated_query, |
| primitives_generated_query_with_non_zero_streams: self |
| .primitives_generated_query_with_non_zero_streams |
| ^ other.primitives_generated_query_with_non_zero_streams, |
| primitives_generated_query_with_rasterizer_discard: self |
| .primitives_generated_query_with_rasterizer_discard |
| ^ other.primitives_generated_query_with_rasterizer_discard, |
| private_data: self.private_data ^ other.private_data, |
| protected_memory: self.protected_memory ^ other.protected_memory, |
| provoking_vertex_last: self.provoking_vertex_last ^ other.provoking_vertex_last, |
| rasterization_order_color_attachment_access: self |
| .rasterization_order_color_attachment_access |
| ^ other.rasterization_order_color_attachment_access, |
| rasterization_order_depth_attachment_access: self |
| .rasterization_order_depth_attachment_access |
| ^ other.rasterization_order_depth_attachment_access, |
| rasterization_order_stencil_attachment_access: self |
| .rasterization_order_stencil_attachment_access |
| ^ other.rasterization_order_stencil_attachment_access, |
| ray_query: self.ray_query ^ other.ray_query, |
| ray_tracing_invocation_reorder: self.ray_tracing_invocation_reorder |
| ^ other.ray_tracing_invocation_reorder, |
| ray_tracing_maintenance1: self.ray_tracing_maintenance1 |
| ^ other.ray_tracing_maintenance1, |
| ray_tracing_motion_blur: self.ray_tracing_motion_blur ^ other.ray_tracing_motion_blur, |
| ray_tracing_motion_blur_pipeline_trace_rays_indirect: self |
| .ray_tracing_motion_blur_pipeline_trace_rays_indirect |
| ^ other.ray_tracing_motion_blur_pipeline_trace_rays_indirect, |
| ray_tracing_pipeline: self.ray_tracing_pipeline ^ other.ray_tracing_pipeline, |
| ray_tracing_pipeline_shader_group_handle_capture_replay: self |
| .ray_tracing_pipeline_shader_group_handle_capture_replay |
| ^ other.ray_tracing_pipeline_shader_group_handle_capture_replay, |
| ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: self |
| .ray_tracing_pipeline_shader_group_handle_capture_replay_mixed |
| ^ other.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed, |
| ray_tracing_pipeline_trace_rays_indirect: self.ray_tracing_pipeline_trace_rays_indirect |
| ^ other.ray_tracing_pipeline_trace_rays_indirect, |
| ray_tracing_pipeline_trace_rays_indirect2: self |
| .ray_tracing_pipeline_trace_rays_indirect2 |
| ^ other.ray_tracing_pipeline_trace_rays_indirect2, |
| ray_traversal_primitive_culling: self.ray_traversal_primitive_culling |
| ^ other.ray_traversal_primitive_culling, |
| rectangular_lines: self.rectangular_lines ^ other.rectangular_lines, |
| report_address_binding: self.report_address_binding ^ other.report_address_binding, |
| representative_fragment_test: self.representative_fragment_test |
| ^ other.representative_fragment_test, |
| robust_buffer_access: self.robust_buffer_access ^ other.robust_buffer_access, |
| robust_buffer_access2: self.robust_buffer_access2 ^ other.robust_buffer_access2, |
| robust_image_access: self.robust_image_access ^ other.robust_image_access, |
| robust_image_access2: self.robust_image_access2 ^ other.robust_image_access2, |
| runtime_descriptor_array: self.runtime_descriptor_array |
| ^ other.runtime_descriptor_array, |
| sample_rate_shading: self.sample_rate_shading ^ other.sample_rate_shading, |
| sampler2_d_view_of3_d: self.sampler2_d_view_of3_d ^ other.sampler2_d_view_of3_d, |
| sampler_anisotropy: self.sampler_anisotropy ^ other.sampler_anisotropy, |
| sampler_filter_minmax: self.sampler_filter_minmax ^ other.sampler_filter_minmax, |
| sampler_mip_lod_bias: self.sampler_mip_lod_bias ^ other.sampler_mip_lod_bias, |
| sampler_mirror_clamp_to_edge: self.sampler_mirror_clamp_to_edge |
| ^ other.sampler_mirror_clamp_to_edge, |
| sampler_ycbcr_conversion: self.sampler_ycbcr_conversion |
| ^ other.sampler_ycbcr_conversion, |
| scalar_block_layout: self.scalar_block_layout ^ other.scalar_block_layout, |
| separate_depth_stencil_layouts: self.separate_depth_stencil_layouts |
| ^ other.separate_depth_stencil_layouts, |
| separate_stencil_mask_ref: self.separate_stencil_mask_ref |
| ^ other.separate_stencil_mask_ref, |
| shader_buffer_float16_atomic_add: self.shader_buffer_float16_atomic_add |
| ^ other.shader_buffer_float16_atomic_add, |
| shader_buffer_float16_atomic_min_max: self.shader_buffer_float16_atomic_min_max |
| ^ other.shader_buffer_float16_atomic_min_max, |
| shader_buffer_float16_atomics: self.shader_buffer_float16_atomics |
| ^ other.shader_buffer_float16_atomics, |
| shader_buffer_float32_atomic_add: self.shader_buffer_float32_atomic_add |
| ^ other.shader_buffer_float32_atomic_add, |
| shader_buffer_float32_atomic_min_max: self.shader_buffer_float32_atomic_min_max |
| ^ other.shader_buffer_float32_atomic_min_max, |
| shader_buffer_float32_atomics: self.shader_buffer_float32_atomics |
| ^ other.shader_buffer_float32_atomics, |
| shader_buffer_float64_atomic_add: self.shader_buffer_float64_atomic_add |
| ^ other.shader_buffer_float64_atomic_add, |
| shader_buffer_float64_atomic_min_max: self.shader_buffer_float64_atomic_min_max |
| ^ other.shader_buffer_float64_atomic_min_max, |
| shader_buffer_float64_atomics: self.shader_buffer_float64_atomics |
| ^ other.shader_buffer_float64_atomics, |
| shader_buffer_int64_atomics: self.shader_buffer_int64_atomics |
| ^ other.shader_buffer_int64_atomics, |
| shader_clip_distance: self.shader_clip_distance ^ other.shader_clip_distance, |
| shader_core_builtins: self.shader_core_builtins ^ other.shader_core_builtins, |
| shader_cull_distance: self.shader_cull_distance ^ other.shader_cull_distance, |
| shader_demote_to_helper_invocation: self.shader_demote_to_helper_invocation |
| ^ other.shader_demote_to_helper_invocation, |
| shader_device_clock: self.shader_device_clock ^ other.shader_device_clock, |
| shader_draw_parameters: self.shader_draw_parameters ^ other.shader_draw_parameters, |
| shader_early_and_late_fragment_tests: self.shader_early_and_late_fragment_tests |
| ^ other.shader_early_and_late_fragment_tests, |
| shader_float16: self.shader_float16 ^ other.shader_float16, |
| shader_float64: self.shader_float64 ^ other.shader_float64, |
| shader_image_float32_atomic_add: self.shader_image_float32_atomic_add |
| ^ other.shader_image_float32_atomic_add, |
| shader_image_float32_atomic_min_max: self.shader_image_float32_atomic_min_max |
| ^ other.shader_image_float32_atomic_min_max, |
| shader_image_float32_atomics: self.shader_image_float32_atomics |
| ^ other.shader_image_float32_atomics, |
| shader_image_gather_extended: self.shader_image_gather_extended |
| ^ other.shader_image_gather_extended, |
| shader_image_int64_atomics: self.shader_image_int64_atomics |
| ^ other.shader_image_int64_atomics, |
| shader_input_attachment_array_dynamic_indexing: self |
| .shader_input_attachment_array_dynamic_indexing |
| ^ other.shader_input_attachment_array_dynamic_indexing, |
| shader_input_attachment_array_non_uniform_indexing: self |
| .shader_input_attachment_array_non_uniform_indexing |
| ^ other.shader_input_attachment_array_non_uniform_indexing, |
| shader_int16: self.shader_int16 ^ other.shader_int16, |
| shader_int64: self.shader_int64 ^ other.shader_int64, |
| shader_int8: self.shader_int8 ^ other.shader_int8, |
| shader_integer_dot_product: self.shader_integer_dot_product |
| ^ other.shader_integer_dot_product, |
| shader_integer_functions2: self.shader_integer_functions2 |
| ^ other.shader_integer_functions2, |
| shader_module_identifier: self.shader_module_identifier |
| ^ other.shader_module_identifier, |
| shader_output_layer: self.shader_output_layer ^ other.shader_output_layer, |
| shader_output_viewport_index: self.shader_output_viewport_index |
| ^ other.shader_output_viewport_index, |
| shader_resource_min_lod: self.shader_resource_min_lod ^ other.shader_resource_min_lod, |
| shader_resource_residency: self.shader_resource_residency |
| ^ other.shader_resource_residency, |
| shader_sample_rate_interpolation_functions: self |
| .shader_sample_rate_interpolation_functions |
| ^ other.shader_sample_rate_interpolation_functions, |
| shader_sampled_image_array_dynamic_indexing: self |
| .shader_sampled_image_array_dynamic_indexing |
| ^ other.shader_sampled_image_array_dynamic_indexing, |
| shader_sampled_image_array_non_uniform_indexing: self |
| .shader_sampled_image_array_non_uniform_indexing |
| ^ other.shader_sampled_image_array_non_uniform_indexing, |
| shader_shared_float16_atomic_add: self.shader_shared_float16_atomic_add |
| ^ other.shader_shared_float16_atomic_add, |
| shader_shared_float16_atomic_min_max: self.shader_shared_float16_atomic_min_max |
| ^ other.shader_shared_float16_atomic_min_max, |
| shader_shared_float16_atomics: self.shader_shared_float16_atomics |
| ^ other.shader_shared_float16_atomics, |
| shader_shared_float32_atomic_add: self.shader_shared_float32_atomic_add |
| ^ other.shader_shared_float32_atomic_add, |
| shader_shared_float32_atomic_min_max: self.shader_shared_float32_atomic_min_max |
| ^ other.shader_shared_float32_atomic_min_max, |
| shader_shared_float32_atomics: self.shader_shared_float32_atomics |
| ^ other.shader_shared_float32_atomics, |
| shader_shared_float64_atomic_add: self.shader_shared_float64_atomic_add |
| ^ other.shader_shared_float64_atomic_add, |
| shader_shared_float64_atomic_min_max: self.shader_shared_float64_atomic_min_max |
| ^ other.shader_shared_float64_atomic_min_max, |
| shader_shared_float64_atomics: self.shader_shared_float64_atomics |
| ^ other.shader_shared_float64_atomics, |
| shader_shared_int64_atomics: self.shader_shared_int64_atomics |
| ^ other.shader_shared_int64_atomics, |
| shader_sm_builtins: self.shader_sm_builtins ^ other.shader_sm_builtins, |
| shader_storage_buffer_array_dynamic_indexing: self |
| .shader_storage_buffer_array_dynamic_indexing |
| ^ other.shader_storage_buffer_array_dynamic_indexing, |
| shader_storage_buffer_array_non_uniform_indexing: self |
| .shader_storage_buffer_array_non_uniform_indexing |
| ^ other.shader_storage_buffer_array_non_uniform_indexing, |
| shader_storage_image_array_dynamic_indexing: self |
| .shader_storage_image_array_dynamic_indexing |
| ^ other.shader_storage_image_array_dynamic_indexing, |
| shader_storage_image_array_non_uniform_indexing: self |
| .shader_storage_image_array_non_uniform_indexing |
| ^ other.shader_storage_image_array_non_uniform_indexing, |
| shader_storage_image_extended_formats: self.shader_storage_image_extended_formats |
| ^ other.shader_storage_image_extended_formats, |
| shader_storage_image_multisample: self.shader_storage_image_multisample |
| ^ other.shader_storage_image_multisample, |
| shader_storage_image_read_without_format: self.shader_storage_image_read_without_format |
| ^ other.shader_storage_image_read_without_format, |
| shader_storage_image_write_without_format: self |
| .shader_storage_image_write_without_format |
| ^ other.shader_storage_image_write_without_format, |
| shader_storage_texel_buffer_array_dynamic_indexing: self |
| .shader_storage_texel_buffer_array_dynamic_indexing |
| ^ other.shader_storage_texel_buffer_array_dynamic_indexing, |
| shader_storage_texel_buffer_array_non_uniform_indexing: self |
| .shader_storage_texel_buffer_array_non_uniform_indexing |
| ^ other.shader_storage_texel_buffer_array_non_uniform_indexing, |
| shader_subgroup_clock: self.shader_subgroup_clock ^ other.shader_subgroup_clock, |
| shader_subgroup_extended_types: self.shader_subgroup_extended_types |
| ^ other.shader_subgroup_extended_types, |
| shader_subgroup_uniform_control_flow: self.shader_subgroup_uniform_control_flow |
| ^ other.shader_subgroup_uniform_control_flow, |
| shader_terminate_invocation: self.shader_terminate_invocation |
| ^ other.shader_terminate_invocation, |
| shader_tessellation_and_geometry_point_size: self |
| .shader_tessellation_and_geometry_point_size |
| ^ other.shader_tessellation_and_geometry_point_size, |
| shader_uniform_buffer_array_dynamic_indexing: self |
| .shader_uniform_buffer_array_dynamic_indexing |
| ^ other.shader_uniform_buffer_array_dynamic_indexing, |
| shader_uniform_buffer_array_non_uniform_indexing: self |
| .shader_uniform_buffer_array_non_uniform_indexing |
| ^ other.shader_uniform_buffer_array_non_uniform_indexing, |
| shader_uniform_texel_buffer_array_dynamic_indexing: self |
| .shader_uniform_texel_buffer_array_dynamic_indexing |
| ^ other.shader_uniform_texel_buffer_array_dynamic_indexing, |
| shader_uniform_texel_buffer_array_non_uniform_indexing: self |
| .shader_uniform_texel_buffer_array_non_uniform_indexing |
| ^ other.shader_uniform_texel_buffer_array_non_uniform_indexing, |
| shader_zero_initialize_workgroup_memory: self.shader_zero_initialize_workgroup_memory |
| ^ other.shader_zero_initialize_workgroup_memory, |
| shading_rate_coarse_sample_order: self.shading_rate_coarse_sample_order |
| ^ other.shading_rate_coarse_sample_order, |
| shading_rate_image: self.shading_rate_image ^ other.shading_rate_image, |
| smooth_lines: self.smooth_lines ^ other.smooth_lines, |
| sparse_binding: self.sparse_binding ^ other.sparse_binding, |
| sparse_image_float32_atomic_add: self.sparse_image_float32_atomic_add |
| ^ other.sparse_image_float32_atomic_add, |
| sparse_image_float32_atomic_min_max: self.sparse_image_float32_atomic_min_max |
| ^ other.sparse_image_float32_atomic_min_max, |
| sparse_image_float32_atomics: self.sparse_image_float32_atomics |
| ^ other.sparse_image_float32_atomics, |
| sparse_image_int64_atomics: self.sparse_image_int64_atomics |
| ^ other.sparse_image_int64_atomics, |
| sparse_residency16_samples: self.sparse_residency16_samples |
| ^ other.sparse_residency16_samples, |
| sparse_residency2_samples: self.sparse_residency2_samples |
| ^ other.sparse_residency2_samples, |
| sparse_residency4_samples: self.sparse_residency4_samples |
| ^ other.sparse_residency4_samples, |
| sparse_residency8_samples: self.sparse_residency8_samples |
| ^ other.sparse_residency8_samples, |
| sparse_residency_aliased: self.sparse_residency_aliased |
| ^ other.sparse_residency_aliased, |
| sparse_residency_buffer: self.sparse_residency_buffer ^ other.sparse_residency_buffer, |
| sparse_residency_image2_d: self.sparse_residency_image2_d |
| ^ other.sparse_residency_image2_d, |
| sparse_residency_image3_d: self.sparse_residency_image3_d |
| ^ other.sparse_residency_image3_d, |
| stippled_bresenham_lines: self.stippled_bresenham_lines |
| ^ other.stippled_bresenham_lines, |
| stippled_rectangular_lines: self.stippled_rectangular_lines |
| ^ other.stippled_rectangular_lines, |
| stippled_smooth_lines: self.stippled_smooth_lines ^ other.stippled_smooth_lines, |
| storage_buffer16_bit_access: self.storage_buffer16_bit_access |
| ^ other.storage_buffer16_bit_access, |
| storage_buffer8_bit_access: self.storage_buffer8_bit_access |
| ^ other.storage_buffer8_bit_access, |
| storage_input_output16: self.storage_input_output16 ^ other.storage_input_output16, |
| storage_push_constant16: self.storage_push_constant16 ^ other.storage_push_constant16, |
| storage_push_constant8: self.storage_push_constant8 ^ other.storage_push_constant8, |
| subgroup_broadcast_dynamic_id: self.subgroup_broadcast_dynamic_id |
| ^ other.subgroup_broadcast_dynamic_id, |
| subgroup_size_control: self.subgroup_size_control ^ other.subgroup_size_control, |
| subpass_merge_feedback: self.subpass_merge_feedback ^ other.subpass_merge_feedback, |
| subpass_shading: self.subpass_shading ^ other.subpass_shading, |
| supersample_fragment_shading_rates: self.supersample_fragment_shading_rates |
| ^ other.supersample_fragment_shading_rates, |
| swapchain_maintenance1: self.swapchain_maintenance1 ^ other.swapchain_maintenance1, |
| synchronization2: self.synchronization2 ^ other.synchronization2, |
| task_shader: self.task_shader ^ other.task_shader, |
| tessellation_isolines: self.tessellation_isolines ^ other.tessellation_isolines, |
| tessellation_point_mode: self.tessellation_point_mode ^ other.tessellation_point_mode, |
| tessellation_shader: self.tessellation_shader ^ other.tessellation_shader, |
| texel_buffer_alignment: self.texel_buffer_alignment ^ other.texel_buffer_alignment, |
| texture_block_match: self.texture_block_match ^ other.texture_block_match, |
| texture_box_filter: self.texture_box_filter ^ other.texture_box_filter, |
| texture_compression_astc_hdr: self.texture_compression_astc_hdr |
| ^ other.texture_compression_astc_hdr, |
| texture_compression_astc_ldr: self.texture_compression_astc_ldr |
| ^ other.texture_compression_astc_ldr, |
| texture_compression_bc: self.texture_compression_bc ^ other.texture_compression_bc, |
| texture_compression_etc2: self.texture_compression_etc2 |
| ^ other.texture_compression_etc2, |
| texture_sample_weighted: self.texture_sample_weighted ^ other.texture_sample_weighted, |
| tile_properties: self.tile_properties ^ other.tile_properties, |
| timeline_semaphore: self.timeline_semaphore ^ other.timeline_semaphore, |
| transform_feedback: self.transform_feedback ^ other.transform_feedback, |
| transform_feedback_preserves_provoking_vertex: self |
| .transform_feedback_preserves_provoking_vertex |
| ^ other.transform_feedback_preserves_provoking_vertex, |
| triangle_fans: self.triangle_fans ^ other.triangle_fans, |
| uniform_and_storage_buffer16_bit_access: self.uniform_and_storage_buffer16_bit_access |
| ^ other.uniform_and_storage_buffer16_bit_access, |
| uniform_and_storage_buffer8_bit_access: self.uniform_and_storage_buffer8_bit_access |
| ^ other.uniform_and_storage_buffer8_bit_access, |
| uniform_buffer_standard_layout: self.uniform_buffer_standard_layout |
| ^ other.uniform_buffer_standard_layout, |
| variable_multisample_rate: self.variable_multisample_rate |
| ^ other.variable_multisample_rate, |
| variable_pointers: self.variable_pointers ^ other.variable_pointers, |
| variable_pointers_storage_buffer: self.variable_pointers_storage_buffer |
| ^ other.variable_pointers_storage_buffer, |
| vertex_attribute_access_beyond_stride: self.vertex_attribute_access_beyond_stride |
| ^ other.vertex_attribute_access_beyond_stride, |
| vertex_attribute_instance_rate_divisor: self.vertex_attribute_instance_rate_divisor |
| ^ other.vertex_attribute_instance_rate_divisor, |
| vertex_attribute_instance_rate_zero_divisor: self |
| .vertex_attribute_instance_rate_zero_divisor |
| ^ other.vertex_attribute_instance_rate_zero_divisor, |
| vertex_input_dynamic_state: self.vertex_input_dynamic_state |
| ^ other.vertex_input_dynamic_state, |
| vertex_pipeline_stores_and_atomics: self.vertex_pipeline_stores_and_atomics |
| ^ other.vertex_pipeline_stores_and_atomics, |
| vulkan_memory_model: self.vulkan_memory_model ^ other.vulkan_memory_model, |
| vulkan_memory_model_availability_visibility_chains: self |
| .vulkan_memory_model_availability_visibility_chains |
| ^ other.vulkan_memory_model_availability_visibility_chains, |
| vulkan_memory_model_device_scope: self.vulkan_memory_model_device_scope |
| ^ other.vulkan_memory_model_device_scope, |
| wide_lines: self.wide_lines ^ other.wide_lines, |
| workgroup_memory_explicit_layout: self.workgroup_memory_explicit_layout |
| ^ other.workgroup_memory_explicit_layout, |
| workgroup_memory_explicit_layout16_bit_access: self |
| .workgroup_memory_explicit_layout16_bit_access |
| ^ other.workgroup_memory_explicit_layout16_bit_access, |
| workgroup_memory_explicit_layout8_bit_access: self |
| .workgroup_memory_explicit_layout8_bit_access |
| ^ other.workgroup_memory_explicit_layout8_bit_access, |
| workgroup_memory_explicit_layout_scalar_block_layout: self |
| .workgroup_memory_explicit_layout_scalar_block_layout |
| ^ other.workgroup_memory_explicit_layout_scalar_block_layout, |
| ycbcr2plane444_formats: self.ycbcr2plane444_formats ^ other.ycbcr2plane444_formats, |
| ycbcr_image_arrays: self.ycbcr_image_arrays ^ other.ycbcr_image_arrays, |
| _ne: crate::NonExhaustive(()), |
| } |
| } |
| } |
| impl std::ops::BitAnd for Features { |
| type Output = Features; |
| #[inline] |
| fn bitand(self, rhs: Self) -> Self::Output { |
| self.intersection(&rhs) |
| } |
| } |
| impl std::ops::BitAndAssign for Features { |
| #[inline] |
| fn bitand_assign(&mut self, rhs: Self) { |
| *self = self.intersection(&rhs); |
| } |
| } |
| impl std::ops::BitOr for Features { |
| type Output = Features; |
| #[inline] |
| fn bitor(self, rhs: Self) -> Self::Output { |
| self.union(&rhs) |
| } |
| } |
| impl std::ops::BitOrAssign for Features { |
| #[inline] |
| fn bitor_assign(&mut self, rhs: Self) { |
| *self = self.union(&rhs); |
| } |
| } |
| impl std::ops::BitXor for Features { |
| type Output = Features; |
| #[inline] |
| fn bitxor(self, rhs: Self) -> Self::Output { |
| self.symmetric_difference(&rhs) |
| } |
| } |
| impl std::ops::BitXorAssign for Features { |
| #[inline] |
| fn bitxor_assign(&mut self, rhs: Self) { |
| *self = self.symmetric_difference(&rhs); |
| } |
| } |
| impl std::ops::Sub for Features { |
| type Output = Features; |
| #[inline] |
| fn sub(self, rhs: Self) -> Self::Output { |
| self.difference(&rhs) |
| } |
| } |
| impl std::ops::SubAssign for Features { |
| #[inline] |
| fn sub_assign(&mut self, rhs: Self) { |
| *self = self.difference(&rhs); |
| } |
| } |
| impl std::fmt::Debug for Features { |
| #[allow(unused_assignments)] |
| fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { |
| write!(f, "[")?; |
| let mut first = true; |
| if self.acceleration_structure { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("accelerationStructure")?; |
| } |
| if self.acceleration_structure_capture_replay { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("accelerationStructureCaptureReplay")?; |
| } |
| if self.acceleration_structure_host_commands { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("accelerationStructureHostCommands")?; |
| } |
| if self.acceleration_structure_indirect_build { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("accelerationStructureIndirectBuild")?; |
| } |
| if self.advanced_blend_coherent_operations { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("advancedBlendCoherentOperations")?; |
| } |
| if self.alpha_to_one { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("alphaToOne")?; |
| } |
| if self.amigo_profiling { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("amigoProfiling")?; |
| } |
| if self.attachment_feedback_loop_layout { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("attachmentFeedbackLoopLayout")?; |
| } |
| if self.attachment_fragment_shading_rate { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("attachmentFragmentShadingRate")?; |
| } |
| if self.border_color_swizzle { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("borderColorSwizzle")?; |
| } |
| if self.border_color_swizzle_from_image { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("borderColorSwizzleFromImage")?; |
| } |
| if self.bresenham_lines { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("bresenhamLines")?; |
| } |
| if self.buffer_device_address { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("bufferDeviceAddress")?; |
| } |
| if self.buffer_device_address_capture_replay { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("bufferDeviceAddressCaptureReplay")?; |
| } |
| if self.buffer_device_address_multi_device { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("bufferDeviceAddressMultiDevice")?; |
| } |
| if self.color_write_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("colorWriteEnable")?; |
| } |
| if self.compute_derivative_group_linear { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("computeDerivativeGroupLinear")?; |
| } |
| if self.compute_derivative_group_quads { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("computeDerivativeGroupQuads")?; |
| } |
| if self.compute_full_subgroups { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("computeFullSubgroups")?; |
| } |
| if self.conditional_rendering { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("conditionalRendering")?; |
| } |
| if self.constant_alpha_color_blend_factors { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("constantAlphaColorBlendFactors")?; |
| } |
| if self.cooperative_matrix { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("cooperativeMatrix")?; |
| } |
| if self.cooperative_matrix_robust_buffer_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("cooperativeMatrixRobustBufferAccess")?; |
| } |
| if self.corner_sampled_image { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("cornerSampledImage")?; |
| } |
| if self.coverage_reduction_mode { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("coverageReductionMode")?; |
| } |
| if self.custom_border_color_without_format { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("customBorderColorWithoutFormat")?; |
| } |
| if self.custom_border_colors { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("customBorderColors")?; |
| } |
| if self.decode_mode_shared_exponent { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("decodeModeSharedExponent")?; |
| } |
| if self.dedicated_allocation_image_aliasing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("dedicatedAllocationImageAliasing")?; |
| } |
| if self.depth_bias_clamp { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("depthBiasClamp")?; |
| } |
| if self.depth_bounds { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("depthBounds")?; |
| } |
| if self.depth_clamp { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("depthClamp")?; |
| } |
| if self.depth_clamp_zero_one { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("depthClampZeroOne")?; |
| } |
| if self.depth_clip_control { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("depthClipControl")?; |
| } |
| if self.depth_clip_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("depthClipEnable")?; |
| } |
| if self.descriptor_binding_acceleration_structure_update_after_bind { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBindingAccelerationStructureUpdateAfterBind")?; |
| } |
| if self.descriptor_binding_inline_uniform_block_update_after_bind { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBindingInlineUniformBlockUpdateAfterBind")?; |
| } |
| if self.descriptor_binding_partially_bound { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBindingPartiallyBound")?; |
| } |
| if self.descriptor_binding_sampled_image_update_after_bind { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBindingSampledImageUpdateAfterBind")?; |
| } |
| if self.descriptor_binding_storage_buffer_update_after_bind { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBindingStorageBufferUpdateAfterBind")?; |
| } |
| if self.descriptor_binding_storage_image_update_after_bind { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBindingStorageImageUpdateAfterBind")?; |
| } |
| if self.descriptor_binding_storage_texel_buffer_update_after_bind { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBindingStorageTexelBufferUpdateAfterBind")?; |
| } |
| if self.descriptor_binding_uniform_buffer_update_after_bind { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBindingUniformBufferUpdateAfterBind")?; |
| } |
| if self.descriptor_binding_uniform_texel_buffer_update_after_bind { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBindingUniformTexelBufferUpdateAfterBind")?; |
| } |
| if self.descriptor_binding_update_unused_while_pending { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBindingUpdateUnusedWhilePending")?; |
| } |
| if self.descriptor_binding_variable_descriptor_count { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBindingVariableDescriptorCount")?; |
| } |
| if self.descriptor_buffer { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBuffer")?; |
| } |
| if self.descriptor_buffer_capture_replay { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBufferCaptureReplay")?; |
| } |
| if self.descriptor_buffer_image_layout_ignored { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBufferImageLayoutIgnored")?; |
| } |
| if self.descriptor_buffer_push_descriptors { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorBufferPushDescriptors")?; |
| } |
| if self.descriptor_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorIndexing")?; |
| } |
| if self.descriptor_set_host_mapping { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("descriptorSetHostMapping")?; |
| } |
| if self.device_coherent_memory { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("deviceCoherentMemory")?; |
| } |
| if self.device_fault { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("deviceFault")?; |
| } |
| if self.device_fault_vendor_binary { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("deviceFaultVendorBinary")?; |
| } |
| if self.device_generated_commands { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("deviceGeneratedCommands")?; |
| } |
| if self.device_memory_report { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("deviceMemoryReport")?; |
| } |
| if self.diagnostics_config { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("diagnosticsConfig")?; |
| } |
| if self.draw_indirect_count { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("drawIndirectCount")?; |
| } |
| if self.draw_indirect_first_instance { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("drawIndirectFirstInstance")?; |
| } |
| if self.dual_src_blend { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("dualSrcBlend")?; |
| } |
| if self.dynamic_rendering { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("dynamicRendering")?; |
| } |
| if self.events { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("events")?; |
| } |
| if self.exclusive_scissor { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("exclusiveScissor")?; |
| } |
| if self.extended_dynamic_state { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState")?; |
| } |
| if self.extended_dynamic_state2 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState2")?; |
| } |
| if self.extended_dynamic_state2_logic_op { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState2LogicOp")?; |
| } |
| if self.extended_dynamic_state2_patch_control_points { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState2PatchControlPoints")?; |
| } |
| if self.extended_dynamic_state3_alpha_to_coverage_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3AlphaToCoverageEnable")?; |
| } |
| if self.extended_dynamic_state3_alpha_to_one_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3AlphaToOneEnable")?; |
| } |
| if self.extended_dynamic_state3_color_blend_advanced { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3ColorBlendAdvanced")?; |
| } |
| if self.extended_dynamic_state3_color_blend_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3ColorBlendEnable")?; |
| } |
| if self.extended_dynamic_state3_color_blend_equation { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3ColorBlendEquation")?; |
| } |
| if self.extended_dynamic_state3_color_write_mask { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3ColorWriteMask")?; |
| } |
| if self.extended_dynamic_state3_conservative_rasterization_mode { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3ConservativeRasterizationMode")?; |
| } |
| if self.extended_dynamic_state3_coverage_modulation_mode { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3CoverageModulationMode")?; |
| } |
| if self.extended_dynamic_state3_coverage_modulation_table { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3CoverageModulationTable")?; |
| } |
| if self.extended_dynamic_state3_coverage_modulation_table_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3CoverageModulationTableEnable")?; |
| } |
| if self.extended_dynamic_state3_coverage_reduction_mode { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3CoverageReductionMode")?; |
| } |
| if self.extended_dynamic_state3_coverage_to_color_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3CoverageToColorEnable")?; |
| } |
| if self.extended_dynamic_state3_coverage_to_color_location { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3CoverageToColorLocation")?; |
| } |
| if self.extended_dynamic_state3_depth_clamp_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3DepthClampEnable")?; |
| } |
| if self.extended_dynamic_state3_depth_clip_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3DepthClipEnable")?; |
| } |
| if self.extended_dynamic_state3_depth_clip_negative_one_to_one { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3DepthClipNegativeOneToOne")?; |
| } |
| if self.extended_dynamic_state3_extra_primitive_overestimation_size { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3ExtraPrimitiveOverestimationSize")?; |
| } |
| if self.extended_dynamic_state3_line_rasterization_mode { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3LineRasterizationMode")?; |
| } |
| if self.extended_dynamic_state3_line_stipple_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3LineStippleEnable")?; |
| } |
| if self.extended_dynamic_state3_logic_op_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3LogicOpEnable")?; |
| } |
| if self.extended_dynamic_state3_polygon_mode { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3PolygonMode")?; |
| } |
| if self.extended_dynamic_state3_provoking_vertex_mode { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3ProvokingVertexMode")?; |
| } |
| if self.extended_dynamic_state3_rasterization_samples { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3RasterizationSamples")?; |
| } |
| if self.extended_dynamic_state3_rasterization_stream { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3RasterizationStream")?; |
| } |
| if self.extended_dynamic_state3_representative_fragment_test_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3RepresentativeFragmentTestEnable")?; |
| } |
| if self.extended_dynamic_state3_sample_locations_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3SampleLocationsEnable")?; |
| } |
| if self.extended_dynamic_state3_sample_mask { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3SampleMask")?; |
| } |
| if self.extended_dynamic_state3_shading_rate_image_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3ShadingRateImageEnable")?; |
| } |
| if self.extended_dynamic_state3_tessellation_domain_origin { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3TessellationDomainOrigin")?; |
| } |
| if self.extended_dynamic_state3_viewport_swizzle { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3ViewportSwizzle")?; |
| } |
| if self.extended_dynamic_state3_viewport_w_scaling_enable { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("extendedDynamicState3ViewportWScalingEnable")?; |
| } |
| if self.external_memory_rdma { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("externalMemoryRDMA")?; |
| } |
| if self.fill_mode_non_solid { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fillModeNonSolid")?; |
| } |
| if self.format_a4b4g4r4 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("formatA4B4G4R4")?; |
| } |
| if self.format_a4r4g4b4 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("formatA4R4G4B4")?; |
| } |
| if self.format_rgba10x6_without_y_cb_cr_sampler { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("formatRgba10x6WithoutYCbCrSampler")?; |
| } |
| if self.fragment_density_map { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fragmentDensityMap")?; |
| } |
| if self.fragment_density_map_deferred { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fragmentDensityMapDeferred")?; |
| } |
| if self.fragment_density_map_dynamic { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fragmentDensityMapDynamic")?; |
| } |
| if self.fragment_density_map_non_subsampled_images { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fragmentDensityMapNonSubsampledImages")?; |
| } |
| if self.fragment_density_map_offset { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fragmentDensityMapOffset")?; |
| } |
| if self.fragment_shader_barycentric { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fragmentShaderBarycentric")?; |
| } |
| if self.fragment_shader_pixel_interlock { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fragmentShaderPixelInterlock")?; |
| } |
| if self.fragment_shader_sample_interlock { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fragmentShaderSampleInterlock")?; |
| } |
| if self.fragment_shader_shading_rate_interlock { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fragmentShaderShadingRateInterlock")?; |
| } |
| if self.fragment_shading_rate_enums { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fragmentShadingRateEnums")?; |
| } |
| if self.fragment_stores_and_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fragmentStoresAndAtomics")?; |
| } |
| if self.full_draw_index_uint32 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("fullDrawIndexUint32")?; |
| } |
| if self.geometry_shader { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("geometryShader")?; |
| } |
| if self.geometry_streams { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("geometryStreams")?; |
| } |
| if self.global_priority_query { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("globalPriorityQuery")?; |
| } |
| if self.graphics_pipeline_library { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("graphicsPipelineLibrary")?; |
| } |
| if self.host_query_reset { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("hostQueryReset")?; |
| } |
| if self.image2_d_view_of3_d { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("image2DViewOf3D")?; |
| } |
| if self.image_compression_control { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("imageCompressionControl")?; |
| } |
| if self.image_compression_control_swapchain { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("imageCompressionControlSwapchain")?; |
| } |
| if self.image_cube_array { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("imageCubeArray")?; |
| } |
| if self.image_footprint { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("imageFootprint")?; |
| } |
| if self.image_view2_d_on3_d_image { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("imageView2DOn3DImage")?; |
| } |
| if self.image_view_format_reinterpretation { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("imageViewFormatReinterpretation")?; |
| } |
| if self.image_view_format_swizzle { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("imageViewFormatSwizzle")?; |
| } |
| if self.imageless_framebuffer { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("imagelessFramebuffer")?; |
| } |
| if self.independent_blend { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("independentBlend")?; |
| } |
| if self.index_type_uint8 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("indexTypeUint8")?; |
| } |
| if self.indirect_copy { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("indirectCopy")?; |
| } |
| if self.inherited_conditional_rendering { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("inheritedConditionalRendering")?; |
| } |
| if self.inherited_queries { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("inheritedQueries")?; |
| } |
| if self.inherited_viewport_scissor2_d { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("inheritedViewportScissor2D")?; |
| } |
| if self.inline_uniform_block { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("inlineUniformBlock")?; |
| } |
| if self.invocation_mask { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("invocationMask")?; |
| } |
| if self.large_points { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("largePoints")?; |
| } |
| if self.legacy_dithering { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("legacyDithering")?; |
| } |
| if self.linear_color_attachment { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("linearColorAttachment")?; |
| } |
| if self.logic_op { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("logicOp")?; |
| } |
| if self.maintenance4 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("maintenance4")?; |
| } |
| if self.memory_decompression { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("memoryDecompression")?; |
| } |
| if self.memory_priority { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("memoryPriority")?; |
| } |
| if self.mesh_shader { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("meshShader")?; |
| } |
| if self.mesh_shader_queries { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("meshShaderQueries")?; |
| } |
| if self.micromap { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("micromap")?; |
| } |
| if self.micromap_capture_replay { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("micromapCaptureReplay")?; |
| } |
| if self.micromap_host_commands { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("micromapHostCommands")?; |
| } |
| if self.min_lod { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("minLod")?; |
| } |
| if self.multi_draw { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("multiDraw")?; |
| } |
| if self.multi_draw_indirect { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("multiDrawIndirect")?; |
| } |
| if self.multi_viewport { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("multiViewport")?; |
| } |
| if self.multisample_array_image { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("multisampleArrayImage")?; |
| } |
| if self.multisampled_render_to_single_sampled { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("multisampledRenderToSingleSampled")?; |
| } |
| if self.multiview { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("multiview")?; |
| } |
| if self.multiview_geometry_shader { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("multiviewGeometryShader")?; |
| } |
| if self.multiview_mesh_shader { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("multiviewMeshShader")?; |
| } |
| if self.multiview_per_view_viewports { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("multiviewPerViewViewports")?; |
| } |
| if self.multiview_tessellation_shader { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("multiviewTessellationShader")?; |
| } |
| if self.mutable_comparison_samplers { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("mutableComparisonSamplers")?; |
| } |
| if self.mutable_descriptor_type { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("mutableDescriptorType")?; |
| } |
| if self.no_invocation_fragment_shading_rates { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("noInvocationFragmentShadingRates")?; |
| } |
| if self.non_seamless_cube_map { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("nonSeamlessCubeMap")?; |
| } |
| if self.null_descriptor { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("nullDescriptor")?; |
| } |
| if self.occlusion_query_precise { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("occlusionQueryPrecise")?; |
| } |
| if self.optical_flow { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("opticalFlow")?; |
| } |
| if self.pageable_device_local_memory { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("pageableDeviceLocalMemory")?; |
| } |
| if self.performance_counter_multiple_query_pools { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("performanceCounterMultipleQueryPools")?; |
| } |
| if self.performance_counter_query_pools { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("performanceCounterQueryPools")?; |
| } |
| if self.pipeline_creation_cache_control { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("pipelineCreationCacheControl")?; |
| } |
| if self.pipeline_executable_info { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("pipelineExecutableInfo")?; |
| } |
| if self.pipeline_fragment_shading_rate { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("pipelineFragmentShadingRate")?; |
| } |
| if self.pipeline_properties_identifier { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("pipelinePropertiesIdentifier")?; |
| } |
| if self.pipeline_protected_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("pipelineProtectedAccess")?; |
| } |
| if self.pipeline_robustness { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("pipelineRobustness")?; |
| } |
| if self.pipeline_statistics_query { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("pipelineStatisticsQuery")?; |
| } |
| if self.point_polygons { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("pointPolygons")?; |
| } |
| if self.present_barrier { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("presentBarrier")?; |
| } |
| if self.present_id { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("presentId")?; |
| } |
| if self.present_wait { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("presentWait")?; |
| } |
| if self.primitive_fragment_shading_rate { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("primitiveFragmentShadingRate")?; |
| } |
| if self.primitive_fragment_shading_rate_mesh_shader { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("primitiveFragmentShadingRateMeshShader")?; |
| } |
| if self.primitive_topology_list_restart { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("primitiveTopologyListRestart")?; |
| } |
| if self.primitive_topology_patch_list_restart { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("primitiveTopologyPatchListRestart")?; |
| } |
| if self.primitives_generated_query { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("primitivesGeneratedQuery")?; |
| } |
| if self.primitives_generated_query_with_non_zero_streams { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("primitivesGeneratedQueryWithNonZeroStreams")?; |
| } |
| if self.primitives_generated_query_with_rasterizer_discard { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("primitivesGeneratedQueryWithRasterizerDiscard")?; |
| } |
| if self.private_data { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("privateData")?; |
| } |
| if self.protected_memory { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("protectedMemory")?; |
| } |
| if self.provoking_vertex_last { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("provokingVertexLast")?; |
| } |
| if self.rasterization_order_color_attachment_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rasterizationOrderColorAttachmentAccess")?; |
| } |
| if self.rasterization_order_depth_attachment_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rasterizationOrderDepthAttachmentAccess")?; |
| } |
| if self.rasterization_order_stencil_attachment_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rasterizationOrderStencilAttachmentAccess")?; |
| } |
| if self.ray_query { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rayQuery")?; |
| } |
| if self.ray_tracing_invocation_reorder { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rayTracingInvocationReorder")?; |
| } |
| if self.ray_tracing_maintenance1 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rayTracingMaintenance1")?; |
| } |
| if self.ray_tracing_motion_blur { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rayTracingMotionBlur")?; |
| } |
| if self.ray_tracing_motion_blur_pipeline_trace_rays_indirect { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rayTracingMotionBlurPipelineTraceRaysIndirect")?; |
| } |
| if self.ray_tracing_pipeline { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rayTracingPipeline")?; |
| } |
| if self.ray_tracing_pipeline_shader_group_handle_capture_replay { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rayTracingPipelineShaderGroupHandleCaptureReplay")?; |
| } |
| if self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rayTracingPipelineShaderGroupHandleCaptureReplayMixed")?; |
| } |
| if self.ray_tracing_pipeline_trace_rays_indirect { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rayTracingPipelineTraceRaysIndirect")?; |
| } |
| if self.ray_tracing_pipeline_trace_rays_indirect2 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rayTracingPipelineTraceRaysIndirect2")?; |
| } |
| if self.ray_traversal_primitive_culling { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rayTraversalPrimitiveCulling")?; |
| } |
| if self.rectangular_lines { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("rectangularLines")?; |
| } |
| if self.report_address_binding { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("reportAddressBinding")?; |
| } |
| if self.representative_fragment_test { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("representativeFragmentTest")?; |
| } |
| if self.robust_buffer_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("robustBufferAccess")?; |
| } |
| if self.robust_buffer_access2 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("robustBufferAccess2")?; |
| } |
| if self.robust_image_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("robustImageAccess")?; |
| } |
| if self.robust_image_access2 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("robustImageAccess2")?; |
| } |
| if self.runtime_descriptor_array { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("runtimeDescriptorArray")?; |
| } |
| if self.sample_rate_shading { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sampleRateShading")?; |
| } |
| if self.sampler2_d_view_of3_d { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sampler2DViewOf3D")?; |
| } |
| if self.sampler_anisotropy { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("samplerAnisotropy")?; |
| } |
| if self.sampler_filter_minmax { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("samplerFilterMinmax")?; |
| } |
| if self.sampler_mip_lod_bias { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("samplerMipLodBias")?; |
| } |
| if self.sampler_mirror_clamp_to_edge { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("samplerMirrorClampToEdge")?; |
| } |
| if self.sampler_ycbcr_conversion { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("samplerYcbcrConversion")?; |
| } |
| if self.scalar_block_layout { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("scalarBlockLayout")?; |
| } |
| if self.separate_depth_stencil_layouts { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("separateDepthStencilLayouts")?; |
| } |
| if self.separate_stencil_mask_ref { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("separateStencilMaskRef")?; |
| } |
| if self.shader_buffer_float16_atomic_add { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderBufferFloat16AtomicAdd")?; |
| } |
| if self.shader_buffer_float16_atomic_min_max { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderBufferFloat16AtomicMinMax")?; |
| } |
| if self.shader_buffer_float16_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderBufferFloat16Atomics")?; |
| } |
| if self.shader_buffer_float32_atomic_add { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderBufferFloat32AtomicAdd")?; |
| } |
| if self.shader_buffer_float32_atomic_min_max { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderBufferFloat32AtomicMinMax")?; |
| } |
| if self.shader_buffer_float32_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderBufferFloat32Atomics")?; |
| } |
| if self.shader_buffer_float64_atomic_add { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderBufferFloat64AtomicAdd")?; |
| } |
| if self.shader_buffer_float64_atomic_min_max { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderBufferFloat64AtomicMinMax")?; |
| } |
| if self.shader_buffer_float64_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderBufferFloat64Atomics")?; |
| } |
| if self.shader_buffer_int64_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderBufferInt64Atomics")?; |
| } |
| if self.shader_clip_distance { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderClipDistance")?; |
| } |
| if self.shader_core_builtins { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderCoreBuiltins")?; |
| } |
| if self.shader_cull_distance { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderCullDistance")?; |
| } |
| if self.shader_demote_to_helper_invocation { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderDemoteToHelperInvocation")?; |
| } |
| if self.shader_device_clock { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderDeviceClock")?; |
| } |
| if self.shader_draw_parameters { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderDrawParameters")?; |
| } |
| if self.shader_early_and_late_fragment_tests { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderEarlyAndLateFragmentTests")?; |
| } |
| if self.shader_float16 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderFloat16")?; |
| } |
| if self.shader_float64 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderFloat64")?; |
| } |
| if self.shader_image_float32_atomic_add { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderImageFloat32AtomicAdd")?; |
| } |
| if self.shader_image_float32_atomic_min_max { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderImageFloat32AtomicMinMax")?; |
| } |
| if self.shader_image_float32_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderImageFloat32Atomics")?; |
| } |
| if self.shader_image_gather_extended { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderImageGatherExtended")?; |
| } |
| if self.shader_image_int64_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderImageInt64Atomics")?; |
| } |
| if self.shader_input_attachment_array_dynamic_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderInputAttachmentArrayDynamicIndexing")?; |
| } |
| if self.shader_input_attachment_array_non_uniform_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderInputAttachmentArrayNonUniformIndexing")?; |
| } |
| if self.shader_int16 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderInt16")?; |
| } |
| if self.shader_int64 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderInt64")?; |
| } |
| if self.shader_int8 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderInt8")?; |
| } |
| if self.shader_integer_dot_product { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderIntegerDotProduct")?; |
| } |
| if self.shader_integer_functions2 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderIntegerFunctions2")?; |
| } |
| if self.shader_module_identifier { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderModuleIdentifier")?; |
| } |
| if self.shader_output_layer { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderOutputLayer")?; |
| } |
| if self.shader_output_viewport_index { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderOutputViewportIndex")?; |
| } |
| if self.shader_resource_min_lod { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderResourceMinLod")?; |
| } |
| if self.shader_resource_residency { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderResourceResidency")?; |
| } |
| if self.shader_sample_rate_interpolation_functions { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSampleRateInterpolationFunctions")?; |
| } |
| if self.shader_sampled_image_array_dynamic_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSampledImageArrayDynamicIndexing")?; |
| } |
| if self.shader_sampled_image_array_non_uniform_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSampledImageArrayNonUniformIndexing")?; |
| } |
| if self.shader_shared_float16_atomic_add { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSharedFloat16AtomicAdd")?; |
| } |
| if self.shader_shared_float16_atomic_min_max { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSharedFloat16AtomicMinMax")?; |
| } |
| if self.shader_shared_float16_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSharedFloat16Atomics")?; |
| } |
| if self.shader_shared_float32_atomic_add { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSharedFloat32AtomicAdd")?; |
| } |
| if self.shader_shared_float32_atomic_min_max { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSharedFloat32AtomicMinMax")?; |
| } |
| if self.shader_shared_float32_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSharedFloat32Atomics")?; |
| } |
| if self.shader_shared_float64_atomic_add { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSharedFloat64AtomicAdd")?; |
| } |
| if self.shader_shared_float64_atomic_min_max { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSharedFloat64AtomicMinMax")?; |
| } |
| if self.shader_shared_float64_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSharedFloat64Atomics")?; |
| } |
| if self.shader_shared_int64_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSharedInt64Atomics")?; |
| } |
| if self.shader_sm_builtins { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSMBuiltins")?; |
| } |
| if self.shader_storage_buffer_array_dynamic_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderStorageBufferArrayDynamicIndexing")?; |
| } |
| if self.shader_storage_buffer_array_non_uniform_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderStorageBufferArrayNonUniformIndexing")?; |
| } |
| if self.shader_storage_image_array_dynamic_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderStorageImageArrayDynamicIndexing")?; |
| } |
| if self.shader_storage_image_array_non_uniform_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderStorageImageArrayNonUniformIndexing")?; |
| } |
| if self.shader_storage_image_extended_formats { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderStorageImageExtendedFormats")?; |
| } |
| if self.shader_storage_image_multisample { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderStorageImageMultisample")?; |
| } |
| if self.shader_storage_image_read_without_format { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderStorageImageReadWithoutFormat")?; |
| } |
| if self.shader_storage_image_write_without_format { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderStorageImageWriteWithoutFormat")?; |
| } |
| if self.shader_storage_texel_buffer_array_dynamic_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderStorageTexelBufferArrayDynamicIndexing")?; |
| } |
| if self.shader_storage_texel_buffer_array_non_uniform_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderStorageTexelBufferArrayNonUniformIndexing")?; |
| } |
| if self.shader_subgroup_clock { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSubgroupClock")?; |
| } |
| if self.shader_subgroup_extended_types { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSubgroupExtendedTypes")?; |
| } |
| if self.shader_subgroup_uniform_control_flow { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderSubgroupUniformControlFlow")?; |
| } |
| if self.shader_terminate_invocation { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderTerminateInvocation")?; |
| } |
| if self.shader_tessellation_and_geometry_point_size { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderTessellationAndGeometryPointSize")?; |
| } |
| if self.shader_uniform_buffer_array_dynamic_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderUniformBufferArrayDynamicIndexing")?; |
| } |
| if self.shader_uniform_buffer_array_non_uniform_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderUniformBufferArrayNonUniformIndexing")?; |
| } |
| if self.shader_uniform_texel_buffer_array_dynamic_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderUniformTexelBufferArrayDynamicIndexing")?; |
| } |
| if self.shader_uniform_texel_buffer_array_non_uniform_indexing { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderUniformTexelBufferArrayNonUniformIndexing")?; |
| } |
| if self.shader_zero_initialize_workgroup_memory { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shaderZeroInitializeWorkgroupMemory")?; |
| } |
| if self.shading_rate_coarse_sample_order { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shadingRateCoarseSampleOrder")?; |
| } |
| if self.shading_rate_image { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("shadingRateImage")?; |
| } |
| if self.smooth_lines { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("smoothLines")?; |
| } |
| if self.sparse_binding { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseBinding")?; |
| } |
| if self.sparse_image_float32_atomic_add { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseImageFloat32AtomicAdd")?; |
| } |
| if self.sparse_image_float32_atomic_min_max { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseImageFloat32AtomicMinMax")?; |
| } |
| if self.sparse_image_float32_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseImageFloat32Atomics")?; |
| } |
| if self.sparse_image_int64_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseImageInt64Atomics")?; |
| } |
| if self.sparse_residency16_samples { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseResidency16Samples")?; |
| } |
| if self.sparse_residency2_samples { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseResidency2Samples")?; |
| } |
| if self.sparse_residency4_samples { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseResidency4Samples")?; |
| } |
| if self.sparse_residency8_samples { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseResidency8Samples")?; |
| } |
| if self.sparse_residency_aliased { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseResidencyAliased")?; |
| } |
| if self.sparse_residency_buffer { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseResidencyBuffer")?; |
| } |
| if self.sparse_residency_image2_d { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseResidencyImage2D")?; |
| } |
| if self.sparse_residency_image3_d { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("sparseResidencyImage3D")?; |
| } |
| if self.stippled_bresenham_lines { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("stippledBresenhamLines")?; |
| } |
| if self.stippled_rectangular_lines { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("stippledRectangularLines")?; |
| } |
| if self.stippled_smooth_lines { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("stippledSmoothLines")?; |
| } |
| if self.storage_buffer16_bit_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("storageBuffer16BitAccess")?; |
| } |
| if self.storage_buffer8_bit_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("storageBuffer8BitAccess")?; |
| } |
| if self.storage_input_output16 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("storageInputOutput16")?; |
| } |
| if self.storage_push_constant16 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("storagePushConstant16")?; |
| } |
| if self.storage_push_constant8 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("storagePushConstant8")?; |
| } |
| if self.subgroup_broadcast_dynamic_id { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("subgroupBroadcastDynamicId")?; |
| } |
| if self.subgroup_size_control { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("subgroupSizeControl")?; |
| } |
| if self.subpass_merge_feedback { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("subpassMergeFeedback")?; |
| } |
| if self.subpass_shading { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("subpassShading")?; |
| } |
| if self.supersample_fragment_shading_rates { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("supersampleFragmentShadingRates")?; |
| } |
| if self.swapchain_maintenance1 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("swapchainMaintenance1")?; |
| } |
| if self.synchronization2 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("synchronization2")?; |
| } |
| if self.task_shader { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("taskShader")?; |
| } |
| if self.tessellation_isolines { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("tessellationIsolines")?; |
| } |
| if self.tessellation_point_mode { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("tessellationPointMode")?; |
| } |
| if self.tessellation_shader { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("tessellationShader")?; |
| } |
| if self.texel_buffer_alignment { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("texelBufferAlignment")?; |
| } |
| if self.texture_block_match { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("textureBlockMatch")?; |
| } |
| if self.texture_box_filter { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("textureBoxFilter")?; |
| } |
| if self.texture_compression_astc_hdr { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("textureCompressionASTC_HDR")?; |
| } |
| if self.texture_compression_astc_ldr { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("textureCompressionASTC_LDR")?; |
| } |
| if self.texture_compression_bc { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("textureCompressionBC")?; |
| } |
| if self.texture_compression_etc2 { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("textureCompressionETC2")?; |
| } |
| if self.texture_sample_weighted { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("textureSampleWeighted")?; |
| } |
| if self.tile_properties { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("tileProperties")?; |
| } |
| if self.timeline_semaphore { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("timelineSemaphore")?; |
| } |
| if self.transform_feedback { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("transformFeedback")?; |
| } |
| if self.transform_feedback_preserves_provoking_vertex { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("transformFeedbackPreservesProvokingVertex")?; |
| } |
| if self.triangle_fans { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("triangleFans")?; |
| } |
| if self.uniform_and_storage_buffer16_bit_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("uniformAndStorageBuffer16BitAccess")?; |
| } |
| if self.uniform_and_storage_buffer8_bit_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("uniformAndStorageBuffer8BitAccess")?; |
| } |
| if self.uniform_buffer_standard_layout { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("uniformBufferStandardLayout")?; |
| } |
| if self.variable_multisample_rate { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("variableMultisampleRate")?; |
| } |
| if self.variable_pointers { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("variablePointers")?; |
| } |
| if self.variable_pointers_storage_buffer { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("variablePointersStorageBuffer")?; |
| } |
| if self.vertex_attribute_access_beyond_stride { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("vertexAttributeAccessBeyondStride")?; |
| } |
| if self.vertex_attribute_instance_rate_divisor { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("vertexAttributeInstanceRateDivisor")?; |
| } |
| if self.vertex_attribute_instance_rate_zero_divisor { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("vertexAttributeInstanceRateZeroDivisor")?; |
| } |
| if self.vertex_input_dynamic_state { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("vertexInputDynamicState")?; |
| } |
| if self.vertex_pipeline_stores_and_atomics { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("vertexPipelineStoresAndAtomics")?; |
| } |
| if self.vulkan_memory_model { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("vulkanMemoryModel")?; |
| } |
| if self.vulkan_memory_model_availability_visibility_chains { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("vulkanMemoryModelAvailabilityVisibilityChains")?; |
| } |
| if self.vulkan_memory_model_device_scope { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("vulkanMemoryModelDeviceScope")?; |
| } |
| if self.wide_lines { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("wideLines")?; |
| } |
| if self.workgroup_memory_explicit_layout { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("workgroupMemoryExplicitLayout")?; |
| } |
| if self.workgroup_memory_explicit_layout16_bit_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("workgroupMemoryExplicitLayout16BitAccess")?; |
| } |
| if self.workgroup_memory_explicit_layout8_bit_access { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("workgroupMemoryExplicitLayout8BitAccess")?; |
| } |
| if self.workgroup_memory_explicit_layout_scalar_block_layout { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("workgroupMemoryExplicitLayoutScalarBlockLayout")?; |
| } |
| if self.ycbcr2plane444_formats { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("ycbcr2plane444Formats")?; |
| } |
| if self.ycbcr_image_arrays { |
| if !first { |
| write!(f, ", ")? |
| } else { |
| first = false; |
| } |
| f.write_str("ycbcrImageArrays")?; |
| } |
| write!(f, "]") |
| } |
| } |
| impl FeaturesFfi { |
| pub(crate) fn write(&mut self, features: &Features) { |
| if let Some(f) = [self |
| .features_acceleration_structure_khr |
| .as_mut() |
| .map(|s| &mut s.acceleration_structure)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.acceleration_structure as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_acceleration_structure_khr |
| .as_mut() |
| .map(|s| &mut s.acceleration_structure_capture_replay)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.acceleration_structure_capture_replay as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_acceleration_structure_khr |
| .as_mut() |
| .map(|s| &mut s.acceleration_structure_host_commands)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.acceleration_structure_host_commands as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_acceleration_structure_khr |
| .as_mut() |
| .map(|s| &mut s.acceleration_structure_indirect_build)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.acceleration_structure_indirect_build as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_blend_operation_advanced_ext |
| .as_mut() |
| .map(|s| &mut s.advanced_blend_coherent_operations)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.advanced_blend_coherent_operations as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.alpha_to_one].into_iter().next() { |
| *f = features.alpha_to_one as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_amigo_profiling_sec.as_mut().map(|s| &mut s.amigo_profiling)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.amigo_profiling as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_attachment_feedback_loop_layout_ext |
| .as_mut() |
| .map(|s| &mut s.attachment_feedback_loop_layout)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.attachment_feedback_loop_layout as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_shading_rate_khr |
| .as_mut() |
| .map(|s| &mut s.attachment_fragment_shading_rate)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.attachment_fragment_shading_rate as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_border_color_swizzle_ext.as_mut().map(|s| &mut s.border_color_swizzle)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.border_color_swizzle as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_border_color_swizzle_ext |
| .as_mut() |
| .map(|s| &mut s.border_color_swizzle_from_image)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.border_color_swizzle_from_image as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_line_rasterization_ext.as_mut().map(|s| &mut s.bresenham_lines)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.bresenham_lines as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.buffer_device_address), |
| self.features_buffer_device_address.as_mut().map(|s| &mut s.buffer_device_address), |
| self.features_buffer_device_address_ext.as_mut().map(|s| &mut s.buffer_device_address), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.buffer_device_address as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.buffer_device_address_capture_replay), |
| self.features_buffer_device_address |
| .as_mut() |
| .map(|s| &mut s.buffer_device_address_capture_replay), |
| self.features_buffer_device_address_ext |
| .as_mut() |
| .map(|s| &mut s.buffer_device_address_capture_replay), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.buffer_device_address_capture_replay as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.buffer_device_address_multi_device), |
| self.features_buffer_device_address |
| .as_mut() |
| .map(|s| &mut s.buffer_device_address_multi_device), |
| self.features_buffer_device_address_ext |
| .as_mut() |
| .map(|s| &mut s.buffer_device_address_multi_device), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.buffer_device_address_multi_device as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_color_write_enable_ext.as_mut().map(|s| &mut s.color_write_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.color_write_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_compute_shader_derivatives_nv |
| .as_mut() |
| .map(|s| &mut s.compute_derivative_group_linear)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.compute_derivative_group_linear as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_compute_shader_derivatives_nv |
| .as_mut() |
| .map(|s| &mut s.compute_derivative_group_quads)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.compute_derivative_group_quads as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.compute_full_subgroups), |
| self.features_subgroup_size_control.as_mut().map(|s| &mut s.compute_full_subgroups), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.compute_full_subgroups as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_conditional_rendering_ext.as_mut().map(|s| &mut s.conditional_rendering)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.conditional_rendering as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_portability_subset_khr |
| .as_mut() |
| .map(|s| &mut s.constant_alpha_color_blend_factors)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.constant_alpha_color_blend_factors as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_cooperative_matrix_nv.as_mut().map(|s| &mut s.cooperative_matrix)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.cooperative_matrix as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_cooperative_matrix_nv |
| .as_mut() |
| .map(|s| &mut s.cooperative_matrix_robust_buffer_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.cooperative_matrix_robust_buffer_access as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_corner_sampled_image_nv.as_mut().map(|s| &mut s.corner_sampled_image)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.corner_sampled_image as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_coverage_reduction_mode_nv |
| .as_mut() |
| .map(|s| &mut s.coverage_reduction_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.coverage_reduction_mode as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_custom_border_color_ext |
| .as_mut() |
| .map(|s| &mut s.custom_border_color_without_format)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.custom_border_color_without_format as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_custom_border_color_ext.as_mut().map(|s| &mut s.custom_border_colors)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.custom_border_colors as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_astc_decode_ext.as_mut().map(|s| &mut s.decode_mode_shared_exponent)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.decode_mode_shared_exponent as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_dedicated_allocation_image_aliasing_nv |
| .as_mut() |
| .map(|s| &mut s.dedicated_allocation_image_aliasing)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.dedicated_allocation_image_aliasing as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.depth_bias_clamp].into_iter().next() |
| { |
| *f = features.depth_bias_clamp as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.depth_bounds].into_iter().next() { |
| *f = features.depth_bounds as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.depth_clamp].into_iter().next() { |
| *f = features.depth_clamp as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_depth_clamp_zero_one_ext.as_mut().map(|s| &mut s.depth_clamp_zero_one)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.depth_clamp_zero_one as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_depth_clip_control_ext.as_mut().map(|s| &mut s.depth_clip_control)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.depth_clip_control as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_depth_clip_enable_ext.as_mut().map(|s| &mut s.depth_clip_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.depth_clip_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_acceleration_structure_khr |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_acceleration_structure_update_after_bind)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_binding_acceleration_structure_update_after_bind |
| as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13 |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_inline_uniform_block_update_after_bind), |
| self.features_inline_uniform_block |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_inline_uniform_block_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_binding_inline_uniform_block_update_after_bind |
| as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.descriptor_binding_partially_bound), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_partially_bound), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_binding_partially_bound as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_sampled_image_update_after_bind), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_sampled_image_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_binding_sampled_image_update_after_bind as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_storage_buffer_update_after_bind), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_storage_buffer_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_binding_storage_buffer_update_after_bind as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_storage_image_update_after_bind), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_storage_image_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_binding_storage_image_update_after_bind as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_storage_texel_buffer_update_after_bind), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_storage_texel_buffer_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_binding_storage_texel_buffer_update_after_bind |
| as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_uniform_buffer_update_after_bind), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_uniform_buffer_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_binding_uniform_buffer_update_after_bind as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_uniform_texel_buffer_update_after_bind), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_uniform_texel_buffer_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_binding_uniform_texel_buffer_update_after_bind |
| as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_update_unused_while_pending), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_update_unused_while_pending), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_binding_update_unused_while_pending as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_variable_descriptor_count), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.descriptor_binding_variable_descriptor_count), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_binding_variable_descriptor_count as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_descriptor_buffer_ext.as_mut().map(|s| &mut s.descriptor_buffer)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_buffer as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_descriptor_buffer_ext |
| .as_mut() |
| .map(|s| &mut s.descriptor_buffer_capture_replay)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_buffer_capture_replay as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_descriptor_buffer_ext |
| .as_mut() |
| .map(|s| &mut s.descriptor_buffer_image_layout_ignored)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_buffer_image_layout_ignored as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_descriptor_buffer_ext |
| .as_mut() |
| .map(|s| &mut s.descriptor_buffer_push_descriptors)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_buffer_push_descriptors as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_vulkan12.as_mut().map(|s| &mut s.descriptor_indexing)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_descriptor_set_host_mapping_valve |
| .as_mut() |
| .map(|s| &mut s.descriptor_set_host_mapping)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.descriptor_set_host_mapping as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_coherent_memory_amd.as_mut().map(|s| &mut s.device_coherent_memory)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.device_coherent_memory as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_fault_ext.as_mut().map(|s| &mut s.device_fault)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.device_fault as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_fault_ext.as_mut().map(|s| &mut s.device_fault_vendor_binary)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.device_fault_vendor_binary as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_device_generated_commands_nv |
| .as_mut() |
| .map(|s| &mut s.device_generated_commands)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.device_generated_commands as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_device_memory_report_ext.as_mut().map(|s| &mut s.device_memory_report)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.device_memory_report as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_diagnostics_config_nv.as_mut().map(|s| &mut s.diagnostics_config)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.diagnostics_config as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_vulkan12.as_mut().map(|s| &mut s.draw_indirect_count)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.draw_indirect_count as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.draw_indirect_first_instance].into_iter().next() |
| { |
| *f = features.draw_indirect_first_instance as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.dual_src_blend].into_iter().next() { |
| *f = features.dual_src_blend as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.dynamic_rendering), |
| self.features_dynamic_rendering.as_mut().map(|s| &mut s.dynamic_rendering), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.dynamic_rendering as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_portability_subset_khr.as_mut().map(|s| &mut s.events)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.events as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_exclusive_scissor_nv.as_mut().map(|s| &mut s.exclusive_scissor)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.exclusive_scissor as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state2_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state2)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state2 as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state2_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state2_logic_op)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state2_logic_op as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state2_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state2_patch_control_points)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state2_patch_control_points as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_alpha_to_coverage_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_alpha_to_coverage_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_alpha_to_one_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_alpha_to_one_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_color_blend_advanced)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_color_blend_advanced as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_color_blend_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_color_blend_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_color_blend_equation)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_color_blend_equation as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_color_write_mask)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_color_write_mask as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_conservative_rasterization_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = |
| features.extended_dynamic_state3_conservative_rasterization_mode as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_coverage_modulation_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_coverage_modulation_mode as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_coverage_modulation_table)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_coverage_modulation_table as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_coverage_modulation_table_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_coverage_modulation_table_enable |
| as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_coverage_reduction_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_coverage_reduction_mode as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_coverage_to_color_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_coverage_to_color_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_coverage_to_color_location)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_coverage_to_color_location as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_depth_clamp_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_depth_clamp_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_depth_clip_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_depth_clip_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_depth_clip_negative_one_to_one)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_depth_clip_negative_one_to_one as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_extra_primitive_overestimation_size)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_extra_primitive_overestimation_size |
| as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_line_rasterization_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_line_rasterization_mode as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_line_stipple_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_line_stipple_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_logic_op_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_logic_op_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_polygon_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_polygon_mode as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_provoking_vertex_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_provoking_vertex_mode as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_rasterization_samples)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_rasterization_samples as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_rasterization_stream)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_rasterization_stream as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_representative_fragment_test_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_representative_fragment_test_enable |
| as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_sample_locations_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_sample_locations_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_sample_mask)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_sample_mask as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_shading_rate_image_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_shading_rate_image_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_tessellation_domain_origin)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_tessellation_domain_origin as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_viewport_swizzle)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_viewport_swizzle as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_extended_dynamic_state3_ext |
| .as_mut() |
| .map(|s| &mut s.extended_dynamic_state3_viewport_w_scaling_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.extended_dynamic_state3_viewport_w_scaling_enable as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_external_memory_rdma_nv.as_mut().map(|s| &mut s.external_memory_rdma)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.external_memory_rdma as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.fill_mode_non_solid].into_iter().next() |
| { |
| *f = features.fill_mode_non_solid as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_4444formats_ext.as_mut().map(|s| &mut s.format_a4b4g4r4)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.format_a4b4g4r4 as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_4444formats_ext.as_mut().map(|s| &mut s.format_a4r4g4b4)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.format_a4r4g4b4 as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_rgba10x6_formats_ext |
| .as_mut() |
| .map(|s| &mut s.format_rgba10x6_without_y_cb_cr_sampler)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.format_rgba10x6_without_y_cb_cr_sampler as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_fragment_density_map_ext.as_mut().map(|s| &mut s.fragment_density_map)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.fragment_density_map as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_density_map2_ext |
| .as_mut() |
| .map(|s| &mut s.fragment_density_map_deferred)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.fragment_density_map_deferred as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_density_map_ext |
| .as_mut() |
| .map(|s| &mut s.fragment_density_map_dynamic)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.fragment_density_map_dynamic as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_density_map_ext |
| .as_mut() |
| .map(|s| &mut s.fragment_density_map_non_subsampled_images)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.fragment_density_map_non_subsampled_images as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_density_map_offset_qcom |
| .as_mut() |
| .map(|s| &mut s.fragment_density_map_offset)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.fragment_density_map_offset as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_shader_barycentric_khr |
| .as_mut() |
| .map(|s| &mut s.fragment_shader_barycentric)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.fragment_shader_barycentric as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_shader_interlock_ext |
| .as_mut() |
| .map(|s| &mut s.fragment_shader_pixel_interlock)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.fragment_shader_pixel_interlock as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_shader_interlock_ext |
| .as_mut() |
| .map(|s| &mut s.fragment_shader_sample_interlock)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.fragment_shader_sample_interlock as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_shader_interlock_ext |
| .as_mut() |
| .map(|s| &mut s.fragment_shader_shading_rate_interlock)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.fragment_shader_shading_rate_interlock as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_shading_rate_enums_nv |
| .as_mut() |
| .map(|s| &mut s.fragment_shading_rate_enums)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.fragment_shading_rate_enums as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.fragment_stores_and_atomics].into_iter().next() |
| { |
| *f = features.fragment_stores_and_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.full_draw_index_uint32].into_iter().next() |
| { |
| *f = features.full_draw_index_uint32 as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.geometry_shader].into_iter().next() { |
| *f = features.geometry_shader as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_transform_feedback_ext.as_mut().map(|s| &mut s.geometry_streams)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.geometry_streams as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_global_priority_query_khr.as_mut().map(|s| &mut s.global_priority_query)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.global_priority_query as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_graphics_pipeline_library_ext |
| .as_mut() |
| .map(|s| &mut s.graphics_pipeline_library)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.graphics_pipeline_library as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.host_query_reset), |
| self.features_host_query_reset.as_mut().map(|s| &mut s.host_query_reset), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.host_query_reset as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_image2_d_view_of3_d_ext.as_mut().map(|s| &mut s.image2_d_view_of3_d)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.image2_d_view_of3_d as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_image_compression_control_ext |
| .as_mut() |
| .map(|s| &mut s.image_compression_control)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.image_compression_control as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_image_compression_control_swapchain_ext |
| .as_mut() |
| .map(|s| &mut s.image_compression_control_swapchain)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.image_compression_control_swapchain as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.image_cube_array].into_iter().next() |
| { |
| *f = features.image_cube_array as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_shader_image_footprint_nv.as_mut().map(|s| &mut s.image_footprint)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.image_footprint as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_portability_subset_khr |
| .as_mut() |
| .map(|s| &mut s.image_view2_d_on3_d_image)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.image_view2_d_on3_d_image as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_portability_subset_khr |
| .as_mut() |
| .map(|s| &mut s.image_view_format_reinterpretation)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.image_view_format_reinterpretation as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_portability_subset_khr |
| .as_mut() |
| .map(|s| &mut s.image_view_format_swizzle)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.image_view_format_swizzle as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.imageless_framebuffer), |
| self.features_imageless_framebuffer.as_mut().map(|s| &mut s.imageless_framebuffer), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.imageless_framebuffer as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.independent_blend].into_iter().next() |
| { |
| *f = features.independent_blend as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_index_type_uint8_ext.as_mut().map(|s| &mut s.index_type_uint8)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.index_type_uint8 as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_copy_memory_indirect_nv.as_mut().map(|s| &mut s.indirect_copy)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.indirect_copy as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_conditional_rendering_ext |
| .as_mut() |
| .map(|s| &mut s.inherited_conditional_rendering)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.inherited_conditional_rendering as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.inherited_queries].into_iter().next() |
| { |
| *f = features.inherited_queries as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_inherited_viewport_scissor_nv |
| .as_mut() |
| .map(|s| &mut s.inherited_viewport_scissor2_d)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.inherited_viewport_scissor2_d as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.inline_uniform_block), |
| self.features_inline_uniform_block.as_mut().map(|s| &mut s.inline_uniform_block), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.inline_uniform_block as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_invocation_mask_huawei.as_mut().map(|s| &mut s.invocation_mask)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.invocation_mask as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.large_points].into_iter().next() { |
| *f = features.large_points as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_legacy_dithering_ext.as_mut().map(|s| &mut s.legacy_dithering)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.legacy_dithering as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_linear_color_attachment_nv |
| .as_mut() |
| .map(|s| &mut s.linear_color_attachment)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.linear_color_attachment as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.logic_op].into_iter().next() { |
| *f = features.logic_op as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.maintenance4), |
| self.features_maintenance4.as_mut().map(|s| &mut s.maintenance4), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.maintenance4 as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_memory_decompression_nv.as_mut().map(|s| &mut s.memory_decompression)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.memory_decompression as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_memory_priority_ext.as_mut().map(|s| &mut s.memory_priority)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.memory_priority as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_mesh_shader_ext.as_mut().map(|s| &mut s.mesh_shader), |
| self.features_mesh_shader_nv.as_mut().map(|s| &mut s.mesh_shader), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.mesh_shader as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_mesh_shader_ext.as_mut().map(|s| &mut s.mesh_shader_queries)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.mesh_shader_queries as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_opacity_micromap_ext.as_mut().map(|s| &mut s.micromap)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.micromap as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_opacity_micromap_ext.as_mut().map(|s| &mut s.micromap_capture_replay)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.micromap_capture_replay as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_opacity_micromap_ext.as_mut().map(|s| &mut s.micromap_host_commands)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.micromap_host_commands as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_image_view_min_lod_ext.as_mut().map(|s| &mut s.min_lod)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.min_lod as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_multi_draw_ext.as_mut().map(|s| &mut s.multi_draw)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.multi_draw as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.multi_draw_indirect].into_iter().next() |
| { |
| *f = features.multi_draw_indirect as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.multi_viewport].into_iter().next() { |
| *f = features.multi_viewport as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_portability_subset_khr.as_mut().map(|s| &mut s.multisample_array_image)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.multisample_array_image as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_multisampled_render_to_single_sampled_ext |
| .as_mut() |
| .map(|s| &mut s.multisampled_render_to_single_sampled)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.multisampled_render_to_single_sampled as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan11.as_mut().map(|s| &mut s.multiview), |
| self.features_multiview.as_mut().map(|s| &mut s.multiview), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.multiview as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan11.as_mut().map(|s| &mut s.multiview_geometry_shader), |
| self.features_multiview.as_mut().map(|s| &mut s.multiview_geometry_shader), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.multiview_geometry_shader as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_mesh_shader_ext.as_mut().map(|s| &mut s.multiview_mesh_shader)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.multiview_mesh_shader as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_multiview_per_view_viewports_qcom |
| .as_mut() |
| .map(|s| &mut s.multiview_per_view_viewports)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.multiview_per_view_viewports as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan11.as_mut().map(|s| &mut s.multiview_tessellation_shader), |
| self.features_multiview.as_mut().map(|s| &mut s.multiview_tessellation_shader), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.multiview_tessellation_shader as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_portability_subset_khr |
| .as_mut() |
| .map(|s| &mut s.mutable_comparison_samplers)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.mutable_comparison_samplers as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_mutable_descriptor_type_ext |
| .as_mut() |
| .map(|s| &mut s.mutable_descriptor_type)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.mutable_descriptor_type as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_shading_rate_enums_nv |
| .as_mut() |
| .map(|s| &mut s.no_invocation_fragment_shading_rates)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.no_invocation_fragment_shading_rates as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_non_seamless_cube_map_ext.as_mut().map(|s| &mut s.non_seamless_cube_map)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.non_seamless_cube_map as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_robustness2_ext.as_mut().map(|s| &mut s.null_descriptor)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.null_descriptor as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.occlusion_query_precise].into_iter().next() |
| { |
| *f = features.occlusion_query_precise as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_optical_flow_nv.as_mut().map(|s| &mut s.optical_flow)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.optical_flow as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_pageable_device_local_memory_ext |
| .as_mut() |
| .map(|s| &mut s.pageable_device_local_memory)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.pageable_device_local_memory as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_performance_query_khr |
| .as_mut() |
| .map(|s| &mut s.performance_counter_multiple_query_pools)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.performance_counter_multiple_query_pools as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_performance_query_khr |
| .as_mut() |
| .map(|s| &mut s.performance_counter_query_pools)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.performance_counter_query_pools as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.pipeline_creation_cache_control), |
| self.features_pipeline_creation_cache_control |
| .as_mut() |
| .map(|s| &mut s.pipeline_creation_cache_control), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.pipeline_creation_cache_control as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_pipeline_executable_properties_khr |
| .as_mut() |
| .map(|s| &mut s.pipeline_executable_info)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.pipeline_executable_info as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_shading_rate_khr |
| .as_mut() |
| .map(|s| &mut s.pipeline_fragment_shading_rate)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.pipeline_fragment_shading_rate as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_pipeline_properties_ext |
| .as_mut() |
| .map(|s| &mut s.pipeline_properties_identifier)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.pipeline_properties_identifier as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_pipeline_protected_access_ext |
| .as_mut() |
| .map(|s| &mut s.pipeline_protected_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.pipeline_protected_access as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_pipeline_robustness_ext.as_mut().map(|s| &mut s.pipeline_robustness)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.pipeline_robustness as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.pipeline_statistics_query].into_iter().next() |
| { |
| *f = features.pipeline_statistics_query as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_portability_subset_khr.as_mut().map(|s| &mut s.point_polygons)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.point_polygons as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_present_barrier_nv.as_mut().map(|s| &mut s.present_barrier)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.present_barrier as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_present_id_khr.as_mut().map(|s| &mut s.present_id)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.present_id as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_present_wait_khr.as_mut().map(|s| &mut s.present_wait)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.present_wait as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_shading_rate_khr |
| .as_mut() |
| .map(|s| &mut s.primitive_fragment_shading_rate)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.primitive_fragment_shading_rate as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_mesh_shader_ext |
| .as_mut() |
| .map(|s| &mut s.primitive_fragment_shading_rate_mesh_shader)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.primitive_fragment_shading_rate_mesh_shader as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_primitive_topology_list_restart_ext |
| .as_mut() |
| .map(|s| &mut s.primitive_topology_list_restart)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.primitive_topology_list_restart as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_primitive_topology_list_restart_ext |
| .as_mut() |
| .map(|s| &mut s.primitive_topology_patch_list_restart)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.primitive_topology_patch_list_restart as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_primitives_generated_query_ext |
| .as_mut() |
| .map(|s| &mut s.primitives_generated_query)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.primitives_generated_query as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_primitives_generated_query_ext |
| .as_mut() |
| .map(|s| &mut s.primitives_generated_query_with_non_zero_streams)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.primitives_generated_query_with_non_zero_streams as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_primitives_generated_query_ext |
| .as_mut() |
| .map(|s| &mut s.primitives_generated_query_with_rasterizer_discard)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.primitives_generated_query_with_rasterizer_discard as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.private_data), |
| self.features_private_data.as_mut().map(|s| &mut s.private_data), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.private_data as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan11.as_mut().map(|s| &mut s.protected_memory), |
| self.features_protected_memory.as_mut().map(|s| &mut s.protected_memory), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.protected_memory as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_provoking_vertex_ext.as_mut().map(|s| &mut s.provoking_vertex_last)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.provoking_vertex_last as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_rasterization_order_attachment_access_ext |
| .as_mut() |
| .map(|s| &mut s.rasterization_order_color_attachment_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.rasterization_order_color_attachment_access as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_rasterization_order_attachment_access_ext |
| .as_mut() |
| .map(|s| &mut s.rasterization_order_depth_attachment_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.rasterization_order_depth_attachment_access as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_rasterization_order_attachment_access_ext |
| .as_mut() |
| .map(|s| &mut s.rasterization_order_stencil_attachment_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.rasterization_order_stencil_attachment_access as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_ray_query_khr.as_mut().map(|s| &mut s.ray_query)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.ray_query as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_ray_tracing_invocation_reorder_nv |
| .as_mut() |
| .map(|s| &mut s.ray_tracing_invocation_reorder)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.ray_tracing_invocation_reorder as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_ray_tracing_maintenance1_khr |
| .as_mut() |
| .map(|s| &mut s.ray_tracing_maintenance1)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.ray_tracing_maintenance1 as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_ray_tracing_motion_blur_nv |
| .as_mut() |
| .map(|s| &mut s.ray_tracing_motion_blur)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.ray_tracing_motion_blur as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_ray_tracing_motion_blur_nv |
| .as_mut() |
| .map(|s| &mut s.ray_tracing_motion_blur_pipeline_trace_rays_indirect)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.ray_tracing_motion_blur_pipeline_trace_rays_indirect as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_ray_tracing_pipeline_khr.as_mut().map(|s| &mut s.ray_tracing_pipeline)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.ray_tracing_pipeline as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_ray_tracing_pipeline_khr |
| .as_mut() |
| .map(|s| &mut s.ray_tracing_pipeline_shader_group_handle_capture_replay)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = |
| features.ray_tracing_pipeline_shader_group_handle_capture_replay as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_ray_tracing_pipeline_khr |
| .as_mut() |
| .map(|s| &mut s.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed |
| as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_ray_tracing_pipeline_khr |
| .as_mut() |
| .map(|s| &mut s.ray_tracing_pipeline_trace_rays_indirect)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.ray_tracing_pipeline_trace_rays_indirect as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_ray_tracing_maintenance1_khr |
| .as_mut() |
| .map(|s| &mut s.ray_tracing_pipeline_trace_rays_indirect2)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.ray_tracing_pipeline_trace_rays_indirect2 as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_ray_tracing_pipeline_khr |
| .as_mut() |
| .map(|s| &mut s.ray_traversal_primitive_culling)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.ray_traversal_primitive_culling as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_line_rasterization_ext.as_mut().map(|s| &mut s.rectangular_lines)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.rectangular_lines as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_address_binding_report_ext |
| .as_mut() |
| .map(|s| &mut s.report_address_binding)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.report_address_binding as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_representative_fragment_test_nv |
| .as_mut() |
| .map(|s| &mut s.representative_fragment_test)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.representative_fragment_test as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.robust_buffer_access].into_iter().next() |
| { |
| *f = features.robust_buffer_access as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_robustness2_ext.as_mut().map(|s| &mut s.robust_buffer_access2)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.robust_buffer_access2 as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.robust_image_access), |
| self.features_image_robustness.as_mut().map(|s| &mut s.robust_image_access), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.robust_image_access as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_robustness2_ext.as_mut().map(|s| &mut s.robust_image_access2)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.robust_image_access2 as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.runtime_descriptor_array), |
| self.features_descriptor_indexing.as_mut().map(|s| &mut s.runtime_descriptor_array), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.runtime_descriptor_array as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.sample_rate_shading].into_iter().next() |
| { |
| *f = features.sample_rate_shading as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_image2_d_view_of3_d_ext.as_mut().map(|s| &mut s.sampler2_d_view_of3_d)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.sampler2_d_view_of3_d as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.sampler_anisotropy].into_iter().next() |
| { |
| *f = features.sampler_anisotropy as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_vulkan12.as_mut().map(|s| &mut s.sampler_filter_minmax)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.sampler_filter_minmax as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_portability_subset_khr.as_mut().map(|s| &mut s.sampler_mip_lod_bias)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.sampler_mip_lod_bias as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_vulkan12.as_mut().map(|s| &mut s.sampler_mirror_clamp_to_edge)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.sampler_mirror_clamp_to_edge as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan11.as_mut().map(|s| &mut s.sampler_ycbcr_conversion), |
| self.features_sampler_ycbcr_conversion |
| .as_mut() |
| .map(|s| &mut s.sampler_ycbcr_conversion), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.sampler_ycbcr_conversion as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.scalar_block_layout), |
| self.features_scalar_block_layout.as_mut().map(|s| &mut s.scalar_block_layout), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.scalar_block_layout as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.separate_depth_stencil_layouts), |
| self.features_separate_depth_stencil_layouts |
| .as_mut() |
| .map(|s| &mut s.separate_depth_stencil_layouts), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.separate_depth_stencil_layouts as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_portability_subset_khr |
| .as_mut() |
| .map(|s| &mut s.separate_stencil_mask_ref)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.separate_stencil_mask_ref as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float2_ext |
| .as_mut() |
| .map(|s| &mut s.shader_buffer_float16_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_buffer_float16_atomic_add as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float2_ext |
| .as_mut() |
| .map(|s| &mut s.shader_buffer_float16_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_buffer_float16_atomic_min_max as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float2_ext |
| .as_mut() |
| .map(|s| &mut s.shader_buffer_float16_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_buffer_float16_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float_ext |
| .as_mut() |
| .map(|s| &mut s.shader_buffer_float32_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_buffer_float32_atomic_add as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float2_ext |
| .as_mut() |
| .map(|s| &mut s.shader_buffer_float32_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_buffer_float32_atomic_min_max as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float_ext |
| .as_mut() |
| .map(|s| &mut s.shader_buffer_float32_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_buffer_float32_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float_ext |
| .as_mut() |
| .map(|s| &mut s.shader_buffer_float64_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_buffer_float64_atomic_add as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float2_ext |
| .as_mut() |
| .map(|s| &mut s.shader_buffer_float64_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_buffer_float64_atomic_min_max as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float_ext |
| .as_mut() |
| .map(|s| &mut s.shader_buffer_float64_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_buffer_float64_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.shader_buffer_int64_atomics), |
| self.features_shader_atomic_int64.as_mut().map(|s| &mut s.shader_buffer_int64_atomics), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_buffer_int64_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_clip_distance].into_iter().next() |
| { |
| *f = features.shader_clip_distance as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_shader_core_builtins_arm.as_mut().map(|s| &mut s.shader_core_builtins)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_core_builtins as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_cull_distance].into_iter().next() |
| { |
| *f = features.shader_cull_distance as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.shader_demote_to_helper_invocation), |
| self.features_shader_demote_to_helper_invocation |
| .as_mut() |
| .map(|s| &mut s.shader_demote_to_helper_invocation), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_demote_to_helper_invocation as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_shader_clock_khr.as_mut().map(|s| &mut s.shader_device_clock)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_device_clock as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan11.as_mut().map(|s| &mut s.shader_draw_parameters), |
| self.features_shader_draw_parameters.as_mut().map(|s| &mut s.shader_draw_parameters), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_draw_parameters as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_early_and_late_fragment_tests_amd |
| .as_mut() |
| .map(|s| &mut s.shader_early_and_late_fragment_tests)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_early_and_late_fragment_tests as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.shader_float16), |
| self.features_shader_float16_int8.as_mut().map(|s| &mut s.shader_float16), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_float16 as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.shader_float64].into_iter().next() { |
| *f = features.shader_float64 as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float_ext |
| .as_mut() |
| .map(|s| &mut s.shader_image_float32_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_image_float32_atomic_add as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float2_ext |
| .as_mut() |
| .map(|s| &mut s.shader_image_float32_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_image_float32_atomic_min_max as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float_ext |
| .as_mut() |
| .map(|s| &mut s.shader_image_float32_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_image_float32_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_image_gather_extended].into_iter().next() |
| { |
| *f = features.shader_image_gather_extended as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_image_atomic_int64_ext |
| .as_mut() |
| .map(|s| &mut s.shader_image_int64_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_image_int64_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.shader_input_attachment_array_dynamic_indexing), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.shader_input_attachment_array_dynamic_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_input_attachment_array_dynamic_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.shader_input_attachment_array_non_uniform_indexing), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.shader_input_attachment_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_input_attachment_array_non_uniform_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.shader_int16].into_iter().next() { |
| *f = features.shader_int16 as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.shader_int64].into_iter().next() { |
| *f = features.shader_int64 as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.shader_int8), |
| self.features_shader_float16_int8.as_mut().map(|s| &mut s.shader_int8), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_int8 as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.shader_integer_dot_product), |
| self.features_shader_integer_dot_product |
| .as_mut() |
| .map(|s| &mut s.shader_integer_dot_product), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_integer_dot_product as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_integer_functions2_intel |
| .as_mut() |
| .map(|s| &mut s.shader_integer_functions2)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_integer_functions2 as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_module_identifier_ext |
| .as_mut() |
| .map(|s| &mut s.shader_module_identifier)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_module_identifier as ash::vk::Bool32; |
| } |
| if let Some(f) = [self.features_vulkan12.as_mut().map(|s| &mut s.shader_output_layer)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_output_layer as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_vulkan12.as_mut().map(|s| &mut s.shader_output_viewport_index)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_output_viewport_index as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_resource_min_lod].into_iter().next() |
| { |
| *f = features.shader_resource_min_lod as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_resource_residency].into_iter().next() |
| { |
| *f = features.shader_resource_residency as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_portability_subset_khr |
| .as_mut() |
| .map(|s| &mut s.shader_sample_rate_interpolation_functions)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_sample_rate_interpolation_functions as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_sampled_image_array_dynamic_indexing] |
| .into_iter() |
| .next() |
| { |
| *f = features.shader_sampled_image_array_dynamic_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.shader_sampled_image_array_non_uniform_indexing), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.shader_sampled_image_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_sampled_image_array_non_uniform_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float2_ext |
| .as_mut() |
| .map(|s| &mut s.shader_shared_float16_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_shared_float16_atomic_add as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float2_ext |
| .as_mut() |
| .map(|s| &mut s.shader_shared_float16_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_shared_float16_atomic_min_max as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float2_ext |
| .as_mut() |
| .map(|s| &mut s.shader_shared_float16_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_shared_float16_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float_ext |
| .as_mut() |
| .map(|s| &mut s.shader_shared_float32_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_shared_float32_atomic_add as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float2_ext |
| .as_mut() |
| .map(|s| &mut s.shader_shared_float32_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_shared_float32_atomic_min_max as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float_ext |
| .as_mut() |
| .map(|s| &mut s.shader_shared_float32_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_shared_float32_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float_ext |
| .as_mut() |
| .map(|s| &mut s.shader_shared_float64_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_shared_float64_atomic_add as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float2_ext |
| .as_mut() |
| .map(|s| &mut s.shader_shared_float64_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_shared_float64_atomic_min_max as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float_ext |
| .as_mut() |
| .map(|s| &mut s.shader_shared_float64_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_shared_float64_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.shader_shared_int64_atomics), |
| self.features_shader_atomic_int64.as_mut().map(|s| &mut s.shader_shared_int64_atomics), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_shared_int64_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_shader_sm_builtins_nv.as_mut().map(|s| &mut s.shader_sm_builtins)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_sm_builtins as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_storage_buffer_array_dynamic_indexing] |
| .into_iter() |
| .next() |
| { |
| *f = features.shader_storage_buffer_array_dynamic_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.shader_storage_buffer_array_non_uniform_indexing), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.shader_storage_buffer_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_storage_buffer_array_non_uniform_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_storage_image_array_dynamic_indexing] |
| .into_iter() |
| .next() |
| { |
| *f = features.shader_storage_image_array_dynamic_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.shader_storage_image_array_non_uniform_indexing), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.shader_storage_image_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_storage_image_array_non_uniform_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_storage_image_extended_formats] |
| .into_iter() |
| .next() |
| { |
| *f = features.shader_storage_image_extended_formats as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.shader_storage_image_multisample] |
| .into_iter() |
| .next() |
| { |
| *f = features.shader_storage_image_multisample as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_storage_image_read_without_format] |
| .into_iter() |
| .next() |
| { |
| *f = features.shader_storage_image_read_without_format as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_storage_image_write_without_format] |
| .into_iter() |
| .next() |
| { |
| *f = features.shader_storage_image_write_without_format as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.shader_storage_texel_buffer_array_dynamic_indexing), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.shader_storage_texel_buffer_array_dynamic_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_storage_texel_buffer_array_dynamic_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.shader_storage_texel_buffer_array_non_uniform_indexing), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.shader_storage_texel_buffer_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_storage_texel_buffer_array_non_uniform_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_shader_clock_khr.as_mut().map(|s| &mut s.shader_subgroup_clock)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_subgroup_clock as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.shader_subgroup_extended_types), |
| self.features_shader_subgroup_extended_types |
| .as_mut() |
| .map(|s| &mut s.shader_subgroup_extended_types), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_subgroup_extended_types as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_subgroup_uniform_control_flow_khr |
| .as_mut() |
| .map(|s| &mut s.shader_subgroup_uniform_control_flow)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_subgroup_uniform_control_flow as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.shader_terminate_invocation), |
| self.features_shader_terminate_invocation |
| .as_mut() |
| .map(|s| &mut s.shader_terminate_invocation), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_terminate_invocation as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_tessellation_and_geometry_point_size] |
| .into_iter() |
| .next() |
| { |
| *f = features.shader_tessellation_and_geometry_point_size as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.shader_uniform_buffer_array_dynamic_indexing] |
| .into_iter() |
| .next() |
| { |
| *f = features.shader_uniform_buffer_array_dynamic_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.shader_uniform_buffer_array_non_uniform_indexing), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.shader_uniform_buffer_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_uniform_buffer_array_non_uniform_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.shader_uniform_texel_buffer_array_dynamic_indexing), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.shader_uniform_texel_buffer_array_dynamic_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_uniform_texel_buffer_array_dynamic_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.shader_uniform_texel_buffer_array_non_uniform_indexing), |
| self.features_descriptor_indexing |
| .as_mut() |
| .map(|s| &mut s.shader_uniform_texel_buffer_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_uniform_texel_buffer_array_non_uniform_indexing as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.shader_zero_initialize_workgroup_memory), |
| self.features_zero_initialize_workgroup_memory |
| .as_mut() |
| .map(|s| &mut s.shader_zero_initialize_workgroup_memory), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shader_zero_initialize_workgroup_memory as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shading_rate_image_nv |
| .as_mut() |
| .map(|s| &mut s.shading_rate_coarse_sample_order)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shading_rate_coarse_sample_order as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_shading_rate_image_nv.as_mut().map(|s| &mut s.shading_rate_image)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.shading_rate_image as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_line_rasterization_ext.as_mut().map(|s| &mut s.smooth_lines)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.smooth_lines as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.sparse_binding].into_iter().next() { |
| *f = features.sparse_binding as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float_ext |
| .as_mut() |
| .map(|s| &mut s.sparse_image_float32_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.sparse_image_float32_atomic_add as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float2_ext |
| .as_mut() |
| .map(|s| &mut s.sparse_image_float32_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.sparse_image_float32_atomic_min_max as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_atomic_float_ext |
| .as_mut() |
| .map(|s| &mut s.sparse_image_float32_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.sparse_image_float32_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_shader_image_atomic_int64_ext |
| .as_mut() |
| .map(|s| &mut s.sparse_image_int64_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.sparse_image_int64_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.sparse_residency16_samples].into_iter().next() |
| { |
| *f = features.sparse_residency16_samples as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.sparse_residency2_samples].into_iter().next() |
| { |
| *f = features.sparse_residency2_samples as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.sparse_residency4_samples].into_iter().next() |
| { |
| *f = features.sparse_residency4_samples as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.sparse_residency8_samples].into_iter().next() |
| { |
| *f = features.sparse_residency8_samples as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.sparse_residency_aliased].into_iter().next() |
| { |
| *f = features.sparse_residency_aliased as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.sparse_residency_buffer].into_iter().next() |
| { |
| *f = features.sparse_residency_buffer as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.sparse_residency_image2_d].into_iter().next() |
| { |
| *f = features.sparse_residency_image2_d as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.sparse_residency_image3_d].into_iter().next() |
| { |
| *f = features.sparse_residency_image3_d as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_line_rasterization_ext.as_mut().map(|s| &mut s.stippled_bresenham_lines)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.stippled_bresenham_lines as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_line_rasterization_ext |
| .as_mut() |
| .map(|s| &mut s.stippled_rectangular_lines)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.stippled_rectangular_lines as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_line_rasterization_ext.as_mut().map(|s| &mut s.stippled_smooth_lines)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.stippled_smooth_lines as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan11.as_mut().map(|s| &mut s.storage_buffer16_bit_access), |
| self.features_16bit_storage.as_mut().map(|s| &mut s.storage_buffer16_bit_access), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.storage_buffer16_bit_access as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.storage_buffer8_bit_access), |
| self.features_8bit_storage.as_mut().map(|s| &mut s.storage_buffer8_bit_access), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.storage_buffer8_bit_access as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan11.as_mut().map(|s| &mut s.storage_input_output16), |
| self.features_16bit_storage.as_mut().map(|s| &mut s.storage_input_output16), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.storage_input_output16 as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan11.as_mut().map(|s| &mut s.storage_push_constant16), |
| self.features_16bit_storage.as_mut().map(|s| &mut s.storage_push_constant16), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.storage_push_constant16 as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.storage_push_constant8), |
| self.features_8bit_storage.as_mut().map(|s| &mut s.storage_push_constant8), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.storage_push_constant8 as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_vulkan12.as_mut().map(|s| &mut s.subgroup_broadcast_dynamic_id)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.subgroup_broadcast_dynamic_id as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.subgroup_size_control), |
| self.features_subgroup_size_control.as_mut().map(|s| &mut s.subgroup_size_control), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.subgroup_size_control as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_subpass_merge_feedback_ext |
| .as_mut() |
| .map(|s| &mut s.subpass_merge_feedback)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.subpass_merge_feedback as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_subpass_shading_huawei.as_mut().map(|s| &mut s.subpass_shading)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.subpass_shading as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_fragment_shading_rate_enums_nv |
| .as_mut() |
| .map(|s| &mut s.supersample_fragment_shading_rates)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.supersample_fragment_shading_rates as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_swapchain_maintenance1_ext |
| .as_mut() |
| .map(|s| &mut s.swapchain_maintenance1)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.swapchain_maintenance1 as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.synchronization2), |
| self.features_synchronization2.as_mut().map(|s| &mut s.synchronization2), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.synchronization2 as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_mesh_shader_ext.as_mut().map(|s| &mut s.task_shader), |
| self.features_mesh_shader_nv.as_mut().map(|s| &mut s.task_shader), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.task_shader as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_portability_subset_khr.as_mut().map(|s| &mut s.tessellation_isolines)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.tessellation_isolines as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_portability_subset_khr.as_mut().map(|s| &mut s.tessellation_point_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.tessellation_point_mode as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.tessellation_shader].into_iter().next() |
| { |
| *f = features.tessellation_shader as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_texel_buffer_alignment_ext |
| .as_mut() |
| .map(|s| &mut s.texel_buffer_alignment)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.texel_buffer_alignment as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_image_processing_qcom.as_mut().map(|s| &mut s.texture_block_match)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.texture_block_match as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_image_processing_qcom.as_mut().map(|s| &mut s.texture_box_filter)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.texture_box_filter as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan13.as_mut().map(|s| &mut s.texture_compression_astc_hdr), |
| self.features_texture_compression_astchdr |
| .as_mut() |
| .map(|s| &mut s.texture_compression_astc_hdr), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.texture_compression_astc_hdr as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.texture_compression_astc_ldr].into_iter().next() |
| { |
| *f = features.texture_compression_astc_ldr as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.texture_compression_bc].into_iter().next() |
| { |
| *f = features.texture_compression_bc as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.texture_compression_etc2].into_iter().next() |
| { |
| *f = features.texture_compression_etc2 as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_image_processing_qcom.as_mut().map(|s| &mut s.texture_sample_weighted)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.texture_sample_weighted as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_tile_properties_qcom.as_mut().map(|s| &mut s.tile_properties)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.tile_properties as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.timeline_semaphore), |
| self.features_timeline_semaphore.as_mut().map(|s| &mut s.timeline_semaphore), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.timeline_semaphore as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_transform_feedback_ext.as_mut().map(|s| &mut s.transform_feedback)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.transform_feedback as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_provoking_vertex_ext |
| .as_mut() |
| .map(|s| &mut s.transform_feedback_preserves_provoking_vertex)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.transform_feedback_preserves_provoking_vertex as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_portability_subset_khr.as_mut().map(|s| &mut s.triangle_fans)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.triangle_fans as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan11.as_mut().map(|s| &mut s.uniform_and_storage_buffer16_bit_access), |
| self.features_16bit_storage |
| .as_mut() |
| .map(|s| &mut s.uniform_and_storage_buffer16_bit_access), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.uniform_and_storage_buffer16_bit_access as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.uniform_and_storage_buffer8_bit_access), |
| self.features_8bit_storage |
| .as_mut() |
| .map(|s| &mut s.uniform_and_storage_buffer8_bit_access), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.uniform_and_storage_buffer8_bit_access as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.uniform_buffer_standard_layout), |
| self.features_uniform_buffer_standard_layout |
| .as_mut() |
| .map(|s| &mut s.uniform_buffer_standard_layout), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.uniform_buffer_standard_layout as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [&mut self.features_vulkan10.features.variable_multisample_rate].into_iter().next() |
| { |
| *f = features.variable_multisample_rate as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan11.as_mut().map(|s| &mut s.variable_pointers), |
| self.features_variable_pointers.as_mut().map(|s| &mut s.variable_pointers), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.variable_pointers as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan11.as_mut().map(|s| &mut s.variable_pointers_storage_buffer), |
| self.features_variable_pointers |
| .as_mut() |
| .map(|s| &mut s.variable_pointers_storage_buffer), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.variable_pointers_storage_buffer as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_portability_subset_khr |
| .as_mut() |
| .map(|s| &mut s.vertex_attribute_access_beyond_stride)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.vertex_attribute_access_beyond_stride as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_vertex_attribute_divisor_ext |
| .as_mut() |
| .map(|s| &mut s.vertex_attribute_instance_rate_divisor)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.vertex_attribute_instance_rate_divisor as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_vertex_attribute_divisor_ext |
| .as_mut() |
| .map(|s| &mut s.vertex_attribute_instance_rate_zero_divisor)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.vertex_attribute_instance_rate_zero_divisor as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_vertex_input_dynamic_state_ext |
| .as_mut() |
| .map(|s| &mut s.vertex_input_dynamic_state)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.vertex_input_dynamic_state as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.vertex_pipeline_stores_and_atomics] |
| .into_iter() |
| .next() |
| { |
| *f = features.vertex_pipeline_stores_and_atomics as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.vulkan_memory_model), |
| self.features_vulkan_memory_model.as_mut().map(|s| &mut s.vulkan_memory_model), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.vulkan_memory_model as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12 |
| .as_mut() |
| .map(|s| &mut s.vulkan_memory_model_availability_visibility_chains), |
| self.features_vulkan_memory_model |
| .as_mut() |
| .map(|s| &mut s.vulkan_memory_model_availability_visibility_chains), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.vulkan_memory_model_availability_visibility_chains as ash::vk::Bool32; |
| } |
| if let Some(f) = [ |
| self.features_vulkan12.as_mut().map(|s| &mut s.vulkan_memory_model_device_scope), |
| self.features_vulkan_memory_model |
| .as_mut() |
| .map(|s| &mut s.vulkan_memory_model_device_scope), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.vulkan_memory_model_device_scope as ash::vk::Bool32; |
| } |
| if let Some(f) = [&mut self.features_vulkan10.features.wide_lines].into_iter().next() { |
| *f = features.wide_lines as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_workgroup_memory_explicit_layout_khr |
| .as_mut() |
| .map(|s| &mut s.workgroup_memory_explicit_layout)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.workgroup_memory_explicit_layout as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_workgroup_memory_explicit_layout_khr |
| .as_mut() |
| .map(|s| &mut s.workgroup_memory_explicit_layout16_bit_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.workgroup_memory_explicit_layout16_bit_access as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_workgroup_memory_explicit_layout_khr |
| .as_mut() |
| .map(|s| &mut s.workgroup_memory_explicit_layout8_bit_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.workgroup_memory_explicit_layout8_bit_access as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_workgroup_memory_explicit_layout_khr |
| .as_mut() |
| .map(|s| &mut s.workgroup_memory_explicit_layout_scalar_block_layout)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.workgroup_memory_explicit_layout_scalar_block_layout as ash::vk::Bool32; |
| } |
| if let Some(f) = [self |
| .features_ycbcr2_plane444_formats_ext |
| .as_mut() |
| .map(|s| &mut s.ycbcr2plane444_formats)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.ycbcr2plane444_formats as ash::vk::Bool32; |
| } |
| if let Some(f) = |
| [self.features_ycbcr_image_arrays_ext.as_mut().map(|s| &mut s.ycbcr_image_arrays)] |
| .into_iter() |
| .flatten() |
| .next() |
| { |
| *f = features.ycbcr_image_arrays as ash::vk::Bool32; |
| } |
| } |
| } |
| impl From<&FeaturesFfi> for Features { |
| fn from(features_ffi: &FeaturesFfi) -> Self { |
| Features { |
| acceleration_structure: [features_ffi |
| .features_acceleration_structure_khr |
| .map(|s| s.acceleration_structure)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| acceleration_structure_capture_replay: [features_ffi |
| .features_acceleration_structure_khr |
| .map(|s| s.acceleration_structure_capture_replay)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| acceleration_structure_host_commands: [features_ffi |
| .features_acceleration_structure_khr |
| .map(|s| s.acceleration_structure_host_commands)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| acceleration_structure_indirect_build: [features_ffi |
| .features_acceleration_structure_khr |
| .map(|s| s.acceleration_structure_indirect_build)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| advanced_blend_coherent_operations: [features_ffi |
| .features_blend_operation_advanced_ext |
| .map(|s| s.advanced_blend_coherent_operations)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| alpha_to_one: [features_ffi.features_vulkan10.features.alpha_to_one] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| amigo_profiling: [features_ffi.features_amigo_profiling_sec.map(|s| s.amigo_profiling)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| attachment_feedback_loop_layout: [features_ffi |
| .features_attachment_feedback_loop_layout_ext |
| .map(|s| s.attachment_feedback_loop_layout)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| attachment_fragment_shading_rate: [features_ffi |
| .features_fragment_shading_rate_khr |
| .map(|s| s.attachment_fragment_shading_rate)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| border_color_swizzle: [features_ffi |
| .features_border_color_swizzle_ext |
| .map(|s| s.border_color_swizzle)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| border_color_swizzle_from_image: [features_ffi |
| .features_border_color_swizzle_ext |
| .map(|s| s.border_color_swizzle_from_image)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| bresenham_lines: [features_ffi |
| .features_line_rasterization_ext |
| .map(|s| s.bresenham_lines)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| buffer_device_address: [ |
| features_ffi.features_vulkan12.map(|s| s.buffer_device_address), |
| features_ffi.features_buffer_device_address.map(|s| s.buffer_device_address), |
| features_ffi.features_buffer_device_address_ext.map(|s| s.buffer_device_address), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| buffer_device_address_capture_replay: [ |
| features_ffi.features_vulkan12.map(|s| s.buffer_device_address_capture_replay), |
| features_ffi |
| .features_buffer_device_address |
| .map(|s| s.buffer_device_address_capture_replay), |
| features_ffi |
| .features_buffer_device_address_ext |
| .map(|s| s.buffer_device_address_capture_replay), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| buffer_device_address_multi_device: [ |
| features_ffi.features_vulkan12.map(|s| s.buffer_device_address_multi_device), |
| features_ffi |
| .features_buffer_device_address |
| .map(|s| s.buffer_device_address_multi_device), |
| features_ffi |
| .features_buffer_device_address_ext |
| .map(|s| s.buffer_device_address_multi_device), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| color_write_enable: [features_ffi |
| .features_color_write_enable_ext |
| .map(|s| s.color_write_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| compute_derivative_group_linear: [features_ffi |
| .features_compute_shader_derivatives_nv |
| .map(|s| s.compute_derivative_group_linear)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| compute_derivative_group_quads: [features_ffi |
| .features_compute_shader_derivatives_nv |
| .map(|s| s.compute_derivative_group_quads)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| compute_full_subgroups: [ |
| features_ffi.features_vulkan13.map(|s| s.compute_full_subgroups), |
| features_ffi.features_subgroup_size_control.map(|s| s.compute_full_subgroups), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| conditional_rendering: [features_ffi |
| .features_conditional_rendering_ext |
| .map(|s| s.conditional_rendering)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| constant_alpha_color_blend_factors: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.constant_alpha_color_blend_factors)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| cooperative_matrix: [features_ffi |
| .features_cooperative_matrix_nv |
| .map(|s| s.cooperative_matrix)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| cooperative_matrix_robust_buffer_access: [features_ffi |
| .features_cooperative_matrix_nv |
| .map(|s| s.cooperative_matrix_robust_buffer_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| corner_sampled_image: [features_ffi |
| .features_corner_sampled_image_nv |
| .map(|s| s.corner_sampled_image)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| coverage_reduction_mode: [features_ffi |
| .features_coverage_reduction_mode_nv |
| .map(|s| s.coverage_reduction_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| custom_border_color_without_format: [features_ffi |
| .features_custom_border_color_ext |
| .map(|s| s.custom_border_color_without_format)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| custom_border_colors: [features_ffi |
| .features_custom_border_color_ext |
| .map(|s| s.custom_border_colors)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| decode_mode_shared_exponent: [features_ffi |
| .features_astc_decode_ext |
| .map(|s| s.decode_mode_shared_exponent)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| dedicated_allocation_image_aliasing: [features_ffi |
| .features_dedicated_allocation_image_aliasing_nv |
| .map(|s| s.dedicated_allocation_image_aliasing)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| depth_bias_clamp: [features_ffi.features_vulkan10.features.depth_bias_clamp] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| depth_bounds: [features_ffi.features_vulkan10.features.depth_bounds] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| depth_clamp: [features_ffi.features_vulkan10.features.depth_clamp] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| depth_clamp_zero_one: [features_ffi |
| .features_depth_clamp_zero_one_ext |
| .map(|s| s.depth_clamp_zero_one)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| depth_clip_control: [features_ffi |
| .features_depth_clip_control_ext |
| .map(|s| s.depth_clip_control)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| depth_clip_enable: [features_ffi |
| .features_depth_clip_enable_ext |
| .map(|s| s.depth_clip_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_binding_acceleration_structure_update_after_bind: [features_ffi |
| .features_acceleration_structure_khr |
| .map(|s| s.descriptor_binding_acceleration_structure_update_after_bind)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_binding_inline_uniform_block_update_after_bind: [ |
| features_ffi |
| .features_vulkan13 |
| .map(|s| s.descriptor_binding_inline_uniform_block_update_after_bind), |
| features_ffi |
| .features_inline_uniform_block |
| .map(|s| s.descriptor_binding_inline_uniform_block_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_binding_partially_bound: [ |
| features_ffi.features_vulkan12.map(|s| s.descriptor_binding_partially_bound), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.descriptor_binding_partially_bound), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_binding_sampled_image_update_after_bind: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.descriptor_binding_sampled_image_update_after_bind), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.descriptor_binding_sampled_image_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_binding_storage_buffer_update_after_bind: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.descriptor_binding_storage_buffer_update_after_bind), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.descriptor_binding_storage_buffer_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_binding_storage_image_update_after_bind: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.descriptor_binding_storage_image_update_after_bind), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.descriptor_binding_storage_image_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_binding_storage_texel_buffer_update_after_bind: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.descriptor_binding_storage_texel_buffer_update_after_bind), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.descriptor_binding_storage_texel_buffer_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_binding_uniform_buffer_update_after_bind: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.descriptor_binding_uniform_buffer_update_after_bind), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.descriptor_binding_uniform_buffer_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_binding_uniform_texel_buffer_update_after_bind: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.descriptor_binding_uniform_texel_buffer_update_after_bind), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.descriptor_binding_uniform_texel_buffer_update_after_bind), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_binding_update_unused_while_pending: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.descriptor_binding_update_unused_while_pending), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.descriptor_binding_update_unused_while_pending), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_binding_variable_descriptor_count: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.descriptor_binding_variable_descriptor_count), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.descriptor_binding_variable_descriptor_count), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_buffer: [features_ffi |
| .features_descriptor_buffer_ext |
| .map(|s| s.descriptor_buffer)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_buffer_capture_replay: [features_ffi |
| .features_descriptor_buffer_ext |
| .map(|s| s.descriptor_buffer_capture_replay)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_buffer_image_layout_ignored: [features_ffi |
| .features_descriptor_buffer_ext |
| .map(|s| s.descriptor_buffer_image_layout_ignored)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_buffer_push_descriptors: [features_ffi |
| .features_descriptor_buffer_ext |
| .map(|s| s.descriptor_buffer_push_descriptors)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_indexing: [features_ffi.features_vulkan12.map(|s| s.descriptor_indexing)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| descriptor_set_host_mapping: [features_ffi |
| .features_descriptor_set_host_mapping_valve |
| .map(|s| s.descriptor_set_host_mapping)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| device_coherent_memory: [features_ffi |
| .features_coherent_memory_amd |
| .map(|s| s.device_coherent_memory)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| device_fault: [features_ffi.features_fault_ext.map(|s| s.device_fault)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| device_fault_vendor_binary: [features_ffi |
| .features_fault_ext |
| .map(|s| s.device_fault_vendor_binary)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| device_generated_commands: [features_ffi |
| .features_device_generated_commands_nv |
| .map(|s| s.device_generated_commands)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| device_memory_report: [features_ffi |
| .features_device_memory_report_ext |
| .map(|s| s.device_memory_report)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| diagnostics_config: [features_ffi |
| .features_diagnostics_config_nv |
| .map(|s| s.diagnostics_config)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| draw_indirect_count: [features_ffi.features_vulkan12.map(|s| s.draw_indirect_count)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| draw_indirect_first_instance: [features_ffi |
| .features_vulkan10 |
| .features |
| .draw_indirect_first_instance] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| dual_src_blend: [features_ffi.features_vulkan10.features.dual_src_blend] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| dynamic_rendering: [ |
| features_ffi.features_vulkan13.map(|s| s.dynamic_rendering), |
| features_ffi.features_dynamic_rendering.map(|s| s.dynamic_rendering), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| events: [features_ffi.features_portability_subset_khr.map(|s| s.events)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| exclusive_scissor: [features_ffi |
| .features_exclusive_scissor_nv |
| .map(|s| s.exclusive_scissor)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state: [features_ffi |
| .features_extended_dynamic_state_ext |
| .map(|s| s.extended_dynamic_state)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state2: [features_ffi |
| .features_extended_dynamic_state2_ext |
| .map(|s| s.extended_dynamic_state2)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state2_logic_op: [features_ffi |
| .features_extended_dynamic_state2_ext |
| .map(|s| s.extended_dynamic_state2_logic_op)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state2_patch_control_points: [features_ffi |
| .features_extended_dynamic_state2_ext |
| .map(|s| s.extended_dynamic_state2_patch_control_points)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_alpha_to_coverage_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_alpha_to_coverage_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_alpha_to_one_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_alpha_to_one_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_color_blend_advanced: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_color_blend_advanced)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_color_blend_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_color_blend_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_color_blend_equation: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_color_blend_equation)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_color_write_mask: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_color_write_mask)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_conservative_rasterization_mode: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_conservative_rasterization_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_coverage_modulation_mode: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_coverage_modulation_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_coverage_modulation_table: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_coverage_modulation_table)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_coverage_modulation_table_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_coverage_modulation_table_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_coverage_reduction_mode: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_coverage_reduction_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_coverage_to_color_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_coverage_to_color_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_coverage_to_color_location: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_coverage_to_color_location)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_depth_clamp_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_depth_clamp_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_depth_clip_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_depth_clip_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_depth_clip_negative_one_to_one: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_depth_clip_negative_one_to_one)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_extra_primitive_overestimation_size: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_extra_primitive_overestimation_size)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_line_rasterization_mode: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_line_rasterization_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_line_stipple_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_line_stipple_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_logic_op_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_logic_op_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_polygon_mode: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_polygon_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_provoking_vertex_mode: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_provoking_vertex_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_rasterization_samples: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_rasterization_samples)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_rasterization_stream: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_rasterization_stream)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_representative_fragment_test_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_representative_fragment_test_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_sample_locations_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_sample_locations_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_sample_mask: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_sample_mask)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_shading_rate_image_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_shading_rate_image_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_tessellation_domain_origin: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_tessellation_domain_origin)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_viewport_swizzle: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_viewport_swizzle)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| extended_dynamic_state3_viewport_w_scaling_enable: [features_ffi |
| .features_extended_dynamic_state3_ext |
| .map(|s| s.extended_dynamic_state3_viewport_w_scaling_enable)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| external_memory_rdma: [features_ffi |
| .features_external_memory_rdma_nv |
| .map(|s| s.external_memory_rdma)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| fill_mode_non_solid: [features_ffi.features_vulkan10.features.fill_mode_non_solid] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| format_a4b4g4r4: [features_ffi.features_4444formats_ext.map(|s| s.format_a4b4g4r4)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| format_a4r4g4b4: [features_ffi.features_4444formats_ext.map(|s| s.format_a4r4g4b4)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| format_rgba10x6_without_y_cb_cr_sampler: [features_ffi |
| .features_rgba10x6_formats_ext |
| .map(|s| s.format_rgba10x6_without_y_cb_cr_sampler)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| fragment_density_map: [features_ffi |
| .features_fragment_density_map_ext |
| .map(|s| s.fragment_density_map)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| fragment_density_map_deferred: [features_ffi |
| .features_fragment_density_map2_ext |
| .map(|s| s.fragment_density_map_deferred)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| fragment_density_map_dynamic: [features_ffi |
| .features_fragment_density_map_ext |
| .map(|s| s.fragment_density_map_dynamic)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| fragment_density_map_non_subsampled_images: [features_ffi |
| .features_fragment_density_map_ext |
| .map(|s| s.fragment_density_map_non_subsampled_images)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| fragment_density_map_offset: [features_ffi |
| .features_fragment_density_map_offset_qcom |
| .map(|s| s.fragment_density_map_offset)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| fragment_shader_barycentric: [features_ffi |
| .features_fragment_shader_barycentric_khr |
| .map(|s| s.fragment_shader_barycentric)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| fragment_shader_pixel_interlock: [features_ffi |
| .features_fragment_shader_interlock_ext |
| .map(|s| s.fragment_shader_pixel_interlock)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| fragment_shader_sample_interlock: [features_ffi |
| .features_fragment_shader_interlock_ext |
| .map(|s| s.fragment_shader_sample_interlock)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| fragment_shader_shading_rate_interlock: [features_ffi |
| .features_fragment_shader_interlock_ext |
| .map(|s| s.fragment_shader_shading_rate_interlock)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| fragment_shading_rate_enums: [features_ffi |
| .features_fragment_shading_rate_enums_nv |
| .map(|s| s.fragment_shading_rate_enums)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| fragment_stores_and_atomics: [features_ffi |
| .features_vulkan10 |
| .features |
| .fragment_stores_and_atomics] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| full_draw_index_uint32: [features_ffi |
| .features_vulkan10 |
| .features |
| .full_draw_index_uint32] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| geometry_shader: [features_ffi.features_vulkan10.features.geometry_shader] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| geometry_streams: [features_ffi |
| .features_transform_feedback_ext |
| .map(|s| s.geometry_streams)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| global_priority_query: [features_ffi |
| .features_global_priority_query_khr |
| .map(|s| s.global_priority_query)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| graphics_pipeline_library: [features_ffi |
| .features_graphics_pipeline_library_ext |
| .map(|s| s.graphics_pipeline_library)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| host_query_reset: [ |
| features_ffi.features_vulkan12.map(|s| s.host_query_reset), |
| features_ffi.features_host_query_reset.map(|s| s.host_query_reset), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| image2_d_view_of3_d: [features_ffi |
| .features_image2_d_view_of3_d_ext |
| .map(|s| s.image2_d_view_of3_d)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| image_compression_control: [features_ffi |
| .features_image_compression_control_ext |
| .map(|s| s.image_compression_control)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| image_compression_control_swapchain: [features_ffi |
| .features_image_compression_control_swapchain_ext |
| .map(|s| s.image_compression_control_swapchain)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| image_cube_array: [features_ffi.features_vulkan10.features.image_cube_array] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| image_footprint: [features_ffi |
| .features_shader_image_footprint_nv |
| .map(|s| s.image_footprint)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| image_view2_d_on3_d_image: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.image_view2_d_on3_d_image)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| image_view_format_reinterpretation: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.image_view_format_reinterpretation)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| image_view_format_swizzle: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.image_view_format_swizzle)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| imageless_framebuffer: [ |
| features_ffi.features_vulkan12.map(|s| s.imageless_framebuffer), |
| features_ffi.features_imageless_framebuffer.map(|s| s.imageless_framebuffer), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| independent_blend: [features_ffi.features_vulkan10.features.independent_blend] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| index_type_uint8: [features_ffi |
| .features_index_type_uint8_ext |
| .map(|s| s.index_type_uint8)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| indirect_copy: [features_ffi.features_copy_memory_indirect_nv.map(|s| s.indirect_copy)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| inherited_conditional_rendering: [features_ffi |
| .features_conditional_rendering_ext |
| .map(|s| s.inherited_conditional_rendering)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| inherited_queries: [features_ffi.features_vulkan10.features.inherited_queries] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| inherited_viewport_scissor2_d: [features_ffi |
| .features_inherited_viewport_scissor_nv |
| .map(|s| s.inherited_viewport_scissor2_d)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| inline_uniform_block: [ |
| features_ffi.features_vulkan13.map(|s| s.inline_uniform_block), |
| features_ffi.features_inline_uniform_block.map(|s| s.inline_uniform_block), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| invocation_mask: [features_ffi |
| .features_invocation_mask_huawei |
| .map(|s| s.invocation_mask)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| large_points: [features_ffi.features_vulkan10.features.large_points] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| legacy_dithering: [features_ffi |
| .features_legacy_dithering_ext |
| .map(|s| s.legacy_dithering)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| linear_color_attachment: [features_ffi |
| .features_linear_color_attachment_nv |
| .map(|s| s.linear_color_attachment)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| logic_op: [features_ffi.features_vulkan10.features.logic_op] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| maintenance4: [ |
| features_ffi.features_vulkan13.map(|s| s.maintenance4), |
| features_ffi.features_maintenance4.map(|s| s.maintenance4), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| memory_decompression: [features_ffi |
| .features_memory_decompression_nv |
| .map(|s| s.memory_decompression)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| memory_priority: [features_ffi.features_memory_priority_ext.map(|s| s.memory_priority)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| mesh_shader: [ |
| features_ffi.features_mesh_shader_ext.map(|s| s.mesh_shader), |
| features_ffi.features_mesh_shader_nv.map(|s| s.mesh_shader), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| mesh_shader_queries: [features_ffi |
| .features_mesh_shader_ext |
| .map(|s| s.mesh_shader_queries)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| micromap: [features_ffi.features_opacity_micromap_ext.map(|s| s.micromap)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| micromap_capture_replay: [features_ffi |
| .features_opacity_micromap_ext |
| .map(|s| s.micromap_capture_replay)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| micromap_host_commands: [features_ffi |
| .features_opacity_micromap_ext |
| .map(|s| s.micromap_host_commands)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| min_lod: [features_ffi.features_image_view_min_lod_ext.map(|s| s.min_lod)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| multi_draw: [features_ffi.features_multi_draw_ext.map(|s| s.multi_draw)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| multi_draw_indirect: [features_ffi.features_vulkan10.features.multi_draw_indirect] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| multi_viewport: [features_ffi.features_vulkan10.features.multi_viewport] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| multisample_array_image: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.multisample_array_image)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| multisampled_render_to_single_sampled: [features_ffi |
| .features_multisampled_render_to_single_sampled_ext |
| .map(|s| s.multisampled_render_to_single_sampled)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| multiview: [ |
| features_ffi.features_vulkan11.map(|s| s.multiview), |
| features_ffi.features_multiview.map(|s| s.multiview), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| multiview_geometry_shader: [ |
| features_ffi.features_vulkan11.map(|s| s.multiview_geometry_shader), |
| features_ffi.features_multiview.map(|s| s.multiview_geometry_shader), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| multiview_mesh_shader: [features_ffi |
| .features_mesh_shader_ext |
| .map(|s| s.multiview_mesh_shader)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| multiview_per_view_viewports: [features_ffi |
| .features_multiview_per_view_viewports_qcom |
| .map(|s| s.multiview_per_view_viewports)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| multiview_tessellation_shader: [ |
| features_ffi.features_vulkan11.map(|s| s.multiview_tessellation_shader), |
| features_ffi.features_multiview.map(|s| s.multiview_tessellation_shader), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| mutable_comparison_samplers: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.mutable_comparison_samplers)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| mutable_descriptor_type: [features_ffi |
| .features_mutable_descriptor_type_ext |
| .map(|s| s.mutable_descriptor_type)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| no_invocation_fragment_shading_rates: [features_ffi |
| .features_fragment_shading_rate_enums_nv |
| .map(|s| s.no_invocation_fragment_shading_rates)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| non_seamless_cube_map: [features_ffi |
| .features_non_seamless_cube_map_ext |
| .map(|s| s.non_seamless_cube_map)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| null_descriptor: [features_ffi.features_robustness2_ext.map(|s| s.null_descriptor)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| occlusion_query_precise: [features_ffi |
| .features_vulkan10 |
| .features |
| .occlusion_query_precise] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| optical_flow: [features_ffi.features_optical_flow_nv.map(|s| s.optical_flow)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| pageable_device_local_memory: [features_ffi |
| .features_pageable_device_local_memory_ext |
| .map(|s| s.pageable_device_local_memory)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| performance_counter_multiple_query_pools: [features_ffi |
| .features_performance_query_khr |
| .map(|s| s.performance_counter_multiple_query_pools)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| performance_counter_query_pools: [features_ffi |
| .features_performance_query_khr |
| .map(|s| s.performance_counter_query_pools)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| pipeline_creation_cache_control: [ |
| features_ffi.features_vulkan13.map(|s| s.pipeline_creation_cache_control), |
| features_ffi |
| .features_pipeline_creation_cache_control |
| .map(|s| s.pipeline_creation_cache_control), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| pipeline_executable_info: [features_ffi |
| .features_pipeline_executable_properties_khr |
| .map(|s| s.pipeline_executable_info)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| pipeline_fragment_shading_rate: [features_ffi |
| .features_fragment_shading_rate_khr |
| .map(|s| s.pipeline_fragment_shading_rate)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| pipeline_properties_identifier: [features_ffi |
| .features_pipeline_properties_ext |
| .map(|s| s.pipeline_properties_identifier)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| pipeline_protected_access: [features_ffi |
| .features_pipeline_protected_access_ext |
| .map(|s| s.pipeline_protected_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| pipeline_robustness: [features_ffi |
| .features_pipeline_robustness_ext |
| .map(|s| s.pipeline_robustness)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| pipeline_statistics_query: [features_ffi |
| .features_vulkan10 |
| .features |
| .pipeline_statistics_query] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| point_polygons: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.point_polygons)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| present_barrier: [features_ffi.features_present_barrier_nv.map(|s| s.present_barrier)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| present_id: [features_ffi.features_present_id_khr.map(|s| s.present_id)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| present_wait: [features_ffi.features_present_wait_khr.map(|s| s.present_wait)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| primitive_fragment_shading_rate: [features_ffi |
| .features_fragment_shading_rate_khr |
| .map(|s| s.primitive_fragment_shading_rate)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| primitive_fragment_shading_rate_mesh_shader: [features_ffi |
| .features_mesh_shader_ext |
| .map(|s| s.primitive_fragment_shading_rate_mesh_shader)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| primitive_topology_list_restart: [features_ffi |
| .features_primitive_topology_list_restart_ext |
| .map(|s| s.primitive_topology_list_restart)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| primitive_topology_patch_list_restart: [features_ffi |
| .features_primitive_topology_list_restart_ext |
| .map(|s| s.primitive_topology_patch_list_restart)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| primitives_generated_query: [features_ffi |
| .features_primitives_generated_query_ext |
| .map(|s| s.primitives_generated_query)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| primitives_generated_query_with_non_zero_streams: [features_ffi |
| .features_primitives_generated_query_ext |
| .map(|s| s.primitives_generated_query_with_non_zero_streams)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| primitives_generated_query_with_rasterizer_discard: [features_ffi |
| .features_primitives_generated_query_ext |
| .map(|s| s.primitives_generated_query_with_rasterizer_discard)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| private_data: [ |
| features_ffi.features_vulkan13.map(|s| s.private_data), |
| features_ffi.features_private_data.map(|s| s.private_data), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| protected_memory: [ |
| features_ffi.features_vulkan11.map(|s| s.protected_memory), |
| features_ffi.features_protected_memory.map(|s| s.protected_memory), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| provoking_vertex_last: [features_ffi |
| .features_provoking_vertex_ext |
| .map(|s| s.provoking_vertex_last)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| rasterization_order_color_attachment_access: [features_ffi |
| .features_rasterization_order_attachment_access_ext |
| .map(|s| s.rasterization_order_color_attachment_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| rasterization_order_depth_attachment_access: [features_ffi |
| .features_rasterization_order_attachment_access_ext |
| .map(|s| s.rasterization_order_depth_attachment_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| rasterization_order_stencil_attachment_access: [features_ffi |
| .features_rasterization_order_attachment_access_ext |
| .map(|s| s.rasterization_order_stencil_attachment_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ray_query: [features_ffi.features_ray_query_khr.map(|s| s.ray_query)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ray_tracing_invocation_reorder: [features_ffi |
| .features_ray_tracing_invocation_reorder_nv |
| .map(|s| s.ray_tracing_invocation_reorder)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ray_tracing_maintenance1: [features_ffi |
| .features_ray_tracing_maintenance1_khr |
| .map(|s| s.ray_tracing_maintenance1)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ray_tracing_motion_blur: [features_ffi |
| .features_ray_tracing_motion_blur_nv |
| .map(|s| s.ray_tracing_motion_blur)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ray_tracing_motion_blur_pipeline_trace_rays_indirect: [features_ffi |
| .features_ray_tracing_motion_blur_nv |
| .map(|s| s.ray_tracing_motion_blur_pipeline_trace_rays_indirect)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ray_tracing_pipeline: [features_ffi |
| .features_ray_tracing_pipeline_khr |
| .map(|s| s.ray_tracing_pipeline)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ray_tracing_pipeline_shader_group_handle_capture_replay: [features_ffi |
| .features_ray_tracing_pipeline_khr |
| .map(|s| s.ray_tracing_pipeline_shader_group_handle_capture_replay)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ray_tracing_pipeline_shader_group_handle_capture_replay_mixed: [features_ffi |
| .features_ray_tracing_pipeline_khr |
| .map(|s| s.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ray_tracing_pipeline_trace_rays_indirect: [features_ffi |
| .features_ray_tracing_pipeline_khr |
| .map(|s| s.ray_tracing_pipeline_trace_rays_indirect)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ray_tracing_pipeline_trace_rays_indirect2: [features_ffi |
| .features_ray_tracing_maintenance1_khr |
| .map(|s| s.ray_tracing_pipeline_trace_rays_indirect2)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ray_traversal_primitive_culling: [features_ffi |
| .features_ray_tracing_pipeline_khr |
| .map(|s| s.ray_traversal_primitive_culling)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| rectangular_lines: [features_ffi |
| .features_line_rasterization_ext |
| .map(|s| s.rectangular_lines)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| report_address_binding: [features_ffi |
| .features_address_binding_report_ext |
| .map(|s| s.report_address_binding)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| representative_fragment_test: [features_ffi |
| .features_representative_fragment_test_nv |
| .map(|s| s.representative_fragment_test)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| robust_buffer_access: [features_ffi.features_vulkan10.features.robust_buffer_access] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| robust_buffer_access2: [features_ffi |
| .features_robustness2_ext |
| .map(|s| s.robust_buffer_access2)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| robust_image_access: [ |
| features_ffi.features_vulkan13.map(|s| s.robust_image_access), |
| features_ffi.features_image_robustness.map(|s| s.robust_image_access), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| robust_image_access2: [features_ffi |
| .features_robustness2_ext |
| .map(|s| s.robust_image_access2)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| runtime_descriptor_array: [ |
| features_ffi.features_vulkan12.map(|s| s.runtime_descriptor_array), |
| features_ffi.features_descriptor_indexing.map(|s| s.runtime_descriptor_array), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sample_rate_shading: [features_ffi.features_vulkan10.features.sample_rate_shading] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sampler2_d_view_of3_d: [features_ffi |
| .features_image2_d_view_of3_d_ext |
| .map(|s| s.sampler2_d_view_of3_d)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sampler_anisotropy: [features_ffi.features_vulkan10.features.sampler_anisotropy] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sampler_filter_minmax: [features_ffi |
| .features_vulkan12 |
| .map(|s| s.sampler_filter_minmax)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sampler_mip_lod_bias: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.sampler_mip_lod_bias)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sampler_mirror_clamp_to_edge: [features_ffi |
| .features_vulkan12 |
| .map(|s| s.sampler_mirror_clamp_to_edge)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sampler_ycbcr_conversion: [ |
| features_ffi.features_vulkan11.map(|s| s.sampler_ycbcr_conversion), |
| features_ffi.features_sampler_ycbcr_conversion.map(|s| s.sampler_ycbcr_conversion), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| scalar_block_layout: [ |
| features_ffi.features_vulkan12.map(|s| s.scalar_block_layout), |
| features_ffi.features_scalar_block_layout.map(|s| s.scalar_block_layout), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| separate_depth_stencil_layouts: [ |
| features_ffi.features_vulkan12.map(|s| s.separate_depth_stencil_layouts), |
| features_ffi |
| .features_separate_depth_stencil_layouts |
| .map(|s| s.separate_depth_stencil_layouts), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| separate_stencil_mask_ref: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.separate_stencil_mask_ref)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_buffer_float16_atomic_add: [features_ffi |
| .features_shader_atomic_float2_ext |
| .map(|s| s.shader_buffer_float16_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_buffer_float16_atomic_min_max: [features_ffi |
| .features_shader_atomic_float2_ext |
| .map(|s| s.shader_buffer_float16_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_buffer_float16_atomics: [features_ffi |
| .features_shader_atomic_float2_ext |
| .map(|s| s.shader_buffer_float16_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_buffer_float32_atomic_add: [features_ffi |
| .features_shader_atomic_float_ext |
| .map(|s| s.shader_buffer_float32_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_buffer_float32_atomic_min_max: [features_ffi |
| .features_shader_atomic_float2_ext |
| .map(|s| s.shader_buffer_float32_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_buffer_float32_atomics: [features_ffi |
| .features_shader_atomic_float_ext |
| .map(|s| s.shader_buffer_float32_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_buffer_float64_atomic_add: [features_ffi |
| .features_shader_atomic_float_ext |
| .map(|s| s.shader_buffer_float64_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_buffer_float64_atomic_min_max: [features_ffi |
| .features_shader_atomic_float2_ext |
| .map(|s| s.shader_buffer_float64_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_buffer_float64_atomics: [features_ffi |
| .features_shader_atomic_float_ext |
| .map(|s| s.shader_buffer_float64_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_buffer_int64_atomics: [ |
| features_ffi.features_vulkan12.map(|s| s.shader_buffer_int64_atomics), |
| features_ffi.features_shader_atomic_int64.map(|s| s.shader_buffer_int64_atomics), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_clip_distance: [features_ffi.features_vulkan10.features.shader_clip_distance] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_core_builtins: [features_ffi |
| .features_shader_core_builtins_arm |
| .map(|s| s.shader_core_builtins)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_cull_distance: [features_ffi.features_vulkan10.features.shader_cull_distance] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_demote_to_helper_invocation: [ |
| features_ffi.features_vulkan13.map(|s| s.shader_demote_to_helper_invocation), |
| features_ffi |
| .features_shader_demote_to_helper_invocation |
| .map(|s| s.shader_demote_to_helper_invocation), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_device_clock: [features_ffi |
| .features_shader_clock_khr |
| .map(|s| s.shader_device_clock)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_draw_parameters: [ |
| features_ffi.features_vulkan11.map(|s| s.shader_draw_parameters), |
| features_ffi.features_shader_draw_parameters.map(|s| s.shader_draw_parameters), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_early_and_late_fragment_tests: [features_ffi |
| .features_shader_early_and_late_fragment_tests_amd |
| .map(|s| s.shader_early_and_late_fragment_tests)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_float16: [ |
| features_ffi.features_vulkan12.map(|s| s.shader_float16), |
| features_ffi.features_shader_float16_int8.map(|s| s.shader_float16), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_float64: [features_ffi.features_vulkan10.features.shader_float64] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_image_float32_atomic_add: [features_ffi |
| .features_shader_atomic_float_ext |
| .map(|s| s.shader_image_float32_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_image_float32_atomic_min_max: [features_ffi |
| .features_shader_atomic_float2_ext |
| .map(|s| s.shader_image_float32_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_image_float32_atomics: [features_ffi |
| .features_shader_atomic_float_ext |
| .map(|s| s.shader_image_float32_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_image_gather_extended: [features_ffi |
| .features_vulkan10 |
| .features |
| .shader_image_gather_extended] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_image_int64_atomics: [features_ffi |
| .features_shader_image_atomic_int64_ext |
| .map(|s| s.shader_image_int64_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_input_attachment_array_dynamic_indexing: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.shader_input_attachment_array_dynamic_indexing), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.shader_input_attachment_array_dynamic_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_input_attachment_array_non_uniform_indexing: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.shader_input_attachment_array_non_uniform_indexing), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.shader_input_attachment_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_int16: [features_ffi.features_vulkan10.features.shader_int16] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_int64: [features_ffi.features_vulkan10.features.shader_int64] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_int8: [ |
| features_ffi.features_vulkan12.map(|s| s.shader_int8), |
| features_ffi.features_shader_float16_int8.map(|s| s.shader_int8), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_integer_dot_product: [ |
| features_ffi.features_vulkan13.map(|s| s.shader_integer_dot_product), |
| features_ffi |
| .features_shader_integer_dot_product |
| .map(|s| s.shader_integer_dot_product), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_integer_functions2: [features_ffi |
| .features_shader_integer_functions2_intel |
| .map(|s| s.shader_integer_functions2)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_module_identifier: [features_ffi |
| .features_shader_module_identifier_ext |
| .map(|s| s.shader_module_identifier)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_output_layer: [features_ffi.features_vulkan12.map(|s| s.shader_output_layer)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_output_viewport_index: [features_ffi |
| .features_vulkan12 |
| .map(|s| s.shader_output_viewport_index)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_resource_min_lod: [features_ffi |
| .features_vulkan10 |
| .features |
| .shader_resource_min_lod] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_resource_residency: [features_ffi |
| .features_vulkan10 |
| .features |
| .shader_resource_residency] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_sample_rate_interpolation_functions: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.shader_sample_rate_interpolation_functions)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_sampled_image_array_dynamic_indexing: [features_ffi |
| .features_vulkan10 |
| .features |
| .shader_sampled_image_array_dynamic_indexing] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_sampled_image_array_non_uniform_indexing: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.shader_sampled_image_array_non_uniform_indexing), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.shader_sampled_image_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_shared_float16_atomic_add: [features_ffi |
| .features_shader_atomic_float2_ext |
| .map(|s| s.shader_shared_float16_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_shared_float16_atomic_min_max: [features_ffi |
| .features_shader_atomic_float2_ext |
| .map(|s| s.shader_shared_float16_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_shared_float16_atomics: [features_ffi |
| .features_shader_atomic_float2_ext |
| .map(|s| s.shader_shared_float16_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_shared_float32_atomic_add: [features_ffi |
| .features_shader_atomic_float_ext |
| .map(|s| s.shader_shared_float32_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_shared_float32_atomic_min_max: [features_ffi |
| .features_shader_atomic_float2_ext |
| .map(|s| s.shader_shared_float32_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_shared_float32_atomics: [features_ffi |
| .features_shader_atomic_float_ext |
| .map(|s| s.shader_shared_float32_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_shared_float64_atomic_add: [features_ffi |
| .features_shader_atomic_float_ext |
| .map(|s| s.shader_shared_float64_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_shared_float64_atomic_min_max: [features_ffi |
| .features_shader_atomic_float2_ext |
| .map(|s| s.shader_shared_float64_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_shared_float64_atomics: [features_ffi |
| .features_shader_atomic_float_ext |
| .map(|s| s.shader_shared_float64_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_shared_int64_atomics: [ |
| features_ffi.features_vulkan12.map(|s| s.shader_shared_int64_atomics), |
| features_ffi.features_shader_atomic_int64.map(|s| s.shader_shared_int64_atomics), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_sm_builtins: [features_ffi |
| .features_shader_sm_builtins_nv |
| .map(|s| s.shader_sm_builtins)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_storage_buffer_array_dynamic_indexing: [features_ffi |
| .features_vulkan10 |
| .features |
| .shader_storage_buffer_array_dynamic_indexing] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_storage_buffer_array_non_uniform_indexing: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.shader_storage_buffer_array_non_uniform_indexing), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.shader_storage_buffer_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_storage_image_array_dynamic_indexing: [features_ffi |
| .features_vulkan10 |
| .features |
| .shader_storage_image_array_dynamic_indexing] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_storage_image_array_non_uniform_indexing: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.shader_storage_image_array_non_uniform_indexing), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.shader_storage_image_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_storage_image_extended_formats: [features_ffi |
| .features_vulkan10 |
| .features |
| .shader_storage_image_extended_formats] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_storage_image_multisample: [features_ffi |
| .features_vulkan10 |
| .features |
| .shader_storage_image_multisample] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_storage_image_read_without_format: [features_ffi |
| .features_vulkan10 |
| .features |
| .shader_storage_image_read_without_format] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_storage_image_write_without_format: [features_ffi |
| .features_vulkan10 |
| .features |
| .shader_storage_image_write_without_format] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_storage_texel_buffer_array_dynamic_indexing: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.shader_storage_texel_buffer_array_dynamic_indexing), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.shader_storage_texel_buffer_array_dynamic_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_storage_texel_buffer_array_non_uniform_indexing: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.shader_storage_texel_buffer_array_non_uniform_indexing), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.shader_storage_texel_buffer_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_subgroup_clock: [features_ffi |
| .features_shader_clock_khr |
| .map(|s| s.shader_subgroup_clock)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_subgroup_extended_types: [ |
| features_ffi.features_vulkan12.map(|s| s.shader_subgroup_extended_types), |
| features_ffi |
| .features_shader_subgroup_extended_types |
| .map(|s| s.shader_subgroup_extended_types), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_subgroup_uniform_control_flow: [features_ffi |
| .features_shader_subgroup_uniform_control_flow_khr |
| .map(|s| s.shader_subgroup_uniform_control_flow)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_terminate_invocation: [ |
| features_ffi.features_vulkan13.map(|s| s.shader_terminate_invocation), |
| features_ffi |
| .features_shader_terminate_invocation |
| .map(|s| s.shader_terminate_invocation), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_tessellation_and_geometry_point_size: [features_ffi |
| .features_vulkan10 |
| .features |
| .shader_tessellation_and_geometry_point_size] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_uniform_buffer_array_dynamic_indexing: [features_ffi |
| .features_vulkan10 |
| .features |
| .shader_uniform_buffer_array_dynamic_indexing] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_uniform_buffer_array_non_uniform_indexing: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.shader_uniform_buffer_array_non_uniform_indexing), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.shader_uniform_buffer_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_uniform_texel_buffer_array_dynamic_indexing: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.shader_uniform_texel_buffer_array_dynamic_indexing), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.shader_uniform_texel_buffer_array_dynamic_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_uniform_texel_buffer_array_non_uniform_indexing: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.shader_uniform_texel_buffer_array_non_uniform_indexing), |
| features_ffi |
| .features_descriptor_indexing |
| .map(|s| s.shader_uniform_texel_buffer_array_non_uniform_indexing), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shader_zero_initialize_workgroup_memory: [ |
| features_ffi.features_vulkan13.map(|s| s.shader_zero_initialize_workgroup_memory), |
| features_ffi |
| .features_zero_initialize_workgroup_memory |
| .map(|s| s.shader_zero_initialize_workgroup_memory), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shading_rate_coarse_sample_order: [features_ffi |
| .features_shading_rate_image_nv |
| .map(|s| s.shading_rate_coarse_sample_order)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| shading_rate_image: [features_ffi |
| .features_shading_rate_image_nv |
| .map(|s| s.shading_rate_image)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| smooth_lines: [features_ffi.features_line_rasterization_ext.map(|s| s.smooth_lines)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_binding: [features_ffi.features_vulkan10.features.sparse_binding] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_image_float32_atomic_add: [features_ffi |
| .features_shader_atomic_float_ext |
| .map(|s| s.sparse_image_float32_atomic_add)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_image_float32_atomic_min_max: [features_ffi |
| .features_shader_atomic_float2_ext |
| .map(|s| s.sparse_image_float32_atomic_min_max)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_image_float32_atomics: [features_ffi |
| .features_shader_atomic_float_ext |
| .map(|s| s.sparse_image_float32_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_image_int64_atomics: [features_ffi |
| .features_shader_image_atomic_int64_ext |
| .map(|s| s.sparse_image_int64_atomics)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_residency16_samples: [features_ffi |
| .features_vulkan10 |
| .features |
| .sparse_residency16_samples] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_residency2_samples: [features_ffi |
| .features_vulkan10 |
| .features |
| .sparse_residency2_samples] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_residency4_samples: [features_ffi |
| .features_vulkan10 |
| .features |
| .sparse_residency4_samples] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_residency8_samples: [features_ffi |
| .features_vulkan10 |
| .features |
| .sparse_residency8_samples] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_residency_aliased: [features_ffi |
| .features_vulkan10 |
| .features |
| .sparse_residency_aliased] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_residency_buffer: [features_ffi |
| .features_vulkan10 |
| .features |
| .sparse_residency_buffer] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_residency_image2_d: [features_ffi |
| .features_vulkan10 |
| .features |
| .sparse_residency_image2_d] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| sparse_residency_image3_d: [features_ffi |
| .features_vulkan10 |
| .features |
| .sparse_residency_image3_d] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| stippled_bresenham_lines: [features_ffi |
| .features_line_rasterization_ext |
| .map(|s| s.stippled_bresenham_lines)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| stippled_rectangular_lines: [features_ffi |
| .features_line_rasterization_ext |
| .map(|s| s.stippled_rectangular_lines)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| stippled_smooth_lines: [features_ffi |
| .features_line_rasterization_ext |
| .map(|s| s.stippled_smooth_lines)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| storage_buffer16_bit_access: [ |
| features_ffi.features_vulkan11.map(|s| s.storage_buffer16_bit_access), |
| features_ffi.features_16bit_storage.map(|s| s.storage_buffer16_bit_access), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| storage_buffer8_bit_access: [ |
| features_ffi.features_vulkan12.map(|s| s.storage_buffer8_bit_access), |
| features_ffi.features_8bit_storage.map(|s| s.storage_buffer8_bit_access), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| storage_input_output16: [ |
| features_ffi.features_vulkan11.map(|s| s.storage_input_output16), |
| features_ffi.features_16bit_storage.map(|s| s.storage_input_output16), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| storage_push_constant16: [ |
| features_ffi.features_vulkan11.map(|s| s.storage_push_constant16), |
| features_ffi.features_16bit_storage.map(|s| s.storage_push_constant16), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| storage_push_constant8: [ |
| features_ffi.features_vulkan12.map(|s| s.storage_push_constant8), |
| features_ffi.features_8bit_storage.map(|s| s.storage_push_constant8), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| subgroup_broadcast_dynamic_id: [features_ffi |
| .features_vulkan12 |
| .map(|s| s.subgroup_broadcast_dynamic_id)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| subgroup_size_control: [ |
| features_ffi.features_vulkan13.map(|s| s.subgroup_size_control), |
| features_ffi.features_subgroup_size_control.map(|s| s.subgroup_size_control), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| subpass_merge_feedback: [features_ffi |
| .features_subpass_merge_feedback_ext |
| .map(|s| s.subpass_merge_feedback)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| subpass_shading: [features_ffi |
| .features_subpass_shading_huawei |
| .map(|s| s.subpass_shading)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| supersample_fragment_shading_rates: [features_ffi |
| .features_fragment_shading_rate_enums_nv |
| .map(|s| s.supersample_fragment_shading_rates)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| swapchain_maintenance1: [features_ffi |
| .features_swapchain_maintenance1_ext |
| .map(|s| s.swapchain_maintenance1)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| synchronization2: [ |
| features_ffi.features_vulkan13.map(|s| s.synchronization2), |
| features_ffi.features_synchronization2.map(|s| s.synchronization2), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| task_shader: [ |
| features_ffi.features_mesh_shader_ext.map(|s| s.task_shader), |
| features_ffi.features_mesh_shader_nv.map(|s| s.task_shader), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| tessellation_isolines: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.tessellation_isolines)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| tessellation_point_mode: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.tessellation_point_mode)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| tessellation_shader: [features_ffi.features_vulkan10.features.tessellation_shader] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| texel_buffer_alignment: [features_ffi |
| .features_texel_buffer_alignment_ext |
| .map(|s| s.texel_buffer_alignment)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| texture_block_match: [features_ffi |
| .features_image_processing_qcom |
| .map(|s| s.texture_block_match)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| texture_box_filter: [features_ffi |
| .features_image_processing_qcom |
| .map(|s| s.texture_box_filter)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| texture_compression_astc_hdr: [ |
| features_ffi.features_vulkan13.map(|s| s.texture_compression_astc_hdr), |
| features_ffi |
| .features_texture_compression_astchdr |
| .map(|s| s.texture_compression_astc_hdr), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| texture_compression_astc_ldr: [features_ffi |
| .features_vulkan10 |
| .features |
| .texture_compression_astc_ldr] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| texture_compression_bc: [features_ffi |
| .features_vulkan10 |
| .features |
| .texture_compression_bc] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| texture_compression_etc2: [features_ffi |
| .features_vulkan10 |
| .features |
| .texture_compression_etc2] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| texture_sample_weighted: [features_ffi |
| .features_image_processing_qcom |
| .map(|s| s.texture_sample_weighted)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| tile_properties: [features_ffi |
| .features_tile_properties_qcom |
| .map(|s| s.tile_properties)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| timeline_semaphore: [ |
| features_ffi.features_vulkan12.map(|s| s.timeline_semaphore), |
| features_ffi.features_timeline_semaphore.map(|s| s.timeline_semaphore), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| transform_feedback: [features_ffi |
| .features_transform_feedback_ext |
| .map(|s| s.transform_feedback)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| transform_feedback_preserves_provoking_vertex: [features_ffi |
| .features_provoking_vertex_ext |
| .map(|s| s.transform_feedback_preserves_provoking_vertex)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| triangle_fans: [features_ffi.features_portability_subset_khr.map(|s| s.triangle_fans)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| uniform_and_storage_buffer16_bit_access: [ |
| features_ffi.features_vulkan11.map(|s| s.uniform_and_storage_buffer16_bit_access), |
| features_ffi |
| .features_16bit_storage |
| .map(|s| s.uniform_and_storage_buffer16_bit_access), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| uniform_and_storage_buffer8_bit_access: [ |
| features_ffi.features_vulkan12.map(|s| s.uniform_and_storage_buffer8_bit_access), |
| features_ffi |
| .features_8bit_storage |
| .map(|s| s.uniform_and_storage_buffer8_bit_access), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| uniform_buffer_standard_layout: [ |
| features_ffi.features_vulkan12.map(|s| s.uniform_buffer_standard_layout), |
| features_ffi |
| .features_uniform_buffer_standard_layout |
| .map(|s| s.uniform_buffer_standard_layout), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| variable_multisample_rate: [features_ffi |
| .features_vulkan10 |
| .features |
| .variable_multisample_rate] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| variable_pointers: [ |
| features_ffi.features_vulkan11.map(|s| s.variable_pointers), |
| features_ffi.features_variable_pointers.map(|s| s.variable_pointers), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| variable_pointers_storage_buffer: [ |
| features_ffi.features_vulkan11.map(|s| s.variable_pointers_storage_buffer), |
| features_ffi.features_variable_pointers.map(|s| s.variable_pointers_storage_buffer), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| vertex_attribute_access_beyond_stride: [features_ffi |
| .features_portability_subset_khr |
| .map(|s| s.vertex_attribute_access_beyond_stride)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| vertex_attribute_instance_rate_divisor: [features_ffi |
| .features_vertex_attribute_divisor_ext |
| .map(|s| s.vertex_attribute_instance_rate_divisor)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| vertex_attribute_instance_rate_zero_divisor: [features_ffi |
| .features_vertex_attribute_divisor_ext |
| .map(|s| s.vertex_attribute_instance_rate_zero_divisor)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| vertex_input_dynamic_state: [features_ffi |
| .features_vertex_input_dynamic_state_ext |
| .map(|s| s.vertex_input_dynamic_state)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| vertex_pipeline_stores_and_atomics: [features_ffi |
| .features_vulkan10 |
| .features |
| .vertex_pipeline_stores_and_atomics] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| vulkan_memory_model: [ |
| features_ffi.features_vulkan12.map(|s| s.vulkan_memory_model), |
| features_ffi.features_vulkan_memory_model.map(|s| s.vulkan_memory_model), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| vulkan_memory_model_availability_visibility_chains: [ |
| features_ffi |
| .features_vulkan12 |
| .map(|s| s.vulkan_memory_model_availability_visibility_chains), |
| features_ffi |
| .features_vulkan_memory_model |
| .map(|s| s.vulkan_memory_model_availability_visibility_chains), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| vulkan_memory_model_device_scope: [ |
| features_ffi.features_vulkan12.map(|s| s.vulkan_memory_model_device_scope), |
| features_ffi |
| .features_vulkan_memory_model |
| .map(|s| s.vulkan_memory_model_device_scope), |
| ] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| wide_lines: [features_ffi.features_vulkan10.features.wide_lines] |
| .into_iter() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| workgroup_memory_explicit_layout: [features_ffi |
| .features_workgroup_memory_explicit_layout_khr |
| .map(|s| s.workgroup_memory_explicit_layout)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| workgroup_memory_explicit_layout16_bit_access: [features_ffi |
| .features_workgroup_memory_explicit_layout_khr |
| .map(|s| s.workgroup_memory_explicit_layout16_bit_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| workgroup_memory_explicit_layout8_bit_access: [features_ffi |
| .features_workgroup_memory_explicit_layout_khr |
| .map(|s| s.workgroup_memory_explicit_layout8_bit_access)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| workgroup_memory_explicit_layout_scalar_block_layout: [features_ffi |
| .features_workgroup_memory_explicit_layout_khr |
| .map(|s| s.workgroup_memory_explicit_layout_scalar_block_layout)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ycbcr2plane444_formats: [features_ffi |
| .features_ycbcr2_plane444_formats_ext |
| .map(|s| s.ycbcr2plane444_formats)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| ycbcr_image_arrays: [features_ffi |
| .features_ycbcr_image_arrays_ext |
| .map(|s| s.ycbcr_image_arrays)] |
| .into_iter() |
| .flatten() |
| .next() |
| .unwrap_or(0) |
| != 0, |
| _ne: crate::NonExhaustive(()), |
| } |
| } |
| } |
| impl IntoIterator for Features { |
| type Item = (&'static str, bool); |
| type IntoIter = std::array::IntoIter<Self::Item, 363usize>; |
| #[inline] |
| fn into_iter(self) -> Self::IntoIter { |
| [ |
| ("accelerationStructure", self.acceleration_structure), |
| ("accelerationStructureCaptureReplay", self.acceleration_structure_capture_replay), |
| ("accelerationStructureHostCommands", self.acceleration_structure_host_commands), |
| ("accelerationStructureIndirectBuild", self.acceleration_structure_indirect_build), |
| ("advancedBlendCoherentOperations", self.advanced_blend_coherent_operations), |
| ("alphaToOne", self.alpha_to_one), |
| ("amigoProfiling", self.amigo_profiling), |
| ("attachmentFeedbackLoopLayout", self.attachment_feedback_loop_layout), |
| ("attachmentFragmentShadingRate", self.attachment_fragment_shading_rate), |
| ("borderColorSwizzle", self.border_color_swizzle), |
| ("borderColorSwizzleFromImage", self.border_color_swizzle_from_image), |
| ("bresenhamLines", self.bresenham_lines), |
| ("bufferDeviceAddress", self.buffer_device_address), |
| ("bufferDeviceAddressCaptureReplay", self.buffer_device_address_capture_replay), |
| ("bufferDeviceAddressMultiDevice", self.buffer_device_address_multi_device), |
| ("colorWriteEnable", self.color_write_enable), |
| ("computeDerivativeGroupLinear", self.compute_derivative_group_linear), |
| ("computeDerivativeGroupQuads", self.compute_derivative_group_quads), |
| ("computeFullSubgroups", self.compute_full_subgroups), |
| ("conditionalRendering", self.conditional_rendering), |
| ("constantAlphaColorBlendFactors", self.constant_alpha_color_blend_factors), |
| ("cooperativeMatrix", self.cooperative_matrix), |
| ("cooperativeMatrixRobustBufferAccess", self.cooperative_matrix_robust_buffer_access), |
| ("cornerSampledImage", self.corner_sampled_image), |
| ("coverageReductionMode", self.coverage_reduction_mode), |
| ("customBorderColorWithoutFormat", self.custom_border_color_without_format), |
| ("customBorderColors", self.custom_border_colors), |
| ("decodeModeSharedExponent", self.decode_mode_shared_exponent), |
| ("dedicatedAllocationImageAliasing", self.dedicated_allocation_image_aliasing), |
| ("depthBiasClamp", self.depth_bias_clamp), |
| ("depthBounds", self.depth_bounds), |
| ("depthClamp", self.depth_clamp), |
| ("depthClampZeroOne", self.depth_clamp_zero_one), |
| ("depthClipControl", self.depth_clip_control), |
| ("depthClipEnable", self.depth_clip_enable), |
| ( |
| "descriptorBindingAccelerationStructureUpdateAfterBind", |
| self.descriptor_binding_acceleration_structure_update_after_bind, |
| ), |
| ( |
| "descriptorBindingInlineUniformBlockUpdateAfterBind", |
| self.descriptor_binding_inline_uniform_block_update_after_bind, |
| ), |
| ("descriptorBindingPartiallyBound", self.descriptor_binding_partially_bound), |
| ( |
| "descriptorBindingSampledImageUpdateAfterBind", |
| self.descriptor_binding_sampled_image_update_after_bind, |
| ), |
| ( |
| "descriptorBindingStorageBufferUpdateAfterBind", |
| self.descriptor_binding_storage_buffer_update_after_bind, |
| ), |
| ( |
| "descriptorBindingStorageImageUpdateAfterBind", |
| self.descriptor_binding_storage_image_update_after_bind, |
| ), |
| ( |
| "descriptorBindingStorageTexelBufferUpdateAfterBind", |
| self.descriptor_binding_storage_texel_buffer_update_after_bind, |
| ), |
| ( |
| "descriptorBindingUniformBufferUpdateAfterBind", |
| self.descriptor_binding_uniform_buffer_update_after_bind, |
| ), |
| ( |
| "descriptorBindingUniformTexelBufferUpdateAfterBind", |
| self.descriptor_binding_uniform_texel_buffer_update_after_bind, |
| ), |
| ( |
| "descriptorBindingUpdateUnusedWhilePending", |
| self.descriptor_binding_update_unused_while_pending, |
| ), |
| ( |
| "descriptorBindingVariableDescriptorCount", |
| self.descriptor_binding_variable_descriptor_count, |
| ), |
| ("descriptorBuffer", self.descriptor_buffer), |
| ("descriptorBufferCaptureReplay", self.descriptor_buffer_capture_replay), |
| ("descriptorBufferImageLayoutIgnored", self.descriptor_buffer_image_layout_ignored), |
| ("descriptorBufferPushDescriptors", self.descriptor_buffer_push_descriptors), |
| ("descriptorIndexing", self.descriptor_indexing), |
| ("descriptorSetHostMapping", self.descriptor_set_host_mapping), |
| ("deviceCoherentMemory", self.device_coherent_memory), |
| ("deviceFault", self.device_fault), |
| ("deviceFaultVendorBinary", self.device_fault_vendor_binary), |
| ("deviceGeneratedCommands", self.device_generated_commands), |
| ("deviceMemoryReport", self.device_memory_report), |
| ("diagnosticsConfig", self.diagnostics_config), |
| ("drawIndirectCount", self.draw_indirect_count), |
| ("drawIndirectFirstInstance", self.draw_indirect_first_instance), |
| ("dualSrcBlend", self.dual_src_blend), |
| ("dynamicRendering", self.dynamic_rendering), |
| ("events", self.events), |
| ("exclusiveScissor", self.exclusive_scissor), |
| ("extendedDynamicState", self.extended_dynamic_state), |
| ("extendedDynamicState2", self.extended_dynamic_state2), |
| ("extendedDynamicState2LogicOp", self.extended_dynamic_state2_logic_op), |
| ( |
| "extendedDynamicState2PatchControlPoints", |
| self.extended_dynamic_state2_patch_control_points, |
| ), |
| ( |
| "extendedDynamicState3AlphaToCoverageEnable", |
| self.extended_dynamic_state3_alpha_to_coverage_enable, |
| ), |
| ( |
| "extendedDynamicState3AlphaToOneEnable", |
| self.extended_dynamic_state3_alpha_to_one_enable, |
| ), |
| ( |
| "extendedDynamicState3ColorBlendAdvanced", |
| self.extended_dynamic_state3_color_blend_advanced, |
| ), |
| ( |
| "extendedDynamicState3ColorBlendEnable", |
| self.extended_dynamic_state3_color_blend_enable, |
| ), |
| ( |
| "extendedDynamicState3ColorBlendEquation", |
| self.extended_dynamic_state3_color_blend_equation, |
| ), |
| ("extendedDynamicState3ColorWriteMask", self.extended_dynamic_state3_color_write_mask), |
| ( |
| "extendedDynamicState3ConservativeRasterizationMode", |
| self.extended_dynamic_state3_conservative_rasterization_mode, |
| ), |
| ( |
| "extendedDynamicState3CoverageModulationMode", |
| self.extended_dynamic_state3_coverage_modulation_mode, |
| ), |
| ( |
| "extendedDynamicState3CoverageModulationTable", |
| self.extended_dynamic_state3_coverage_modulation_table, |
| ), |
| ( |
| "extendedDynamicState3CoverageModulationTableEnable", |
| self.extended_dynamic_state3_coverage_modulation_table_enable, |
| ), |
| ( |
| "extendedDynamicState3CoverageReductionMode", |
| self.extended_dynamic_state3_coverage_reduction_mode, |
| ), |
| ( |
| "extendedDynamicState3CoverageToColorEnable", |
| self.extended_dynamic_state3_coverage_to_color_enable, |
| ), |
| ( |
| "extendedDynamicState3CoverageToColorLocation", |
| self.extended_dynamic_state3_coverage_to_color_location, |
| ), |
| ( |
| "extendedDynamicState3DepthClampEnable", |
| self.extended_dynamic_state3_depth_clamp_enable, |
| ), |
| ( |
| "extendedDynamicState3DepthClipEnable", |
| self.extended_dynamic_state3_depth_clip_enable, |
| ), |
| ( |
| "extendedDynamicState3DepthClipNegativeOneToOne", |
| self.extended_dynamic_state3_depth_clip_negative_one_to_one, |
| ), |
| ( |
| "extendedDynamicState3ExtraPrimitiveOverestimationSize", |
| self.extended_dynamic_state3_extra_primitive_overestimation_size, |
| ), |
| ( |
| "extendedDynamicState3LineRasterizationMode", |
| self.extended_dynamic_state3_line_rasterization_mode, |
| ), |
| ( |
| "extendedDynamicState3LineStippleEnable", |
| self.extended_dynamic_state3_line_stipple_enable, |
| ), |
| ("extendedDynamicState3LogicOpEnable", self.extended_dynamic_state3_logic_op_enable), |
| ("extendedDynamicState3PolygonMode", self.extended_dynamic_state3_polygon_mode), |
| ( |
| "extendedDynamicState3ProvokingVertexMode", |
| self.extended_dynamic_state3_provoking_vertex_mode, |
| ), |
| ( |
| "extendedDynamicState3RasterizationSamples", |
| self.extended_dynamic_state3_rasterization_samples, |
| ), |
| ( |
| "extendedDynamicState3RasterizationStream", |
| self.extended_dynamic_state3_rasterization_stream, |
| ), |
| ( |
| "extendedDynamicState3RepresentativeFragmentTestEnable", |
| self.extended_dynamic_state3_representative_fragment_test_enable, |
| ), |
| ( |
| "extendedDynamicState3SampleLocationsEnable", |
| self.extended_dynamic_state3_sample_locations_enable, |
| ), |
| ("extendedDynamicState3SampleMask", self.extended_dynamic_state3_sample_mask), |
| ( |
| "extendedDynamicState3ShadingRateImageEnable", |
| self.extended_dynamic_state3_shading_rate_image_enable, |
| ), |
| ( |
| "extendedDynamicState3TessellationDomainOrigin", |
| self.extended_dynamic_state3_tessellation_domain_origin, |
| ), |
| ("extendedDynamicState3ViewportSwizzle", self.extended_dynamic_state3_viewport_swizzle), |
| ( |
| "extendedDynamicState3ViewportWScalingEnable", |
| self.extended_dynamic_state3_viewport_w_scaling_enable, |
| ), |
| ("externalMemoryRDMA", self.external_memory_rdma), |
| ("fillModeNonSolid", self.fill_mode_non_solid), |
| ("formatA4B4G4R4", self.format_a4b4g4r4), |
| ("formatA4R4G4B4", self.format_a4r4g4b4), |
| ("formatRgba10x6WithoutYCbCrSampler", self.format_rgba10x6_without_y_cb_cr_sampler), |
| ("fragmentDensityMap", self.fragment_density_map), |
| ("fragmentDensityMapDeferred", self.fragment_density_map_deferred), |
| ("fragmentDensityMapDynamic", self.fragment_density_map_dynamic), |
| ( |
| "fragmentDensityMapNonSubsampledImages", |
| self.fragment_density_map_non_subsampled_images, |
| ), |
| ("fragmentDensityMapOffset", self.fragment_density_map_offset), |
| ("fragmentShaderBarycentric", self.fragment_shader_barycentric), |
| ("fragmentShaderPixelInterlock", self.fragment_shader_pixel_interlock), |
| ("fragmentShaderSampleInterlock", self.fragment_shader_sample_interlock), |
| ("fragmentShaderShadingRateInterlock", self.fragment_shader_shading_rate_interlock), |
| ("fragmentShadingRateEnums", self.fragment_shading_rate_enums), |
| ("fragmentStoresAndAtomics", self.fragment_stores_and_atomics), |
| ("fullDrawIndexUint32", self.full_draw_index_uint32), |
| ("geometryShader", self.geometry_shader), |
| ("geometryStreams", self.geometry_streams), |
| ("globalPriorityQuery", self.global_priority_query), |
| ("graphicsPipelineLibrary", self.graphics_pipeline_library), |
| ("hostQueryReset", self.host_query_reset), |
| ("image2DViewOf3D", self.image2_d_view_of3_d), |
| ("imageCompressionControl", self.image_compression_control), |
| ("imageCompressionControlSwapchain", self.image_compression_control_swapchain), |
| ("imageCubeArray", self.image_cube_array), |
| ("imageFootprint", self.image_footprint), |
| ("imageView2DOn3DImage", self.image_view2_d_on3_d_image), |
| ("imageViewFormatReinterpretation", self.image_view_format_reinterpretation), |
| ("imageViewFormatSwizzle", self.image_view_format_swizzle), |
| ("imagelessFramebuffer", self.imageless_framebuffer), |
| ("independentBlend", self.independent_blend), |
| ("indexTypeUint8", self.index_type_uint8), |
| ("indirectCopy", self.indirect_copy), |
| ("inheritedConditionalRendering", self.inherited_conditional_rendering), |
| ("inheritedQueries", self.inherited_queries), |
| ("inheritedViewportScissor2D", self.inherited_viewport_scissor2_d), |
| ("inlineUniformBlock", self.inline_uniform_block), |
| ("invocationMask", self.invocation_mask), |
| ("largePoints", self.large_points), |
| ("legacyDithering", self.legacy_dithering), |
| ("linearColorAttachment", self.linear_color_attachment), |
| ("logicOp", self.logic_op), |
| ("maintenance4", self.maintenance4), |
| ("memoryDecompression", self.memory_decompression), |
| ("memoryPriority", self.memory_priority), |
| ("meshShader", self.mesh_shader), |
| ("meshShaderQueries", self.mesh_shader_queries), |
| ("micromap", self.micromap), |
| ("micromapCaptureReplay", self.micromap_capture_replay), |
| ("micromapHostCommands", self.micromap_host_commands), |
| ("minLod", self.min_lod), |
| ("multiDraw", self.multi_draw), |
| ("multiDrawIndirect", self.multi_draw_indirect), |
| ("multiViewport", self.multi_viewport), |
| ("multisampleArrayImage", self.multisample_array_image), |
| ("multisampledRenderToSingleSampled", self.multisampled_render_to_single_sampled), |
| ("multiview", self.multiview), |
| ("multiviewGeometryShader", self.multiview_geometry_shader), |
| ("multiviewMeshShader", self.multiview_mesh_shader), |
| ("multiviewPerViewViewports", self.multiview_per_view_viewports), |
| ("multiviewTessellationShader", self.multiview_tessellation_shader), |
| ("mutableComparisonSamplers", self.mutable_comparison_samplers), |
| ("mutableDescriptorType", self.mutable_descriptor_type), |
| ("noInvocationFragmentShadingRates", self.no_invocation_fragment_shading_rates), |
| ("nonSeamlessCubeMap", self.non_seamless_cube_map), |
| ("nullDescriptor", self.null_descriptor), |
| ("occlusionQueryPrecise", self.occlusion_query_precise), |
| ("opticalFlow", self.optical_flow), |
| ("pageableDeviceLocalMemory", self.pageable_device_local_memory), |
| ("performanceCounterMultipleQueryPools", self.performance_counter_multiple_query_pools), |
| ("performanceCounterQueryPools", self.performance_counter_query_pools), |
| ("pipelineCreationCacheControl", self.pipeline_creation_cache_control), |
| ("pipelineExecutableInfo", self.pipeline_executable_info), |
| ("pipelineFragmentShadingRate", self.pipeline_fragment_shading_rate), |
| ("pipelinePropertiesIdentifier", self.pipeline_properties_identifier), |
| ("pipelineProtectedAccess", self.pipeline_protected_access), |
| ("pipelineRobustness", self.pipeline_robustness), |
| ("pipelineStatisticsQuery", self.pipeline_statistics_query), |
| ("pointPolygons", self.point_polygons), |
| ("presentBarrier", self.present_barrier), |
| ("presentId", self.present_id), |
| ("presentWait", self.present_wait), |
| ("primitiveFragmentShadingRate", self.primitive_fragment_shading_rate), |
| ( |
| "primitiveFragmentShadingRateMeshShader", |
| self.primitive_fragment_shading_rate_mesh_shader, |
| ), |
| ("primitiveTopologyListRestart", self.primitive_topology_list_restart), |
| ("primitiveTopologyPatchListRestart", self.primitive_topology_patch_list_restart), |
| ("primitivesGeneratedQuery", self.primitives_generated_query), |
| ( |
| "primitivesGeneratedQueryWithNonZeroStreams", |
| self.primitives_generated_query_with_non_zero_streams, |
| ), |
| ( |
| "primitivesGeneratedQueryWithRasterizerDiscard", |
| self.primitives_generated_query_with_rasterizer_discard, |
| ), |
| ("privateData", self.private_data), |
| ("protectedMemory", self.protected_memory), |
| ("provokingVertexLast", self.provoking_vertex_last), |
| ( |
| "rasterizationOrderColorAttachmentAccess", |
| self.rasterization_order_color_attachment_access, |
| ), |
| ( |
| "rasterizationOrderDepthAttachmentAccess", |
| self.rasterization_order_depth_attachment_access, |
| ), |
| ( |
| "rasterizationOrderStencilAttachmentAccess", |
| self.rasterization_order_stencil_attachment_access, |
| ), |
| ("rayQuery", self.ray_query), |
| ("rayTracingInvocationReorder", self.ray_tracing_invocation_reorder), |
| ("rayTracingMaintenance1", self.ray_tracing_maintenance1), |
| ("rayTracingMotionBlur", self.ray_tracing_motion_blur), |
| ( |
| "rayTracingMotionBlurPipelineTraceRaysIndirect", |
| self.ray_tracing_motion_blur_pipeline_trace_rays_indirect, |
| ), |
| ("rayTracingPipeline", self.ray_tracing_pipeline), |
| ( |
| "rayTracingPipelineShaderGroupHandleCaptureReplay", |
| self.ray_tracing_pipeline_shader_group_handle_capture_replay, |
| ), |
| ( |
| "rayTracingPipelineShaderGroupHandleCaptureReplayMixed", |
| self.ray_tracing_pipeline_shader_group_handle_capture_replay_mixed, |
| ), |
| ("rayTracingPipelineTraceRaysIndirect", self.ray_tracing_pipeline_trace_rays_indirect), |
| ( |
| "rayTracingPipelineTraceRaysIndirect2", |
| self.ray_tracing_pipeline_trace_rays_indirect2, |
| ), |
| ("rayTraversalPrimitiveCulling", self.ray_traversal_primitive_culling), |
| ("rectangularLines", self.rectangular_lines), |
| ("reportAddressBinding", self.report_address_binding), |
| ("representativeFragmentTest", self.representative_fragment_test), |
| ("robustBufferAccess", self.robust_buffer_access), |
| ("robustBufferAccess2", self.robust_buffer_access2), |
| ("robustImageAccess", self.robust_image_access), |
| ("robustImageAccess2", self.robust_image_access2), |
| ("runtimeDescriptorArray", self.runtime_descriptor_array), |
| ("sampleRateShading", self.sample_rate_shading), |
| ("sampler2DViewOf3D", self.sampler2_d_view_of3_d), |
| ("samplerAnisotropy", self.sampler_anisotropy), |
| ("samplerFilterMinmax", self.sampler_filter_minmax), |
| ("samplerMipLodBias", self.sampler_mip_lod_bias), |
| ("samplerMirrorClampToEdge", self.sampler_mirror_clamp_to_edge), |
| ("samplerYcbcrConversion", self.sampler_ycbcr_conversion), |
| ("scalarBlockLayout", self.scalar_block_layout), |
| ("separateDepthStencilLayouts", self.separate_depth_stencil_layouts), |
| ("separateStencilMaskRef", self.separate_stencil_mask_ref), |
| ("shaderBufferFloat16AtomicAdd", self.shader_buffer_float16_atomic_add), |
| ("shaderBufferFloat16AtomicMinMax", self.shader_buffer_float16_atomic_min_max), |
| ("shaderBufferFloat16Atomics", self.shader_buffer_float16_atomics), |
| ("shaderBufferFloat32AtomicAdd", self.shader_buffer_float32_atomic_add), |
| ("shaderBufferFloat32AtomicMinMax", self.shader_buffer_float32_atomic_min_max), |
| ("shaderBufferFloat32Atomics", self.shader_buffer_float32_atomics), |
| ("shaderBufferFloat64AtomicAdd", self.shader_buffer_float64_atomic_add), |
| ("shaderBufferFloat64AtomicMinMax", self.shader_buffer_float64_atomic_min_max), |
| ("shaderBufferFloat64Atomics", self.shader_buffer_float64_atomics), |
| ("shaderBufferInt64Atomics", self.shader_buffer_int64_atomics), |
| ("shaderClipDistance", self.shader_clip_distance), |
| ("shaderCoreBuiltins", self.shader_core_builtins), |
| ("shaderCullDistance", self.shader_cull_distance), |
| ("shaderDemoteToHelperInvocation", self.shader_demote_to_helper_invocation), |
| ("shaderDeviceClock", self.shader_device_clock), |
| ("shaderDrawParameters", self.shader_draw_parameters), |
| ("shaderEarlyAndLateFragmentTests", self.shader_early_and_late_fragment_tests), |
| ("shaderFloat16", self.shader_float16), |
| ("shaderFloat64", self.shader_float64), |
| ("shaderImageFloat32AtomicAdd", self.shader_image_float32_atomic_add), |
| ("shaderImageFloat32AtomicMinMax", self.shader_image_float32_atomic_min_max), |
| ("shaderImageFloat32Atomics", self.shader_image_float32_atomics), |
| ("shaderImageGatherExtended", self.shader_image_gather_extended), |
| ("shaderImageInt64Atomics", self.shader_image_int64_atomics), |
| ( |
| "shaderInputAttachmentArrayDynamicIndexing", |
| self.shader_input_attachment_array_dynamic_indexing, |
| ), |
| ( |
| "shaderInputAttachmentArrayNonUniformIndexing", |
| self.shader_input_attachment_array_non_uniform_indexing, |
| ), |
| ("shaderInt16", self.shader_int16), |
| ("shaderInt64", self.shader_int64), |
| ("shaderInt8", self.shader_int8), |
| ("shaderIntegerDotProduct", self.shader_integer_dot_product), |
| ("shaderIntegerFunctions2", self.shader_integer_functions2), |
| ("shaderModuleIdentifier", self.shader_module_identifier), |
| ("shaderOutputLayer", self.shader_output_layer), |
| ("shaderOutputViewportIndex", self.shader_output_viewport_index), |
| ("shaderResourceMinLod", self.shader_resource_min_lod), |
| ("shaderResourceResidency", self.shader_resource_residency), |
| ( |
| "shaderSampleRateInterpolationFunctions", |
| self.shader_sample_rate_interpolation_functions, |
| ), |
| ( |
| "shaderSampledImageArrayDynamicIndexing", |
| self.shader_sampled_image_array_dynamic_indexing, |
| ), |
| ( |
| "shaderSampledImageArrayNonUniformIndexing", |
| self.shader_sampled_image_array_non_uniform_indexing, |
| ), |
| ("shaderSharedFloat16AtomicAdd", self.shader_shared_float16_atomic_add), |
| ("shaderSharedFloat16AtomicMinMax", self.shader_shared_float16_atomic_min_max), |
| ("shaderSharedFloat16Atomics", self.shader_shared_float16_atomics), |
| ("shaderSharedFloat32AtomicAdd", self.shader_shared_float32_atomic_add), |
| ("shaderSharedFloat32AtomicMinMax", self.shader_shared_float32_atomic_min_max), |
| ("shaderSharedFloat32Atomics", self.shader_shared_float32_atomics), |
| ("shaderSharedFloat64AtomicAdd", self.shader_shared_float64_atomic_add), |
| ("shaderSharedFloat64AtomicMinMax", self.shader_shared_float64_atomic_min_max), |
| ("shaderSharedFloat64Atomics", self.shader_shared_float64_atomics), |
| ("shaderSharedInt64Atomics", self.shader_shared_int64_atomics), |
| ("shaderSMBuiltins", self.shader_sm_builtins), |
| ( |
| "shaderStorageBufferArrayDynamicIndexing", |
| self.shader_storage_buffer_array_dynamic_indexing, |
| ), |
| ( |
| "shaderStorageBufferArrayNonUniformIndexing", |
| self.shader_storage_buffer_array_non_uniform_indexing, |
| ), |
| ( |
| "shaderStorageImageArrayDynamicIndexing", |
| self.shader_storage_image_array_dynamic_indexing, |
| ), |
| ( |
| "shaderStorageImageArrayNonUniformIndexing", |
| self.shader_storage_image_array_non_uniform_indexing, |
| ), |
| ("shaderStorageImageExtendedFormats", self.shader_storage_image_extended_formats), |
| ("shaderStorageImageMultisample", self.shader_storage_image_multisample), |
| ("shaderStorageImageReadWithoutFormat", self.shader_storage_image_read_without_format), |
| ( |
| "shaderStorageImageWriteWithoutFormat", |
| self.shader_storage_image_write_without_format, |
| ), |
| ( |
| "shaderStorageTexelBufferArrayDynamicIndexing", |
| self.shader_storage_texel_buffer_array_dynamic_indexing, |
| ), |
| ( |
| "shaderStorageTexelBufferArrayNonUniformIndexing", |
| self.shader_storage_texel_buffer_array_non_uniform_indexing, |
| ), |
| ("shaderSubgroupClock", self.shader_subgroup_clock), |
| ("shaderSubgroupExtendedTypes", self.shader_subgroup_extended_types), |
| ("shaderSubgroupUniformControlFlow", self.shader_subgroup_uniform_control_flow), |
| ("shaderTerminateInvocation", self.shader_terminate_invocation), |
| ( |
| "shaderTessellationAndGeometryPointSize", |
| self.shader_tessellation_and_geometry_point_size, |
| ), |
| ( |
| "shaderUniformBufferArrayDynamicIndexing", |
| self.shader_uniform_buffer_array_dynamic_indexing, |
| ), |
| ( |
| "shaderUniformBufferArrayNonUniformIndexing", |
| self.shader_uniform_buffer_array_non_uniform_indexing, |
| ), |
| ( |
| "shaderUniformTexelBufferArrayDynamicIndexing", |
| self.shader_uniform_texel_buffer_array_dynamic_indexing, |
| ), |
| ( |
| "shaderUniformTexelBufferArrayNonUniformIndexing", |
| self.shader_uniform_texel_buffer_array_non_uniform_indexing, |
| ), |
| ("shaderZeroInitializeWorkgroupMemory", self.shader_zero_initialize_workgroup_memory), |
| ("shadingRateCoarseSampleOrder", self.shading_rate_coarse_sample_order), |
| ("shadingRateImage", self.shading_rate_image), |
| ("smoothLines", self.smooth_lines), |
| ("sparseBinding", self.sparse_binding), |
| ("sparseImageFloat32AtomicAdd", self.sparse_image_float32_atomic_add), |
| ("sparseImageFloat32AtomicMinMax", self.sparse_image_float32_atomic_min_max), |
| ("sparseImageFloat32Atomics", self.sparse_image_float32_atomics), |
| ("sparseImageInt64Atomics", self.sparse_image_int64_atomics), |
| ("sparseResidency16Samples", self.sparse_residency16_samples), |
| ("sparseResidency2Samples", self.sparse_residency2_samples), |
| ("sparseResidency4Samples", self.sparse_residency4_samples), |
| ("sparseResidency8Samples", self.sparse_residency8_samples), |
| ("sparseResidencyAliased", self.sparse_residency_aliased), |
| ("sparseResidencyBuffer", self.sparse_residency_buffer), |
| ("sparseResidencyImage2D", self.sparse_residency_image2_d), |
| ("sparseResidencyImage3D", self.sparse_residency_image3_d), |
| ("stippledBresenhamLines", self.stippled_bresenham_lines), |
| ("stippledRectangularLines", self.stippled_rectangular_lines), |
| ("stippledSmoothLines", self.stippled_smooth_lines), |
| ("storageBuffer16BitAccess", self.storage_buffer16_bit_access), |
| ("storageBuffer8BitAccess", self.storage_buffer8_bit_access), |
| ("storageInputOutput16", self.storage_input_output16), |
| ("storagePushConstant16", self.storage_push_constant16), |
| ("storagePushConstant8", self.storage_push_constant8), |
| ("subgroupBroadcastDynamicId", self.subgroup_broadcast_dynamic_id), |
| ("subgroupSizeControl", self.subgroup_size_control), |
| ("subpassMergeFeedback", self.subpass_merge_feedback), |
| ("subpassShading", self.subpass_shading), |
| ("supersampleFragmentShadingRates", self.supersample_fragment_shading_rates), |
| ("swapchainMaintenance1", self.swapchain_maintenance1), |
| ("synchronization2", self.synchronization2), |
| ("taskShader", self.task_shader), |
| ("tessellationIsolines", self.tessellation_isolines), |
| ("tessellationPointMode", self.tessellation_point_mode), |
| ("tessellationShader", self.tessellation_shader), |
| ("texelBufferAlignment", self.texel_buffer_alignment), |
| ("textureBlockMatch", self.texture_block_match), |
| ("textureBoxFilter", self.texture_box_filter), |
| ("textureCompressionASTC_HDR", self.texture_compression_astc_hdr), |
| ("textureCompressionASTC_LDR", self.texture_compression_astc_ldr), |
| ("textureCompressionBC", self.texture_compression_bc), |
| ("textureCompressionETC2", self.texture_compression_etc2), |
| ("textureSampleWeighted", self.texture_sample_weighted), |
| ("tileProperties", self.tile_properties), |
| ("timelineSemaphore", self.timeline_semaphore), |
| ("transformFeedback", self.transform_feedback), |
| ( |
| "transformFeedbackPreservesProvokingVertex", |
| self.transform_feedback_preserves_provoking_vertex, |
| ), |
| ("triangleFans", self.triangle_fans), |
| ("uniformAndStorageBuffer16BitAccess", self.uniform_and_storage_buffer16_bit_access), |
| ("uniformAndStorageBuffer8BitAccess", self.uniform_and_storage_buffer8_bit_access), |
| ("uniformBufferStandardLayout", self.uniform_buffer_standard_layout), |
| ("variableMultisampleRate", self.variable_multisample_rate), |
| ("variablePointers", self.variable_pointers), |
| ("variablePointersStorageBuffer", self.variable_pointers_storage_buffer), |
| ("vertexAttributeAccessBeyondStride", self.vertex_attribute_access_beyond_stride), |
| ("vertexAttributeInstanceRateDivisor", self.vertex_attribute_instance_rate_divisor), |
| ( |
| "vertexAttributeInstanceRateZeroDivisor", |
| self.vertex_attribute_instance_rate_zero_divisor, |
| ), |
| ("vertexInputDynamicState", self.vertex_input_dynamic_state), |
| ("vertexPipelineStoresAndAtomics", self.vertex_pipeline_stores_and_atomics), |
| ("vulkanMemoryModel", self.vulkan_memory_model), |
| ( |
| "vulkanMemoryModelAvailabilityVisibilityChains", |
| self.vulkan_memory_model_availability_visibility_chains, |
| ), |
| ("vulkanMemoryModelDeviceScope", self.vulkan_memory_model_device_scope), |
| ("wideLines", self.wide_lines), |
| ("workgroupMemoryExplicitLayout", self.workgroup_memory_explicit_layout), |
| ( |
| "workgroupMemoryExplicitLayout16BitAccess", |
| self.workgroup_memory_explicit_layout16_bit_access, |
| ), |
| ( |
| "workgroupMemoryExplicitLayout8BitAccess", |
| self.workgroup_memory_explicit_layout8_bit_access, |
| ), |
| ( |
| "workgroupMemoryExplicitLayoutScalarBlockLayout", |
| self.workgroup_memory_explicit_layout_scalar_block_layout, |
| ), |
| ("ycbcr2plane444Formats", self.ycbcr2plane444_formats), |
| ("ycbcrImageArrays", self.ycbcr_image_arrays), |
| ] |
| .into_iter() |
| } |
| } |
| #[derive(Default)] |
| pub(crate) struct FeaturesFfi { |
| features_vulkan10: ash::vk::PhysicalDeviceFeatures2KHR, |
| features_vulkan11: Option<ash::vk::PhysicalDeviceVulkan11Features>, |
| features_vulkan12: Option<ash::vk::PhysicalDeviceVulkan12Features>, |
| features_vulkan13: Option<ash::vk::PhysicalDeviceVulkan13Features>, |
| features_16bit_storage: Option<ash::vk::PhysicalDevice16BitStorageFeatures>, |
| features_multiview: Option<ash::vk::PhysicalDeviceMultiviewFeatures>, |
| features_protected_memory: Option<ash::vk::PhysicalDeviceProtectedMemoryFeatures>, |
| features_sampler_ycbcr_conversion: |
| Option<ash::vk::PhysicalDeviceSamplerYcbcrConversionFeatures>, |
| features_shader_draw_parameters: Option<ash::vk::PhysicalDeviceShaderDrawParametersFeatures>, |
| features_variable_pointers: Option<ash::vk::PhysicalDeviceVariablePointersFeatures>, |
| features_8bit_storage: Option<ash::vk::PhysicalDevice8BitStorageFeatures>, |
| features_buffer_device_address: Option<ash::vk::PhysicalDeviceBufferDeviceAddressFeatures>, |
| features_descriptor_indexing: Option<ash::vk::PhysicalDeviceDescriptorIndexingFeatures>, |
| features_host_query_reset: Option<ash::vk::PhysicalDeviceHostQueryResetFeatures>, |
| features_imageless_framebuffer: Option<ash::vk::PhysicalDeviceImagelessFramebufferFeatures>, |
| features_scalar_block_layout: Option<ash::vk::PhysicalDeviceScalarBlockLayoutFeatures>, |
| features_separate_depth_stencil_layouts: |
| Option<ash::vk::PhysicalDeviceSeparateDepthStencilLayoutsFeatures>, |
| features_shader_atomic_int64: Option<ash::vk::PhysicalDeviceShaderAtomicInt64Features>, |
| features_shader_float16_int8: Option<ash::vk::PhysicalDeviceShaderFloat16Int8Features>, |
| features_shader_subgroup_extended_types: |
| Option<ash::vk::PhysicalDeviceShaderSubgroupExtendedTypesFeatures>, |
| features_timeline_semaphore: Option<ash::vk::PhysicalDeviceTimelineSemaphoreFeatures>, |
| features_uniform_buffer_standard_layout: |
| Option<ash::vk::PhysicalDeviceUniformBufferStandardLayoutFeatures>, |
| features_vulkan_memory_model: Option<ash::vk::PhysicalDeviceVulkanMemoryModelFeatures>, |
| features_dynamic_rendering: Option<ash::vk::PhysicalDeviceDynamicRenderingFeatures>, |
| features_image_robustness: Option<ash::vk::PhysicalDeviceImageRobustnessFeatures>, |
| features_inline_uniform_block: Option<ash::vk::PhysicalDeviceInlineUniformBlockFeatures>, |
| features_maintenance4: Option<ash::vk::PhysicalDeviceMaintenance4Features>, |
| features_pipeline_creation_cache_control: |
| Option<ash::vk::PhysicalDevicePipelineCreationCacheControlFeatures>, |
| features_private_data: Option<ash::vk::PhysicalDevicePrivateDataFeatures>, |
| features_shader_demote_to_helper_invocation: |
| Option<ash::vk::PhysicalDeviceShaderDemoteToHelperInvocationFeatures>, |
| features_shader_integer_dot_product: |
| Option<ash::vk::PhysicalDeviceShaderIntegerDotProductFeatures>, |
| features_shader_terminate_invocation: |
| Option<ash::vk::PhysicalDeviceShaderTerminateInvocationFeatures>, |
| features_subgroup_size_control: Option<ash::vk::PhysicalDeviceSubgroupSizeControlFeatures>, |
| features_synchronization2: Option<ash::vk::PhysicalDeviceSynchronization2Features>, |
| features_texture_compression_astchdr: |
| Option<ash::vk::PhysicalDeviceTextureCompressionASTCHDRFeatures>, |
| features_zero_initialize_workgroup_memory: |
| Option<ash::vk::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>, |
| features_acceleration_structure_khr: |
| Option<ash::vk::PhysicalDeviceAccelerationStructureFeaturesKHR>, |
| features_fragment_shader_barycentric_khr: |
| Option<ash::vk::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR>, |
| features_fragment_shading_rate_khr: |
| Option<ash::vk::PhysicalDeviceFragmentShadingRateFeaturesKHR>, |
| features_global_priority_query_khr: |
| Option<ash::vk::PhysicalDeviceGlobalPriorityQueryFeaturesKHR>, |
| features_performance_query_khr: Option<ash::vk::PhysicalDevicePerformanceQueryFeaturesKHR>, |
| features_pipeline_executable_properties_khr: |
| Option<ash::vk::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR>, |
| features_portability_subset_khr: Option<ash::vk::PhysicalDevicePortabilitySubsetFeaturesKHR>, |
| features_present_id_khr: Option<ash::vk::PhysicalDevicePresentIdFeaturesKHR>, |
| features_present_wait_khr: Option<ash::vk::PhysicalDevicePresentWaitFeaturesKHR>, |
| features_ray_query_khr: Option<ash::vk::PhysicalDeviceRayQueryFeaturesKHR>, |
| features_ray_tracing_maintenance1_khr: |
| Option<ash::vk::PhysicalDeviceRayTracingMaintenance1FeaturesKHR>, |
| features_ray_tracing_pipeline_khr: Option<ash::vk::PhysicalDeviceRayTracingPipelineFeaturesKHR>, |
| features_shader_clock_khr: Option<ash::vk::PhysicalDeviceShaderClockFeaturesKHR>, |
| features_shader_subgroup_uniform_control_flow_khr: |
| Option<ash::vk::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>, |
| features_workgroup_memory_explicit_layout_khr: |
| Option<ash::vk::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>, |
| features_4444formats_ext: Option<ash::vk::PhysicalDevice4444FormatsFeaturesEXT>, |
| features_astc_decode_ext: Option<ash::vk::PhysicalDeviceASTCDecodeFeaturesEXT>, |
| features_address_binding_report_ext: |
| Option<ash::vk::PhysicalDeviceAddressBindingReportFeaturesEXT>, |
| features_attachment_feedback_loop_layout_ext: |
| Option<ash::vk::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>, |
| features_blend_operation_advanced_ext: |
| Option<ash::vk::PhysicalDeviceBlendOperationAdvancedFeaturesEXT>, |
| features_border_color_swizzle_ext: Option<ash::vk::PhysicalDeviceBorderColorSwizzleFeaturesEXT>, |
| features_buffer_device_address_ext: |
| Option<ash::vk::PhysicalDeviceBufferDeviceAddressFeaturesEXT>, |
| features_color_write_enable_ext: Option<ash::vk::PhysicalDeviceColorWriteEnableFeaturesEXT>, |
| features_conditional_rendering_ext: |
| Option<ash::vk::PhysicalDeviceConditionalRenderingFeaturesEXT>, |
| features_custom_border_color_ext: Option<ash::vk::PhysicalDeviceCustomBorderColorFeaturesEXT>, |
| features_depth_clamp_zero_one_ext: Option<ash::vk::PhysicalDeviceDepthClampZeroOneFeaturesEXT>, |
| features_depth_clip_control_ext: Option<ash::vk::PhysicalDeviceDepthClipControlFeaturesEXT>, |
| features_depth_clip_enable_ext: Option<ash::vk::PhysicalDeviceDepthClipEnableFeaturesEXT>, |
| features_descriptor_buffer_ext: Option<ash::vk::PhysicalDeviceDescriptorBufferFeaturesEXT>, |
| features_device_memory_report_ext: Option<ash::vk::PhysicalDeviceDeviceMemoryReportFeaturesEXT>, |
| features_extended_dynamic_state2_ext: |
| Option<ash::vk::PhysicalDeviceExtendedDynamicState2FeaturesEXT>, |
| features_extended_dynamic_state3_ext: |
| Option<ash::vk::PhysicalDeviceExtendedDynamicState3FeaturesEXT>, |
| features_extended_dynamic_state_ext: |
| Option<ash::vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT>, |
| features_fault_ext: Option<ash::vk::PhysicalDeviceFaultFeaturesEXT>, |
| features_fragment_density_map2_ext: |
| Option<ash::vk::PhysicalDeviceFragmentDensityMap2FeaturesEXT>, |
| features_fragment_density_map_ext: Option<ash::vk::PhysicalDeviceFragmentDensityMapFeaturesEXT>, |
| features_fragment_shader_interlock_ext: |
| Option<ash::vk::PhysicalDeviceFragmentShaderInterlockFeaturesEXT>, |
| features_graphics_pipeline_library_ext: |
| Option<ash::vk::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>, |
| features_image2_d_view_of3_d_ext: Option<ash::vk::PhysicalDeviceImage2DViewOf3DFeaturesEXT>, |
| features_image_compression_control_ext: |
| Option<ash::vk::PhysicalDeviceImageCompressionControlFeaturesEXT>, |
| features_image_compression_control_swapchain_ext: |
| Option<ash::vk::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>, |
| features_image_view_min_lod_ext: Option<ash::vk::PhysicalDeviceImageViewMinLodFeaturesEXT>, |
| features_index_type_uint8_ext: Option<ash::vk::PhysicalDeviceIndexTypeUint8FeaturesEXT>, |
| features_legacy_dithering_ext: Option<ash::vk::PhysicalDeviceLegacyDitheringFeaturesEXT>, |
| features_line_rasterization_ext: Option<ash::vk::PhysicalDeviceLineRasterizationFeaturesEXT>, |
| features_memory_priority_ext: Option<ash::vk::PhysicalDeviceMemoryPriorityFeaturesEXT>, |
| features_mesh_shader_ext: Option<ash::vk::PhysicalDeviceMeshShaderFeaturesEXT>, |
| features_multi_draw_ext: Option<ash::vk::PhysicalDeviceMultiDrawFeaturesEXT>, |
| features_multisampled_render_to_single_sampled_ext: |
| Option<ash::vk::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT>, |
| features_mutable_descriptor_type_ext: |
| Option<ash::vk::PhysicalDeviceMutableDescriptorTypeFeaturesEXT>, |
| features_non_seamless_cube_map_ext: |
| Option<ash::vk::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT>, |
| features_opacity_micromap_ext: Option<ash::vk::PhysicalDeviceOpacityMicromapFeaturesEXT>, |
| features_pageable_device_local_memory_ext: |
| Option<ash::vk::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>, |
| features_pipeline_properties_ext: Option<ash::vk::PhysicalDevicePipelinePropertiesFeaturesEXT>, |
| features_pipeline_protected_access_ext: |
| Option<ash::vk::PhysicalDevicePipelineProtectedAccessFeaturesEXT>, |
| features_pipeline_robustness_ext: Option<ash::vk::PhysicalDevicePipelineRobustnessFeaturesEXT>, |
| features_primitive_topology_list_restart_ext: |
| Option<ash::vk::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>, |
| features_primitives_generated_query_ext: |
| Option<ash::vk::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>, |
| features_provoking_vertex_ext: Option<ash::vk::PhysicalDeviceProvokingVertexFeaturesEXT>, |
| features_rgba10x6_formats_ext: Option<ash::vk::PhysicalDeviceRGBA10X6FormatsFeaturesEXT>, |
| features_rasterization_order_attachment_access_ext: |
| Option<ash::vk::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT>, |
| features_robustness2_ext: Option<ash::vk::PhysicalDeviceRobustness2FeaturesEXT>, |
| features_shader_atomic_float2_ext: Option<ash::vk::PhysicalDeviceShaderAtomicFloat2FeaturesEXT>, |
| features_shader_atomic_float_ext: Option<ash::vk::PhysicalDeviceShaderAtomicFloatFeaturesEXT>, |
| features_shader_image_atomic_int64_ext: |
| Option<ash::vk::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT>, |
| features_shader_module_identifier_ext: |
| Option<ash::vk::PhysicalDeviceShaderModuleIdentifierFeaturesEXT>, |
| features_subpass_merge_feedback_ext: |
| Option<ash::vk::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT>, |
| features_swapchain_maintenance1_ext: |
| Option<ash::vk::PhysicalDeviceSwapchainMaintenance1FeaturesEXT>, |
| features_texel_buffer_alignment_ext: |
| Option<ash::vk::PhysicalDeviceTexelBufferAlignmentFeaturesEXT>, |
| features_transform_feedback_ext: Option<ash::vk::PhysicalDeviceTransformFeedbackFeaturesEXT>, |
| features_vertex_attribute_divisor_ext: |
| Option<ash::vk::PhysicalDeviceVertexAttributeDivisorFeaturesEXT>, |
| features_vertex_input_dynamic_state_ext: |
| Option<ash::vk::PhysicalDeviceVertexInputDynamicStateFeaturesEXT>, |
| features_ycbcr2_plane444_formats_ext: |
| Option<ash::vk::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>, |
| features_ycbcr_image_arrays_ext: Option<ash::vk::PhysicalDeviceYcbcrImageArraysFeaturesEXT>, |
| features_amigo_profiling_sec: Option<ash::vk::PhysicalDeviceAmigoProfilingFeaturesSEC>, |
| features_coherent_memory_amd: Option<ash::vk::PhysicalDeviceCoherentMemoryFeaturesAMD>, |
| features_compute_shader_derivatives_nv: |
| Option<ash::vk::PhysicalDeviceComputeShaderDerivativesFeaturesNV>, |
| features_cooperative_matrix_nv: Option<ash::vk::PhysicalDeviceCooperativeMatrixFeaturesNV>, |
| features_copy_memory_indirect_nv: Option<ash::vk::PhysicalDeviceCopyMemoryIndirectFeaturesNV>, |
| features_corner_sampled_image_nv: Option<ash::vk::PhysicalDeviceCornerSampledImageFeaturesNV>, |
| features_coverage_reduction_mode_nv: |
| Option<ash::vk::PhysicalDeviceCoverageReductionModeFeaturesNV>, |
| features_dedicated_allocation_image_aliasing_nv: |
| Option<ash::vk::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>, |
| features_descriptor_set_host_mapping_valve: |
| Option<ash::vk::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>, |
| features_device_generated_commands_nv: |
| Option<ash::vk::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV>, |
| features_diagnostics_config_nv: Option<ash::vk::PhysicalDeviceDiagnosticsConfigFeaturesNV>, |
| features_exclusive_scissor_nv: Option<ash::vk::PhysicalDeviceExclusiveScissorFeaturesNV>, |
| features_external_memory_rdma_nv: Option<ash::vk::PhysicalDeviceExternalMemoryRDMAFeaturesNV>, |
| features_fragment_density_map_offset_qcom: |
| Option<ash::vk::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>, |
| features_fragment_shading_rate_enums_nv: |
| Option<ash::vk::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV>, |
| features_image_processing_qcom: Option<ash::vk::PhysicalDeviceImageProcessingFeaturesQCOM>, |
| features_inherited_viewport_scissor_nv: |
| Option<ash::vk::PhysicalDeviceInheritedViewportScissorFeaturesNV>, |
| features_invocation_mask_huawei: Option<ash::vk::PhysicalDeviceInvocationMaskFeaturesHUAWEI>, |
| features_linear_color_attachment_nv: |
| Option<ash::vk::PhysicalDeviceLinearColorAttachmentFeaturesNV>, |
| features_memory_decompression_nv: Option<ash::vk::PhysicalDeviceMemoryDecompressionFeaturesNV>, |
| features_mesh_shader_nv: Option<ash::vk::PhysicalDeviceMeshShaderFeaturesNV>, |
| features_multiview_per_view_viewports_qcom: |
| Option<ash::vk::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM>, |
| features_optical_flow_nv: Option<ash::vk::PhysicalDeviceOpticalFlowFeaturesNV>, |
| features_present_barrier_nv: Option<ash::vk::PhysicalDevicePresentBarrierFeaturesNV>, |
| features_ray_tracing_invocation_reorder_nv: |
| Option<ash::vk::PhysicalDeviceRayTracingInvocationReorderFeaturesNV>, |
| features_ray_tracing_motion_blur_nv: |
| Option<ash::vk::PhysicalDeviceRayTracingMotionBlurFeaturesNV>, |
| features_representative_fragment_test_nv: |
| Option<ash::vk::PhysicalDeviceRepresentativeFragmentTestFeaturesNV>, |
| features_shader_core_builtins_arm: Option<ash::vk::PhysicalDeviceShaderCoreBuiltinsFeaturesARM>, |
| features_shader_early_and_late_fragment_tests_amd: |
| Option<ash::vk::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD>, |
| features_shader_image_footprint_nv: |
| Option<ash::vk::PhysicalDeviceShaderImageFootprintFeaturesNV>, |
| features_shader_integer_functions2_intel: |
| Option<ash::vk::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>, |
| features_shader_sm_builtins_nv: Option<ash::vk::PhysicalDeviceShaderSMBuiltinsFeaturesNV>, |
| features_shading_rate_image_nv: Option<ash::vk::PhysicalDeviceShadingRateImageFeaturesNV>, |
| features_subpass_shading_huawei: Option<ash::vk::PhysicalDeviceSubpassShadingFeaturesHUAWEI>, |
| features_tile_properties_qcom: Option<ash::vk::PhysicalDeviceTilePropertiesFeaturesQCOM>, |
| } |
| impl FeaturesFfi { |
| pub(crate) fn make_chain( |
| &mut self, |
| api_version: crate::Version, |
| device_extensions: &crate::device::DeviceExtensions, |
| _instance_extensions: &crate::instance::InstanceExtensions, |
| ) { |
| self.features_vulkan10 = Default::default(); |
| let head = &mut self.features_vulkan10; |
| if [api_version >= crate::Version::V1_2].into_iter().any(|x| x) && [].into_iter().all(|x| x) |
| { |
| self.features_vulkan11 = Some(Default::default()); |
| let member = self.features_vulkan11.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_2].into_iter().any(|x| x) && [].into_iter().all(|x| x) |
| { |
| self.features_vulkan12 = Some(Default::default()); |
| let member = self.features_vulkan12.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_3].into_iter().any(|x| x) && [].into_iter().all(|x| x) |
| { |
| self.features_vulkan13 = Some(Default::default()); |
| let member = self.features_vulkan13.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_1, device_extensions.khr_16bit_storage] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan11.is_none()].into_iter().all(|x| x) |
| { |
| self.features_16bit_storage = Some(Default::default()); |
| let member = self.features_16bit_storage.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_1, device_extensions.khr_multiview] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan11.is_none()].into_iter().all(|x| x) |
| { |
| self.features_multiview = Some(Default::default()); |
| let member = self.features_multiview.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_1].into_iter().any(|x| x) |
| && [self.features_vulkan11.is_none()].into_iter().all(|x| x) |
| { |
| self.features_protected_memory = Some(Default::default()); |
| let member = self.features_protected_memory.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_1, device_extensions.khr_sampler_ycbcr_conversion] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan11.is_none()].into_iter().all(|x| x) |
| { |
| self.features_sampler_ycbcr_conversion = Some(Default::default()); |
| let member = self.features_sampler_ycbcr_conversion.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_1].into_iter().any(|x| x) |
| && [self.features_vulkan11.is_none()].into_iter().all(|x| x) |
| { |
| self.features_shader_draw_parameters = Some(Default::default()); |
| let member = self.features_shader_draw_parameters.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_1, device_extensions.khr_variable_pointers] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan11.is_none()].into_iter().all(|x| x) |
| { |
| self.features_variable_pointers = Some(Default::default()); |
| let member = self.features_variable_pointers.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_2, device_extensions.khr_8bit_storage] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_8bit_storage = Some(Default::default()); |
| let member = self.features_8bit_storage.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_2, device_extensions.khr_buffer_device_address] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_buffer_device_address = Some(Default::default()); |
| let member = self.features_buffer_device_address.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_2, device_extensions.ext_descriptor_indexing] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_descriptor_indexing = Some(Default::default()); |
| let member = self.features_descriptor_indexing.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_2, device_extensions.ext_host_query_reset] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_host_query_reset = Some(Default::default()); |
| let member = self.features_host_query_reset.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_2, device_extensions.khr_imageless_framebuffer] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_imageless_framebuffer = Some(Default::default()); |
| let member = self.features_imageless_framebuffer.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_2, device_extensions.ext_scalar_block_layout] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_scalar_block_layout = Some(Default::default()); |
| let member = self.features_scalar_block_layout.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [ |
| api_version >= crate::Version::V1_2, |
| device_extensions.khr_separate_depth_stencil_layouts, |
| ] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_separate_depth_stencil_layouts = Some(Default::default()); |
| let member = self.features_separate_depth_stencil_layouts.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_2, device_extensions.khr_shader_atomic_int64] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_shader_atomic_int64 = Some(Default::default()); |
| let member = self.features_shader_atomic_int64.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_2, device_extensions.khr_shader_float16_int8] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_shader_float16_int8 = Some(Default::default()); |
| let member = self.features_shader_float16_int8.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [ |
| api_version >= crate::Version::V1_2, |
| device_extensions.khr_shader_subgroup_extended_types, |
| ] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_shader_subgroup_extended_types = Some(Default::default()); |
| let member = self.features_shader_subgroup_extended_types.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_2, device_extensions.khr_timeline_semaphore] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_timeline_semaphore = Some(Default::default()); |
| let member = self.features_timeline_semaphore.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [ |
| api_version >= crate::Version::V1_2, |
| device_extensions.khr_uniform_buffer_standard_layout, |
| ] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_uniform_buffer_standard_layout = Some(Default::default()); |
| let member = self.features_uniform_buffer_standard_layout.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_2, device_extensions.khr_vulkan_memory_model] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan12.is_none()].into_iter().all(|x| x) |
| { |
| self.features_vulkan_memory_model = Some(Default::default()); |
| let member = self.features_vulkan_memory_model.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_3, device_extensions.khr_dynamic_rendering] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_dynamic_rendering = Some(Default::default()); |
| let member = self.features_dynamic_rendering.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_3, device_extensions.ext_image_robustness] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_image_robustness = Some(Default::default()); |
| let member = self.features_image_robustness.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_3, device_extensions.ext_inline_uniform_block] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_inline_uniform_block = Some(Default::default()); |
| let member = self.features_inline_uniform_block.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_3, device_extensions.khr_maintenance4] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_maintenance4 = Some(Default::default()); |
| let member = self.features_maintenance4.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [ |
| api_version >= crate::Version::V1_3, |
| device_extensions.ext_pipeline_creation_cache_control, |
| ] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_pipeline_creation_cache_control = Some(Default::default()); |
| let member = self.features_pipeline_creation_cache_control.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_3, device_extensions.ext_private_data] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_private_data = Some(Default::default()); |
| let member = self.features_private_data.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [ |
| api_version >= crate::Version::V1_3, |
| device_extensions.ext_shader_demote_to_helper_invocation, |
| ] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_shader_demote_to_helper_invocation = Some(Default::default()); |
| let member = self.features_shader_demote_to_helper_invocation.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_3, device_extensions.khr_shader_integer_dot_product] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_shader_integer_dot_product = Some(Default::default()); |
| let member = self.features_shader_integer_dot_product.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_3, device_extensions.khr_shader_terminate_invocation] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_shader_terminate_invocation = Some(Default::default()); |
| let member = self.features_shader_terminate_invocation.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_3, device_extensions.ext_subgroup_size_control] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_subgroup_size_control = Some(Default::default()); |
| let member = self.features_subgroup_size_control.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_3, device_extensions.khr_synchronization2] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_synchronization2 = Some(Default::default()); |
| let member = self.features_synchronization2.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [api_version >= crate::Version::V1_3, device_extensions.ext_texture_compression_astc_hdr] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_texture_compression_astchdr = Some(Default::default()); |
| let member = self.features_texture_compression_astchdr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [ |
| api_version >= crate::Version::V1_3, |
| device_extensions.khr_zero_initialize_workgroup_memory, |
| ] |
| .into_iter() |
| .any(|x| x) |
| && [self.features_vulkan13.is_none()].into_iter().all(|x| x) |
| { |
| self.features_zero_initialize_workgroup_memory = Some(Default::default()); |
| let member = self.features_zero_initialize_workgroup_memory.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_acceleration_structure].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_acceleration_structure_khr = Some(Default::default()); |
| let member = self.features_acceleration_structure_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [ |
| device_extensions.khr_fragment_shader_barycentric, |
| device_extensions.nv_fragment_shader_barycentric, |
| ] |
| .into_iter() |
| .any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_fragment_shader_barycentric_khr = Some(Default::default()); |
| let member = self.features_fragment_shader_barycentric_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_fragment_shading_rate].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_fragment_shading_rate_khr = Some(Default::default()); |
| let member = self.features_fragment_shading_rate_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_global_priority, device_extensions.ext_global_priority_query] |
| .into_iter() |
| .any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_global_priority_query_khr = Some(Default::default()); |
| let member = self.features_global_priority_query_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_performance_query].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_performance_query_khr = Some(Default::default()); |
| let member = self.features_performance_query_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_pipeline_executable_properties].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_pipeline_executable_properties_khr = Some(Default::default()); |
| let member = self.features_pipeline_executable_properties_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_portability_subset].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_portability_subset_khr = Some(Default::default()); |
| let member = self.features_portability_subset_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_present_id].into_iter().any(|x| x) && [].into_iter().all(|x| x) { |
| self.features_present_id_khr = Some(Default::default()); |
| let member = self.features_present_id_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_present_wait].into_iter().any(|x| x) && [].into_iter().all(|x| x) |
| { |
| self.features_present_wait_khr = Some(Default::default()); |
| let member = self.features_present_wait_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_ray_query].into_iter().any(|x| x) && [].into_iter().all(|x| x) { |
| self.features_ray_query_khr = Some(Default::default()); |
| let member = self.features_ray_query_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_ray_tracing_maintenance1].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_ray_tracing_maintenance1_khr = Some(Default::default()); |
| let member = self.features_ray_tracing_maintenance1_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_ray_tracing_pipeline].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_ray_tracing_pipeline_khr = Some(Default::default()); |
| let member = self.features_ray_tracing_pipeline_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_shader_clock].into_iter().any(|x| x) && [].into_iter().all(|x| x) |
| { |
| self.features_shader_clock_khr = Some(Default::default()); |
| let member = self.features_shader_clock_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_shader_subgroup_uniform_control_flow].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_shader_subgroup_uniform_control_flow_khr = Some(Default::default()); |
| let member = self.features_shader_subgroup_uniform_control_flow_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.khr_workgroup_memory_explicit_layout].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_workgroup_memory_explicit_layout_khr = Some(Default::default()); |
| let member = self.features_workgroup_memory_explicit_layout_khr.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_4444_formats].into_iter().any(|x| x) && [].into_iter().all(|x| x) |
| { |
| self.features_4444formats_ext = Some(Default::default()); |
| let member = self.features_4444formats_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_astc_decode_mode].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_astc_decode_ext = Some(Default::default()); |
| let member = self.features_astc_decode_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_device_address_binding_report].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_address_binding_report_ext = Some(Default::default()); |
| let member = self.features_address_binding_report_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_attachment_feedback_loop_layout].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_attachment_feedback_loop_layout_ext = Some(Default::default()); |
| let member = self.features_attachment_feedback_loop_layout_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_blend_operation_advanced].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_blend_operation_advanced_ext = Some(Default::default()); |
| let member = self.features_blend_operation_advanced_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_border_color_swizzle].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_border_color_swizzle_ext = Some(Default::default()); |
| let member = self.features_border_color_swizzle_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_buffer_device_address].into_iter().any(|x| x) |
| && [self.features_vulkan12.is_none(), self.features_buffer_device_address.is_none()] |
| .into_iter() |
| .all(|x| x) |
| { |
| self.features_buffer_device_address_ext = Some(Default::default()); |
| let member = self.features_buffer_device_address_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_color_write_enable].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_color_write_enable_ext = Some(Default::default()); |
| let member = self.features_color_write_enable_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_conditional_rendering].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_conditional_rendering_ext = Some(Default::default()); |
| let member = self.features_conditional_rendering_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_custom_border_color].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_custom_border_color_ext = Some(Default::default()); |
| let member = self.features_custom_border_color_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_depth_clamp_zero_one].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_depth_clamp_zero_one_ext = Some(Default::default()); |
| let member = self.features_depth_clamp_zero_one_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_depth_clip_control].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_depth_clip_control_ext = Some(Default::default()); |
| let member = self.features_depth_clip_control_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_depth_clip_enable].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_depth_clip_enable_ext = Some(Default::default()); |
| let member = self.features_depth_clip_enable_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_descriptor_buffer].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_descriptor_buffer_ext = Some(Default::default()); |
| let member = self.features_descriptor_buffer_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_device_memory_report].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_device_memory_report_ext = Some(Default::default()); |
| let member = self.features_device_memory_report_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_extended_dynamic_state2].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_extended_dynamic_state2_ext = Some(Default::default()); |
| let member = self.features_extended_dynamic_state2_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_extended_dynamic_state3].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_extended_dynamic_state3_ext = Some(Default::default()); |
| let member = self.features_extended_dynamic_state3_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_extended_dynamic_state].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_extended_dynamic_state_ext = Some(Default::default()); |
| let member = self.features_extended_dynamic_state_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_device_fault].into_iter().any(|x| x) && [].into_iter().all(|x| x) |
| { |
| self.features_fault_ext = Some(Default::default()); |
| let member = self.features_fault_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_fragment_density_map2].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_fragment_density_map2_ext = Some(Default::default()); |
| let member = self.features_fragment_density_map2_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_fragment_density_map].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_fragment_density_map_ext = Some(Default::default()); |
| let member = self.features_fragment_density_map_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_fragment_shader_interlock].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_fragment_shader_interlock_ext = Some(Default::default()); |
| let member = self.features_fragment_shader_interlock_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_graphics_pipeline_library].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_graphics_pipeline_library_ext = Some(Default::default()); |
| let member = self.features_graphics_pipeline_library_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_image_2d_view_of_3d].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_image2_d_view_of3_d_ext = Some(Default::default()); |
| let member = self.features_image2_d_view_of3_d_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_image_compression_control].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_image_compression_control_ext = Some(Default::default()); |
| let member = self.features_image_compression_control_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_image_compression_control_swapchain].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_image_compression_control_swapchain_ext = Some(Default::default()); |
| let member = self.features_image_compression_control_swapchain_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_image_view_min_lod].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_image_view_min_lod_ext = Some(Default::default()); |
| let member = self.features_image_view_min_lod_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_index_type_uint8].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_index_type_uint8_ext = Some(Default::default()); |
| let member = self.features_index_type_uint8_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_legacy_dithering].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_legacy_dithering_ext = Some(Default::default()); |
| let member = self.features_legacy_dithering_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_line_rasterization].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_line_rasterization_ext = Some(Default::default()); |
| let member = self.features_line_rasterization_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_memory_priority].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_memory_priority_ext = Some(Default::default()); |
| let member = self.features_memory_priority_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_mesh_shader].into_iter().any(|x| x) && [].into_iter().all(|x| x) { |
| self.features_mesh_shader_ext = Some(Default::default()); |
| let member = self.features_mesh_shader_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_multi_draw].into_iter().any(|x| x) && [].into_iter().all(|x| x) { |
| self.features_multi_draw_ext = Some(Default::default()); |
| let member = self.features_multi_draw_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_multisampled_render_to_single_sampled].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_multisampled_render_to_single_sampled_ext = Some(Default::default()); |
| let member = self.features_multisampled_render_to_single_sampled_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [ |
| device_extensions.ext_mutable_descriptor_type, |
| device_extensions.valve_mutable_descriptor_type, |
| ] |
| .into_iter() |
| .any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_mutable_descriptor_type_ext = Some(Default::default()); |
| let member = self.features_mutable_descriptor_type_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_non_seamless_cube_map].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_non_seamless_cube_map_ext = Some(Default::default()); |
| let member = self.features_non_seamless_cube_map_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_opacity_micromap].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_opacity_micromap_ext = Some(Default::default()); |
| let member = self.features_opacity_micromap_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_pageable_device_local_memory].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_pageable_device_local_memory_ext = Some(Default::default()); |
| let member = self.features_pageable_device_local_memory_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_pipeline_properties].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_pipeline_properties_ext = Some(Default::default()); |
| let member = self.features_pipeline_properties_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_pipeline_protected_access].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_pipeline_protected_access_ext = Some(Default::default()); |
| let member = self.features_pipeline_protected_access_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_pipeline_robustness].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_pipeline_robustness_ext = Some(Default::default()); |
| let member = self.features_pipeline_robustness_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_primitive_topology_list_restart].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_primitive_topology_list_restart_ext = Some(Default::default()); |
| let member = self.features_primitive_topology_list_restart_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_primitives_generated_query].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_primitives_generated_query_ext = Some(Default::default()); |
| let member = self.features_primitives_generated_query_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_provoking_vertex].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_provoking_vertex_ext = Some(Default::default()); |
| let member = self.features_provoking_vertex_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_rgba10x6_formats].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_rgba10x6_formats_ext = Some(Default::default()); |
| let member = self.features_rgba10x6_formats_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [ |
| device_extensions.ext_rasterization_order_attachment_access, |
| device_extensions.arm_rasterization_order_attachment_access, |
| ] |
| .into_iter() |
| .any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_rasterization_order_attachment_access_ext = Some(Default::default()); |
| let member = self.features_rasterization_order_attachment_access_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_robustness2].into_iter().any(|x| x) && [].into_iter().all(|x| x) { |
| self.features_robustness2_ext = Some(Default::default()); |
| let member = self.features_robustness2_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_shader_atomic_float2].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_shader_atomic_float2_ext = Some(Default::default()); |
| let member = self.features_shader_atomic_float2_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_shader_atomic_float].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_shader_atomic_float_ext = Some(Default::default()); |
| let member = self.features_shader_atomic_float_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_shader_image_atomic_int64].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_shader_image_atomic_int64_ext = Some(Default::default()); |
| let member = self.features_shader_image_atomic_int64_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_shader_module_identifier].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_shader_module_identifier_ext = Some(Default::default()); |
| let member = self.features_shader_module_identifier_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_subpass_merge_feedback].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_subpass_merge_feedback_ext = Some(Default::default()); |
| let member = self.features_subpass_merge_feedback_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_swapchain_maintenance1].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_swapchain_maintenance1_ext = Some(Default::default()); |
| let member = self.features_swapchain_maintenance1_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_texel_buffer_alignment].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_texel_buffer_alignment_ext = Some(Default::default()); |
| let member = self.features_texel_buffer_alignment_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_transform_feedback].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_transform_feedback_ext = Some(Default::default()); |
| let member = self.features_transform_feedback_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_vertex_attribute_divisor].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_vertex_attribute_divisor_ext = Some(Default::default()); |
| let member = self.features_vertex_attribute_divisor_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_vertex_input_dynamic_state].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_vertex_input_dynamic_state_ext = Some(Default::default()); |
| let member = self.features_vertex_input_dynamic_state_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_ycbcr_2plane_444_formats].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_ycbcr2_plane444_formats_ext = Some(Default::default()); |
| let member = self.features_ycbcr2_plane444_formats_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.ext_ycbcr_image_arrays].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_ycbcr_image_arrays_ext = Some(Default::default()); |
| let member = self.features_ycbcr_image_arrays_ext.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.sec_amigo_profiling].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_amigo_profiling_sec = Some(Default::default()); |
| let member = self.features_amigo_profiling_sec.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.amd_device_coherent_memory].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_coherent_memory_amd = Some(Default::default()); |
| let member = self.features_coherent_memory_amd.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_compute_shader_derivatives].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_compute_shader_derivatives_nv = Some(Default::default()); |
| let member = self.features_compute_shader_derivatives_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_cooperative_matrix].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_cooperative_matrix_nv = Some(Default::default()); |
| let member = self.features_cooperative_matrix_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_copy_memory_indirect].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_copy_memory_indirect_nv = Some(Default::default()); |
| let member = self.features_copy_memory_indirect_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_corner_sampled_image].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_corner_sampled_image_nv = Some(Default::default()); |
| let member = self.features_corner_sampled_image_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_coverage_reduction_mode].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_coverage_reduction_mode_nv = Some(Default::default()); |
| let member = self.features_coverage_reduction_mode_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_dedicated_allocation_image_aliasing].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_dedicated_allocation_image_aliasing_nv = Some(Default::default()); |
| let member = self.features_dedicated_allocation_image_aliasing_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.valve_descriptor_set_host_mapping].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_descriptor_set_host_mapping_valve = Some(Default::default()); |
| let member = self.features_descriptor_set_host_mapping_valve.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_device_generated_commands].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_device_generated_commands_nv = Some(Default::default()); |
| let member = self.features_device_generated_commands_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_device_diagnostics_config].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_diagnostics_config_nv = Some(Default::default()); |
| let member = self.features_diagnostics_config_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_scissor_exclusive].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_exclusive_scissor_nv = Some(Default::default()); |
| let member = self.features_exclusive_scissor_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_external_memory_rdma].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_external_memory_rdma_nv = Some(Default::default()); |
| let member = self.features_external_memory_rdma_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.qcom_fragment_density_map_offset].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_fragment_density_map_offset_qcom = Some(Default::default()); |
| let member = self.features_fragment_density_map_offset_qcom.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_fragment_shading_rate_enums].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_fragment_shading_rate_enums_nv = Some(Default::default()); |
| let member = self.features_fragment_shading_rate_enums_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.qcom_image_processing].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_image_processing_qcom = Some(Default::default()); |
| let member = self.features_image_processing_qcom.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_inherited_viewport_scissor].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_inherited_viewport_scissor_nv = Some(Default::default()); |
| let member = self.features_inherited_viewport_scissor_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.huawei_invocation_mask].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_invocation_mask_huawei = Some(Default::default()); |
| let member = self.features_invocation_mask_huawei.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_linear_color_attachment].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_linear_color_attachment_nv = Some(Default::default()); |
| let member = self.features_linear_color_attachment_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_memory_decompression].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_memory_decompression_nv = Some(Default::default()); |
| let member = self.features_memory_decompression_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_mesh_shader].into_iter().any(|x| x) |
| && [self.features_mesh_shader_ext.is_none()].into_iter().all(|x| x) |
| { |
| self.features_mesh_shader_nv = Some(Default::default()); |
| let member = self.features_mesh_shader_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.qcom_multiview_per_view_viewports].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_multiview_per_view_viewports_qcom = Some(Default::default()); |
| let member = self.features_multiview_per_view_viewports_qcom.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_optical_flow].into_iter().any(|x| x) && [].into_iter().all(|x| x) { |
| self.features_optical_flow_nv = Some(Default::default()); |
| let member = self.features_optical_flow_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_present_barrier].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_present_barrier_nv = Some(Default::default()); |
| let member = self.features_present_barrier_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_ray_tracing_invocation_reorder].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_ray_tracing_invocation_reorder_nv = Some(Default::default()); |
| let member = self.features_ray_tracing_invocation_reorder_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_ray_tracing_motion_blur].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_ray_tracing_motion_blur_nv = Some(Default::default()); |
| let member = self.features_ray_tracing_motion_blur_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_representative_fragment_test].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_representative_fragment_test_nv = Some(Default::default()); |
| let member = self.features_representative_fragment_test_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.arm_shader_core_builtins].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_shader_core_builtins_arm = Some(Default::default()); |
| let member = self.features_shader_core_builtins_arm.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.amd_shader_early_and_late_fragment_tests].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_shader_early_and_late_fragment_tests_amd = Some(Default::default()); |
| let member = self.features_shader_early_and_late_fragment_tests_amd.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_shader_image_footprint].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_shader_image_footprint_nv = Some(Default::default()); |
| let member = self.features_shader_image_footprint_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.intel_shader_integer_functions2].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_shader_integer_functions2_intel = Some(Default::default()); |
| let member = self.features_shader_integer_functions2_intel.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_shader_sm_builtins].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_shader_sm_builtins_nv = Some(Default::default()); |
| let member = self.features_shader_sm_builtins_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.nv_shading_rate_image].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_shading_rate_image_nv = Some(Default::default()); |
| let member = self.features_shading_rate_image_nv.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.huawei_subpass_shading].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_subpass_shading_huawei = Some(Default::default()); |
| let member = self.features_subpass_shading_huawei.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| if [device_extensions.qcom_tile_properties].into_iter().any(|x| x) |
| && [].into_iter().all(|x| x) |
| { |
| self.features_tile_properties_qcom = Some(Default::default()); |
| let member = self.features_tile_properties_qcom.as_mut().unwrap(); |
| member.p_next = head.p_next; |
| head.p_next = member as *mut _ as _; |
| } |
| } |
| pub(crate) fn head_as_ref(&self) -> &ash::vk::PhysicalDeviceFeatures2KHR { |
| &self.features_vulkan10 |
| } |
| pub(crate) fn head_as_mut(&mut self) -> &mut ash::vk::PhysicalDeviceFeatures2KHR { |
| &mut self.features_vulkan10 |
| } |
| } |