blob: a4441d4451c53cfa7ae42de8b4e431401429931c [file] [log] [blame]
// 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
}
}