diff options
Diffstat (limited to 'out/properties.rs')
-rw-r--r-- | out/properties.rs | 1812 |
1 files changed, 1812 insertions, 0 deletions
diff --git a/out/properties.rs b/out/properties.rs new file mode 100644 index 0000000..8ae2135 --- /dev/null +++ b/out/properties.rs @@ -0,0 +1,1812 @@ +// 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 properties of a physical device."] +#[doc = r""] +#[doc = r" Depending on the highest version of Vulkan supported by the physical device, and the"] +#[doc = r" available extensions, not every property may be available. For that reason, some"] +#[doc = r" properties are wrapped in an `Option`."] +#[derive(Clone, Debug)] +pub struct Properties { + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-accelerationStructureCaptureReplayDescriptorDataSize)"] + pub acceleration_structure_capture_replay_descriptor_data_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-accelerationStructureDescriptorSize)"] + pub acceleration_structure_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html#limits-activeComputeUnitCount)"] + pub active_compute_unit_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html#limits-advancedBlendAllOperations)"] + pub advanced_blend_all_operations: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html#limits-advancedBlendCorrelatedOverlap)"] + pub advanced_blend_correlated_overlap: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html#limits-advancedBlendIndependentBlend)"] + pub advanced_blend_independent_blend: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html#limits-advancedBlendMaxColorAttachments)"] + pub advanced_blend_max_color_attachments: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html#limits-advancedBlendNonPremultipliedDstColor)"] + pub advanced_blend_non_premultiplied_dst_color: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html#limits-advancedBlendNonPremultipliedSrcColor)"] + pub advanced_blend_non_premultiplied_src_color: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePerformanceQueryPropertiesKHR.html#limits-allowCommandBufferQueryCopies)"] + pub allow_command_buffer_query_copies: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-allowSamplerImageViewPostSubmitCreation)"] + pub allow_sampler_image_view_post_submit_creation: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-apiVersion)"] + pub api_version: Version, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-bidirectionalFlowSupported)"] + pub bidirectional_flow_supported: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-bufferCaptureReplayDescriptorDataSize)"] + pub buffer_capture_replay_descriptor_data_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-bufferImageGranularity)"] + pub buffer_image_granularity: DeviceAlignment, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-bufferlessPushDescriptors)"] + pub bufferless_push_descriptors: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.html#limits-combinedImageSamplerDensityMapDescriptorSize)"] + pub combined_image_sampler_density_map_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-combinedImageSamplerDescriptorSingleArray)"] + pub combined_image_sampler_descriptor_single_array: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-combinedImageSamplerDescriptorSize)"] + pub combined_image_sampler_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-computeUnitsPerShaderArray)"] + pub compute_units_per_shader_array: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-conformanceVersion)"] + pub conformance_version: Option<ConformanceVersion>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-conservativePointAndLineRasterization)"] + pub conservative_point_and_line_rasterization: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-conservativeRasterizationPostDepthCoverage)"] + pub conservative_rasterization_post_depth_coverage: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesNV.html#limits-cooperativeMatrixSupportedStages)"] + pub cooperative_matrix_supported_stages: Option<ShaderStages>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-costSupported)"] + pub cost_supported: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesNV.html#limits-decompressionMethods)"] + pub decompression_methods: Option<MemoryDecompressionMethods>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html#limits-defaultRobustnessImages)"] + pub default_robustness_images: Option<PipelineRobustnessImageBehavior>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html#limits-defaultRobustnessStorageBuffers)"] + pub default_robustness_storage_buffers: Option<PipelineRobustnessBufferBehavior>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html#limits-defaultRobustnessUniformBuffers)"] + pub default_robustness_uniform_buffers: Option<PipelineRobustnessBufferBehavior>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html#limits-defaultRobustnessVertexInputs)"] + pub default_robustness_vertex_inputs: Option<PipelineRobustnessBufferBehavior>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-degenerateLinesRasterized)"] + pub degenerate_lines_rasterized: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-degenerateTrianglesRasterized)"] + pub degenerate_triangles_rasterized: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-denormBehaviorIndependence)"] + pub denorm_behavior_independence: Option<ShaderFloatControlsIndependence>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-descriptorBufferAddressSpaceSize)"] + pub descriptor_buffer_address_space_size: Option<DeviceSize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-descriptorBufferOffsetAlignment)"] + pub descriptor_buffer_offset_alignment: Option<DeviceSize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-deviceID)"] + pub device_id: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-deviceLUID)"] + pub device_luid: Option<[u8; 8]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-deviceLUIDValid)"] + pub device_luid_valid: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-deviceName)"] + pub device_name: String, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-deviceNodeMask)"] + pub device_node_mask: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-deviceType)"] + pub device_type: PhysicalDeviceType, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-deviceUUID)"] + pub device_uuid: Option<[u8; 16]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-discreteQueuePriorities)"] + pub discrete_queue_priorities: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-driverID)"] + pub driver_id: Option<DriverId>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-driverInfo)"] + pub driver_info: Option<String>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-driverName)"] + pub driver_name: Option<String>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-driverUUID)"] + pub driver_uuid: Option<[u8; 16]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-driverVersion)"] + pub driver_version: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3PropertiesEXT.html#limits-dynamicPrimitiveTopologyUnrestricted)"] + pub dynamic_primitive_topology_unrestricted: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-extraPrimitiveOverestimationSizeGranularity)"] + pub extra_primitive_overestimation_size_granularity: Option<f32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-filterMinmaxImageComponentMapping)"] + pub filter_minmax_image_component_mapping: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-filterMinmaxSingleComponentFormats)"] + pub filter_minmax_single_component_formats: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html#limits-fragmentDensityInvocations)"] + pub fragment_density_invocations: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.html#limits-fragmentDensityOffsetGranularity)"] + pub fragment_density_offset_granularity: Option<[u32; 2]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateNonTrivialCombinerOps)"] + pub fragment_shading_rate_non_trivial_combiner_ops: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateStrictMultiplyCombiner)"] + pub fragment_shading_rate_strict_multiply_combiner: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateWithConservativeRasterization)"] + pub fragment_shading_rate_with_conservative_rasterization: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateWithCustomSampleLocations)"] + pub fragment_shading_rate_with_custom_sample_locations: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateWithFragmentShaderInterlock)"] + pub fragment_shading_rate_with_fragment_shader_interlock: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateWithSampleMask)"] + pub fragment_shading_rate_with_sample_mask: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateWithShaderDepthStencilWrites)"] + pub fragment_shading_rate_with_shader_depth_stencil_writes: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateWithShaderSampleMask)"] + pub fragment_shading_rate_with_shader_sample_mask: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-framebufferColorSampleCounts)"] + pub framebuffer_color_sample_counts: SampleCounts, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-framebufferDepthSampleCounts)"] + pub framebuffer_depth_sample_counts: SampleCounts, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-framebufferIntegerColorSampleCounts)"] + pub framebuffer_integer_color_sample_counts: Option<SampleCounts>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-framebufferNoAttachmentsSampleCounts)"] + pub framebuffer_no_attachments_sample_counts: SampleCounts, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-framebufferStencilSampleCounts)"] + pub framebuffer_stencil_sample_counts: SampleCounts, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-fullyCoveredFragmentShaderInputVariable)"] + pub fully_covered_fragment_shader_input_variable: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-globalFlowSupported)"] + pub global_flow_supported: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.html#limits-graphicsPipelineLibraryFastLinking)"] + pub graphics_pipeline_library_fast_linking: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.html#limits-graphicsPipelineLibraryIndependentInterpolationDecoration)"] + pub graphics_pipeline_library_independent_interpolation_decoration: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html#limits-hasPrimary)"] + pub has_primary: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html#limits-hasRender)"] + pub has_render: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-hintSupported)"] + pub hint_supported: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-imageCaptureReplayDescriptorDataSize)"] + pub image_capture_replay_descriptor_data_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-imageViewCaptureReplayDescriptorDataSize)"] + pub image_view_capture_replay_descriptor_data_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-independentResolve)"] + pub independent_resolve: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-independentResolveNone)"] + pub independent_resolve_none: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-inputAttachmentDescriptorSize)"] + pub input_attachment_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct16BitMixedSignednessAccelerated)"] + pub integer_dot_product16_bit_mixed_signedness_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct16BitSignedAccelerated)"] + pub integer_dot_product16_bit_signed_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct16BitUnsignedAccelerated)"] + pub integer_dot_product16_bit_unsigned_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct32BitMixedSignednessAccelerated)"] + pub integer_dot_product32_bit_mixed_signedness_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct32BitSignedAccelerated)"] + pub integer_dot_product32_bit_signed_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct32BitUnsignedAccelerated)"] + pub integer_dot_product32_bit_unsigned_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct4x8BitPackedMixedSignednessAccelerated)"] + pub integer_dot_product4x8_bit_packed_mixed_signedness_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct4x8BitPackedSignedAccelerated)"] + pub integer_dot_product4x8_bit_packed_signed_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct4x8BitPackedUnsignedAccelerated)"] + pub integer_dot_product4x8_bit_packed_unsigned_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct64BitMixedSignednessAccelerated)"] + pub integer_dot_product64_bit_mixed_signedness_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct64BitSignedAccelerated)"] + pub integer_dot_product64_bit_signed_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct64BitUnsignedAccelerated)"] + pub integer_dot_product64_bit_unsigned_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct8BitMixedSignednessAccelerated)"] + pub integer_dot_product8_bit_mixed_signedness_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct8BitSignedAccelerated)"] + pub integer_dot_product8_bit_signed_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct8BitUnsignedAccelerated)"] + pub integer_dot_product8_bit_unsigned_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated)"] + pub integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated: + Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating16BitSignedAccelerated)"] + pub integer_dot_product_accumulating_saturating16_bit_signed_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating16BitUnsignedAccelerated)"] + pub integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated)"] + pub integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated: + Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating32BitSignedAccelerated)"] + pub integer_dot_product_accumulating_saturating32_bit_signed_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating32BitUnsignedAccelerated)"] + pub integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated)"] + pub integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated: + Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated)"] + pub integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated)"] + pub integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated: + Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated)"] + pub integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated: + Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating64BitSignedAccelerated)"] + pub integer_dot_product_accumulating_saturating64_bit_signed_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating64BitUnsignedAccelerated)"] + pub integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated)"] + pub integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating8BitSignedAccelerated)"] + pub integer_dot_product_accumulating_saturating8_bit_signed_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating8BitUnsignedAccelerated)"] + pub integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-layeredShadingRateAttachments)"] + pub layered_shading_rate_attachments: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationPropertiesEXT.html#limits-lineSubPixelPrecisionBits)"] + pub line_sub_pixel_precision_bits: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-lineWidthGranularity)"] + pub line_width_granularity: f32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-lineWidthRange)"] + pub line_width_range: [f32; 2], + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html#limits-maxBlockMatchRegion)"] + pub max_block_match_region: Option<[u32; 2]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxBoundDescriptorSets)"] + pub max_bound_descriptor_sets: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html#limits-maxBoxFilterBlockSize)"] + pub max_box_filter_block_size: Option<[u32; 2]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxBufferSize)"] + pub max_buffer_size: Option<DeviceSize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxClipDistances)"] + pub max_clip_distances: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxColorAttachments)"] + pub max_color_attachments: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxCombinedClipAndCullDistances)"] + pub max_combined_clip_and_cull_distances: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxComputeSharedMemorySize)"] + pub max_compute_shared_memory_size: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxComputeWorkGroupCount)"] + pub max_compute_work_group_count: [u32; 3], + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxComputeWorkGroupInvocations)"] + pub max_compute_work_group_invocations: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxComputeWorkGroupSize)"] + pub max_compute_work_group_size: [u32; 3], + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxComputeWorkgroupSubgroups)"] + pub max_compute_workgroup_subgroups: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxCullDistances)"] + pub max_cull_distances: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCustomBorderColorPropertiesEXT.html#limits-maxCustomBorderColorSamplers)"] + pub max_custom_border_color_samplers: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesNV.html#limits-maxDecompressionIndirectCount)"] + pub max_decompression_indirect_count: Option<u64>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxDescriptorBufferBindings)"] + pub max_descriptor_buffer_bindings: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxDescriptorSetAccelerationStructures)"] + pub max_descriptor_set_acceleration_structures: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxDescriptorSetInlineUniformBlocks)"] + pub max_descriptor_set_inline_uniform_blocks: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetInputAttachments)"] + pub max_descriptor_set_input_attachments: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetSampledImages)"] + pub max_descriptor_set_sampled_images: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetSamplers)"] + pub max_descriptor_set_samplers: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetStorageBuffers)"] + pub max_descriptor_set_storage_buffers: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetStorageBuffersDynamic)"] + pub max_descriptor_set_storage_buffers_dynamic: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetStorageImages)"] + pub max_descriptor_set_storage_images: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html#limits-maxDescriptorSetSubsampledSamplers)"] + pub max_descriptor_set_subsampled_samplers: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetUniformBuffers)"] + pub max_descriptor_set_uniform_buffers: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetUniformBuffersDynamic)"] + pub max_descriptor_set_uniform_buffers_dynamic: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxDescriptorSetUpdateAfterBindAccelerationStructures)"] + pub max_descriptor_set_update_after_bind_acceleration_structures: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxDescriptorSetUpdateAfterBindInlineUniformBlocks)"] + pub max_descriptor_set_update_after_bind_inline_uniform_blocks: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindInputAttachments)"] + pub max_descriptor_set_update_after_bind_input_attachments: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindSampledImages)"] + pub max_descriptor_set_update_after_bind_sampled_images: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindSamplers)"] + pub max_descriptor_set_update_after_bind_samplers: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindStorageBuffers)"] + pub max_descriptor_set_update_after_bind_storage_buffers: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindStorageBuffersDynamic)"] + pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindStorageImages)"] + pub max_descriptor_set_update_after_bind_storage_images: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindUniformBuffers)"] + pub max_descriptor_set_update_after_bind_uniform_buffers: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindUniformBuffersDynamic)"] + pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html#limits-maxDiscardRectangles)"] + pub max_discard_rectangles: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDrawIndexedIndexValue)"] + pub max_draw_indexed_index_value: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDrawIndirectCount)"] + pub max_draw_indirect_count: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html#limits-maxDrawMeshTasksCount)"] + pub max_draw_mesh_tasks_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxEmbeddedImmutableSamplerBindings)"] + pub max_embedded_immutable_sampler_bindings: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxEmbeddedImmutableSamplers)"] + pub max_embedded_immutable_samplers: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-maxExtraPrimitiveOverestimationSize)"] + pub max_extra_primitive_overestimation_size: Option<f32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFragmentCombinedOutputResources)"] + pub max_fragment_combined_output_resources: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html#limits-maxFragmentDensityTexelSize)"] + pub max_fragment_density_texel_size: Option<[u32; 2]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFragmentDualSrcAttachments)"] + pub max_fragment_dual_src_attachments: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFragmentInputComponents)"] + pub max_fragment_input_components: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFragmentOutputAttachments)"] + pub max_fragment_output_attachments: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-maxFragmentShadingRateAttachmentTexelSize)"] + pub max_fragment_shading_rate_attachment_texel_size: Option<[u32; 2]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio)"] + pub max_fragment_shading_rate_attachment_texel_size_aspect_ratio: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-maxFragmentShadingRateCoverageSamples)"] + pub max_fragment_shading_rate_coverage_samples: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.html#limits-maxFragmentShadingRateInvocationCount)"] + pub max_fragment_shading_rate_invocation_count: Option<SampleCount>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-maxFragmentShadingRateRasterizationSamples)"] + pub max_fragment_shading_rate_rasterization_samples: Option<SampleCount>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-maxFragmentSize)"] + pub max_fragment_size: Option<[u32; 2]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-maxFragmentSizeAspectRatio)"] + pub max_fragment_size_aspect_ratio: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFramebufferHeight)"] + pub max_framebuffer_height: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFramebufferLayers)"] + pub max_framebuffer_layers: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFramebufferWidth)"] + pub max_framebuffer_width: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxGeometryCount)"] + pub max_geometry_count: Option<u64>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxGeometryInputComponents)"] + pub max_geometry_input_components: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxGeometryOutputComponents)"] + pub max_geometry_output_components: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxGeometryOutputVertices)"] + pub max_geometry_output_vertices: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxGeometryShaderInvocations)"] + pub max_geometry_shader_invocations: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxGeometryTotalOutputComponents)"] + pub max_geometry_total_output_components: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-maxGraphicsShaderGroupCount)"] + pub max_graphics_shader_group_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-maxHeight)"] + pub max_height: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxImageArrayLayers)"] + pub max_image_array_layers: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxImageDimension1D)"] + pub max_image_dimension1_d: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxImageDimension2D)"] + pub max_image_dimension2_d: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxImageDimension3D)"] + pub max_image_dimension3_d: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxImageDimensionCube)"] + pub max_image_dimension_cube: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-maxIndirectCommandsStreamCount)"] + pub max_indirect_commands_stream_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-maxIndirectCommandsStreamStride)"] + pub max_indirect_commands_stream_stride: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-maxIndirectCommandsTokenCount)"] + pub max_indirect_commands_token_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-maxIndirectCommandsTokenOffset)"] + pub max_indirect_commands_token_offset: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-maxIndirectSequenceCount)"] + pub max_indirect_sequence_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxInlineUniformBlockSize)"] + pub max_inline_uniform_block_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxInlineUniformTotalSize)"] + pub max_inline_uniform_total_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxInstanceCount)"] + pub max_instance_count: Option<u64>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxInterpolationOffset)"] + pub max_interpolation_offset: f32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxMemoryAllocationCount)"] + pub max_memory_allocation_count: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-maxMemoryAllocationSize)"] + pub max_memory_allocation_size: Option<DeviceSize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshMultiviewViewCount)"] + pub max_mesh_multiview_view_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshOutputComponents)"] + pub max_mesh_output_components: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshOutputLayers)"] + pub max_mesh_output_layers: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshOutputMemorySize)"] + pub max_mesh_output_memory_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshOutputPrimitives)"] + pub max_mesh_output_primitives: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshOutputVertices)"] + pub max_mesh_output_vertices: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshPayloadAndOutputMemorySize)"] + pub max_mesh_payload_and_output_memory_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshPayloadAndSharedMemorySize)"] + pub max_mesh_payload_and_shared_memory_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshSharedMemorySize)"] + pub max_mesh_shared_memory_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html#limits-maxMeshTotalMemorySize)"] + pub max_mesh_total_memory_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshWorkGroupCount)"] + pub max_mesh_work_group_count: Option<[u32; 3]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshWorkGroupInvocations)"] + pub max_mesh_work_group_invocations: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshWorkGroupSize)"] + pub max_mesh_work_group_size: Option<[u32; 3]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshWorkGroupTotalCount)"] + pub max_mesh_work_group_total_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultiDrawPropertiesEXT.html#limits-maxMultiDrawCount)"] + pub max_multi_draw_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-maxMultiviewInstanceIndex)"] + pub max_multiview_instance_index: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-maxMultiviewViewCount)"] + pub max_multiview_view_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-maxNumRegionsOfInterest)"] + pub max_num_regions_of_interest: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapPropertiesEXT.html#limits-maxOpacity2StateSubdivisionLevel)"] + pub max_opacity2_state_subdivision_level: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapPropertiesEXT.html#limits-maxOpacity4StateSubdivisionLevel)"] + pub max_opacity4_state_subdivision_level: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-maxPerSetDescriptors)"] + pub max_per_set_descriptors: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxPerStageDescriptorAccelerationStructures)"] + pub max_per_stage_descriptor_acceleration_structures: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxPerStageDescriptorInlineUniformBlocks)"] + pub max_per_stage_descriptor_inline_uniform_blocks: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageDescriptorInputAttachments)"] + pub max_per_stage_descriptor_input_attachments: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageDescriptorSampledImages)"] + pub max_per_stage_descriptor_sampled_images: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageDescriptorSamplers)"] + pub max_per_stage_descriptor_samplers: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageDescriptorStorageBuffers)"] + pub max_per_stage_descriptor_storage_buffers: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageDescriptorStorageImages)"] + pub max_per_stage_descriptor_storage_images: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageDescriptorUniformBuffers)"] + pub max_per_stage_descriptor_uniform_buffers: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxPerStageDescriptorUpdateAfterBindAccelerationStructures)"] + pub max_per_stage_descriptor_update_after_bind_acceleration_structures: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks)"] + pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageDescriptorUpdateAfterBindInputAttachments)"] + pub max_per_stage_descriptor_update_after_bind_input_attachments: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageDescriptorUpdateAfterBindSampledImages)"] + pub max_per_stage_descriptor_update_after_bind_sampled_images: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageDescriptorUpdateAfterBindSamplers)"] + pub max_per_stage_descriptor_update_after_bind_samplers: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageDescriptorUpdateAfterBindStorageBuffers)"] + pub max_per_stage_descriptor_update_after_bind_storage_buffers: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageDescriptorUpdateAfterBindStorageImages)"] + pub max_per_stage_descriptor_update_after_bind_storage_images: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageDescriptorUpdateAfterBindUniformBuffers)"] + pub max_per_stage_descriptor_update_after_bind_uniform_buffers: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageResources)"] + pub max_per_stage_resources: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageUpdateAfterBindResources)"] + pub max_per_stage_update_after_bind_resources: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxPreferredMeshWorkGroupInvocations)"] + pub max_preferred_mesh_work_group_invocations: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxPreferredTaskWorkGroupInvocations)"] + pub max_preferred_task_work_group_invocations: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxPrimitiveCount)"] + pub max_primitive_count: Option<u64>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPushConstantsSize)"] + pub max_push_constants_size: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html#limits-maxPushDescriptors)"] + pub max_push_descriptors: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-maxRayDispatchInvocationCount)"] + pub max_ray_dispatch_invocation_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-maxRayHitAttributeSize)"] + pub max_ray_hit_attribute_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-maxRayRecursionDepth)"] + pub max_ray_recursion_depth: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html#limits-maxRecursionDepth)"] + pub max_recursion_depth: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxResourceDescriptorBufferBindings)"] + pub max_resource_descriptor_buffer_bindings: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxResourceDescriptorBufferRange)"] + pub max_resource_descriptor_buffer_range: Option<DeviceSize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html#limits-maxSampleLocationGridSize)"] + pub max_sample_location_grid_size: Option<[u32; 2]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxSampleMaskWords)"] + pub max_sample_mask_words: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxSamplerAllocationCount)"] + pub max_sampler_allocation_count: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxSamplerAnisotropy)"] + pub max_sampler_anisotropy: f32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxSamplerDescriptorBufferBindings)"] + pub max_sampler_descriptor_buffer_bindings: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxSamplerDescriptorBufferRange)"] + pub max_sampler_descriptor_buffer_range: Option<DeviceSize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxSamplerLodBias)"] + pub max_sampler_lod_bias: f32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-maxSgprAllocation)"] + pub max_sgpr_allocation: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-maxShaderGroupStride)"] + pub max_shader_group_stride: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxStorageBufferRange)"] + pub max_storage_buffer_range: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxSubgroupSize)"] + pub max_subgroup_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.html#limits-maxSubpassShadingWorkgroupSizeAspectRatio)"] + pub max_subpass_shading_workgroup_size_aspect_ratio: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html#limits-maxSubsampledArrayLayers)"] + pub max_subsampled_array_layers: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html#limits-maxTaskOutputCount)"] + pub max_task_output_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskPayloadAndSharedMemorySize)"] + pub max_task_payload_and_shared_memory_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskPayloadSize)"] + pub max_task_payload_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskSharedMemorySize)"] + pub max_task_shared_memory_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html#limits-maxTaskTotalMemorySize)"] + pub max_task_total_memory_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskWorkGroupCount)"] + pub max_task_work_group_count: Option<[u32; 3]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskWorkGroupInvocations)"] + pub max_task_work_group_invocations: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskWorkGroupSize)"] + pub max_task_work_group_size: Option<[u32; 3]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskWorkGroupTotalCount)"] + pub max_task_work_group_total_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationControlPerPatchOutputComponents)"] + pub max_tessellation_control_per_patch_output_components: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationControlPerVertexInputComponents)"] + pub max_tessellation_control_per_vertex_input_components: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationControlPerVertexOutputComponents)"] + pub max_tessellation_control_per_vertex_output_components: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationControlTotalOutputComponents)"] + pub max_tessellation_control_total_output_components: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationEvaluationInputComponents)"] + pub max_tessellation_evaluation_input_components: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationEvaluationOutputComponents)"] + pub max_tessellation_evaluation_output_components: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationGenerationLevel)"] + pub max_tessellation_generation_level: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationPatchSize)"] + pub max_tessellation_patch_size: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTexelBufferElements)"] + pub max_texel_buffer_elements: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTexelGatherOffset)"] + pub max_texel_gather_offset: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTexelOffset)"] + pub max_texel_offset: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxTimelineSemaphoreValueDifference)"] + pub max_timeline_semaphore_value_difference: Option<u64>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-maxTransformFeedbackBufferDataSize)"] + pub max_transform_feedback_buffer_data_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-maxTransformFeedbackBufferDataStride)"] + pub max_transform_feedback_buffer_data_stride: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-maxTransformFeedbackBufferSize)"] + pub max_transform_feedback_buffer_size: Option<DeviceSize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-maxTransformFeedbackBuffers)"] + pub max_transform_feedback_buffers: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-maxTransformFeedbackStreamDataSize)"] + pub max_transform_feedback_stream_data_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-maxTransformFeedbackStreams)"] + pub max_transform_feedback_streams: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html#limits-maxTriangleCount)"] + pub max_triangle_count: Option<u64>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxUniformBufferRange)"] + pub max_uniform_buffer_range: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxUpdateAfterBindDescriptorsInAllPools)"] + pub max_update_after_bind_descriptors_in_all_pools: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html#limits-maxVertexAttribDivisor)"] + pub max_vertex_attrib_divisor: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxVertexInputAttributeOffset)"] + pub max_vertex_input_attribute_offset: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxVertexInputAttributes)"] + pub max_vertex_input_attributes: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxVertexInputBindingStride)"] + pub max_vertex_input_binding_stride: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxVertexInputBindings)"] + pub max_vertex_input_bindings: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxVertexOutputComponents)"] + pub max_vertex_output_components: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-maxVgprAllocation)"] + pub max_vgpr_allocation: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxViewportDimensions)"] + pub max_viewport_dimensions: [u32; 2], + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxViewports)"] + pub max_viewports: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html#limits-maxWeightFilterDimension)"] + pub max_weight_filter_dimension: Option<[u32; 2]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html#limits-maxWeightFilterPhases)"] + pub max_weight_filter_phases: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-maxWidth)"] + pub max_width: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-meshOutputPerPrimitiveGranularity)"] + pub mesh_output_per_primitive_granularity: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-meshOutputPerVertexGranularity)"] + pub mesh_output_per_vertex_granularity: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-minAccelerationStructureScratchOffsetAlignment)"] + pub min_acceleration_structure_scratch_offset_alignment: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html#limits-minFragmentDensityTexelSize)"] + pub min_fragment_density_texel_size: Option<[u32; 2]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-minFragmentShadingRateAttachmentTexelSize)"] + pub min_fragment_shading_rate_attachment_texel_size: Option<[u32; 2]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-minHeight)"] + pub min_height: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html#limits-minImportedHostPointerAlignment)"] + pub min_imported_host_pointer_alignment: Option<DeviceSize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-minIndirectCommandsBufferOffsetAlignment)"] + pub min_indirect_commands_buffer_offset_alignment: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minInterpolationOffset)"] + pub min_interpolation_offset: f32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minMemoryMapAlignment)"] + pub min_memory_map_alignment: usize, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-minSequencesCountBufferOffsetAlignment)"] + pub min_sequences_count_buffer_offset_alignment: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-minSequencesIndexBufferOffsetAlignment)"] + pub min_sequences_index_buffer_offset_alignment: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-minSgprAllocation)"] + pub min_sgpr_allocation: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minStorageBufferOffsetAlignment)"] + pub min_storage_buffer_offset_alignment: DeviceAlignment, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-minSubgroupSize)"] + pub min_subgroup_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minTexelBufferOffsetAlignment)"] + pub min_texel_buffer_offset_alignment: DeviceAlignment, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minTexelGatherOffset)"] + pub min_texel_gather_offset: i32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minTexelOffset)"] + pub min_texel_offset: i32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minUniformBufferOffsetAlignment)"] + pub min_uniform_buffer_offset_alignment: DeviceAlignment, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetPropertiesKHR.html#limits-minVertexInputBindingStrideAlignment)"] + pub min_vertex_input_binding_stride_alignment: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-minVgprAllocation)"] + pub min_vgpr_allocation: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-minWidth)"] + pub min_width: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-mipmapPrecisionBits)"] + pub mipmap_precision_bits: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-nonCoherentAtomSize)"] + pub non_coherent_atom_size: DeviceAlignment, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-optimalBufferCopyOffsetAlignment)"] + pub optimal_buffer_copy_offset_alignment: DeviceAlignment, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-optimalBufferCopyRowPitchAlignment)"] + pub optimal_buffer_copy_row_pitch_alignment: DeviceAlignment, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html#limits-pciBus)"] + pub pci_bus: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html#limits-pciDevice)"] + pub pci_device: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html#limits-pciDomain)"] + pub pci_domain: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html#limits-pciFunction)"] + pub pci_function: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html#limits-perViewPositionAllComponents)"] + pub per_view_position_all_components: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-pipelineCacheUUID)"] + pub pipeline_cache_uuid: [u8; 16], + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-pointClippingBehavior)"] + pub point_clipping_behavior: Option<PointClippingBehavior>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-pointSizeGranularity)"] + pub point_size_granularity: f32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-pointSizeRange)"] + pub point_size_range: [f32; 2], + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-prefersCompactPrimitiveOutput)"] + pub prefers_compact_primitive_output: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-prefersCompactVertexOutput)"] + pub prefers_compact_vertex_output: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-prefersLocalInvocationPrimitiveOutput)"] + pub prefers_local_invocation_primitive_output: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-prefersLocalInvocationVertexOutput)"] + pub prefers_local_invocation_vertex_output: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html#limits-primaryMajor)"] + pub primary_major: Option<i64>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html#limits-primaryMinor)"] + pub primary_minor: Option<i64>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-primitiveFragmentShadingRateWithMultipleViewports)"] + pub primitive_fragment_shading_rate_with_multiple_viewports: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-primitiveOverestimationSize)"] + pub primitive_overestimation_size: Option<f32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-primitiveUnderestimation)"] + pub primitive_underestimation: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-protectedNoFault)"] + pub protected_no_fault: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html#limits-provokingVertexModePerPipeline)"] + pub provoking_vertex_mode_per_pipeline: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-quadDivergentImplicitLod)"] + pub quad_divergent_implicit_lod: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubgroupProperties.html#limits-quadOperationsInAllStages)"] + pub quad_operations_in_all_stages: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.html#limits-rayTracingInvocationReorderReorderingHint)"] + pub ray_tracing_invocation_reorder_reordering_hint: Option<RayTracingInvocationReorderMode>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html#limits-renderMajor)"] + pub render_major: Option<i64>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html#limits-renderMinor)"] + pub render_minor: Option<i64>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-requiredSubgroupSizeStages)"] + pub required_subgroup_size_stages: Option<ShaderStages>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSparseProperties.html#limits-residencyAlignedMipSize)"] + pub residency_aligned_mip_size: bool, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSparseProperties.html#limits-residencyNonResidentStrict)"] + pub residency_non_resident_strict: bool, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSparseProperties.html#limits-residencyStandard2DBlockShape)"] + pub residency_standard2_d_block_shape: bool, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSparseProperties.html#limits-residencyStandard2DMultisampleBlockShape)"] + pub residency_standard2_d_multisample_block_shape: bool, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSparseProperties.html#limits-residencyStandard3DBlockShape)"] + pub residency_standard3_d_block_shape: bool, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-resourceDescriptorBufferAddressSpaceSize)"] + pub resource_descriptor_buffer_address_space_size: Option<DeviceSize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-robustBufferAccessUpdateAfterBind)"] + pub robust_buffer_access_update_after_bind: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html#limits-robustStorageBufferAccessSizeAlignment)"] + pub robust_storage_buffer_access_size_alignment: Option<DeviceAlignment>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-robustStorageBufferDescriptorSize)"] + pub robust_storage_buffer_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-robustStorageTexelBufferDescriptorSize)"] + pub robust_storage_texel_buffer_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html#limits-robustUniformBufferAccessSizeAlignment)"] + pub robust_uniform_buffer_access_size_alignment: Option<DeviceAlignment>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-robustUniformBufferDescriptorSize)"] + pub robust_uniform_buffer_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-robustUniformTexelBufferDescriptorSize)"] + pub robust_uniform_texel_buffer_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-roundingModeIndependence)"] + pub rounding_mode_independence: Option<ShaderFloatControlsIndependence>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html#limits-sampleLocationCoordinateRange)"] + pub sample_location_coordinate_range: Option<[f32; 2]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html#limits-sampleLocationSampleCounts)"] + pub sample_location_sample_counts: Option<SampleCounts>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html#limits-sampleLocationSubPixelBits)"] + pub sample_location_sub_pixel_bits: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-sampledImageColorSampleCounts)"] + pub sampled_image_color_sample_counts: SampleCounts, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-sampledImageDepthSampleCounts)"] + pub sampled_image_depth_sample_counts: SampleCounts, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-sampledImageDescriptorSize)"] + pub sampled_image_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-sampledImageIntegerSampleCounts)"] + pub sampled_image_integer_sample_counts: SampleCounts, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-sampledImageStencilSampleCounts)"] + pub sampled_image_stencil_sample_counts: SampleCounts, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-samplerCaptureReplayDescriptorDataSize)"] + pub sampler_capture_replay_descriptor_data_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-samplerDescriptorBufferAddressSpaceSize)"] + pub sampler_descriptor_buffer_address_space_size: Option<DeviceSize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-samplerDescriptorSize)"] + pub sampler_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-sgprAllocationGranularity)"] + pub sgpr_allocation_granularity: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-sgprsPerSimd)"] + pub sgprs_per_simd: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-shaderArraysPerEngineCount)"] + pub shader_arrays_per_engine_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html#limits-shaderCoreCount)"] + pub shader_core_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html#limits-shaderCoreFeatures)"] + pub shader_core_features: Option<ShaderCoreProperties>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html#limits-shaderCoreMask)"] + pub shader_core_mask: Option<u64>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderDenormFlushToZeroFloat16)"] + pub shader_denorm_flush_to_zero_float16: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderDenormFlushToZeroFloat32)"] + pub shader_denorm_flush_to_zero_float32: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderDenormFlushToZeroFloat64)"] + pub shader_denorm_flush_to_zero_float64: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderDenormPreserveFloat16)"] + pub shader_denorm_preserve_float16: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderDenormPreserveFloat32)"] + pub shader_denorm_preserve_float32: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderDenormPreserveFloat64)"] + pub shader_denorm_preserve_float64: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-shaderEngineCount)"] + pub shader_engine_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-shaderGroupBaseAlignment)"] + pub shader_group_base_alignment: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-shaderGroupHandleAlignment)"] + pub shader_group_handle_alignment: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-shaderGroupHandleCaptureReplaySize)"] + pub shader_group_handle_capture_replay_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-shaderGroupHandleSize)"] + pub shader_group_handle_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderInputAttachmentArrayNonUniformIndexingNative)"] + pub shader_input_attachment_array_non_uniform_indexing_native: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.html#limits-shaderModuleIdentifierAlgorithmUUID)"] + pub shader_module_identifier_algorithm_uuid: Option<[u8; 16]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderRoundingModeRTEFloat16)"] + pub shader_rounding_mode_rte_float16: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderRoundingModeRTEFloat32)"] + pub shader_rounding_mode_rte_float32: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderRoundingModeRTEFloat64)"] + pub shader_rounding_mode_rte_float64: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderRoundingModeRTZFloat16)"] + pub shader_rounding_mode_rtz_float16: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderRoundingModeRTZFloat32)"] + pub shader_rounding_mode_rtz_float32: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderRoundingModeRTZFloat64)"] + pub shader_rounding_mode_rtz_float64: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderSampledImageArrayNonUniformIndexingNative)"] + pub shader_sampled_image_array_non_uniform_indexing_native: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderSignedZeroInfNanPreserveFloat16)"] + pub shader_signed_zero_inf_nan_preserve_float16: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderSignedZeroInfNanPreserveFloat32)"] + pub shader_signed_zero_inf_nan_preserve_float32: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderSignedZeroInfNanPreserveFloat64)"] + pub shader_signed_zero_inf_nan_preserve_float64: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html#limits-shaderSMCount)"] + pub shader_sm_count: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderStorageBufferArrayNonUniformIndexingNative)"] + pub shader_storage_buffer_array_non_uniform_indexing_native: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderStorageImageArrayNonUniformIndexingNative)"] + pub shader_storage_image_array_non_uniform_indexing_native: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderUniformBufferArrayNonUniformIndexingNative)"] + pub shader_uniform_buffer_array_non_uniform_indexing_native: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html#limits-shaderWarpsPerCore)"] + pub shader_warps_per_core: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html#limits-shaderWarpsPerSM)"] + pub shader_warps_per_sm: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html#limits-shadingRateMaxCoarseSamples)"] + pub shading_rate_max_coarse_samples: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html#limits-shadingRatePaletteSize)"] + pub shading_rate_palette_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html#limits-shadingRateTexelSize)"] + pub shading_rate_texel_size: Option<[u32; 2]>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-simdPerComputeUnit)"] + pub simd_per_compute_unit: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-sparseAddressSpaceSize)"] + pub sparse_address_space_size: DeviceSize, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-standardSampleLocations)"] + pub standard_sample_locations: bool, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-storageBufferDescriptorSize)"] + pub storage_buffer_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-storageImageDescriptorSize)"] + pub storage_image_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-storageImageSampleCounts)"] + pub storage_image_sample_counts: SampleCounts, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-storageTexelBufferDescriptorSize)"] + pub storage_texel_buffer_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-storageTexelBufferOffsetAlignmentBytes)"] + pub storage_texel_buffer_offset_alignment_bytes: Option<DeviceAlignment>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-storageTexelBufferOffsetSingleTexelAlignment)"] + pub storage_texel_buffer_offset_single_texel_alignment: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-strictLines)"] + pub strict_lines: bool, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-subPixelInterpolationOffsetBits)"] + pub sub_pixel_interpolation_offset_bits: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-subPixelPrecisionBits)"] + pub sub_pixel_precision_bits: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-subTexelPrecisionBits)"] + pub sub_texel_precision_bits: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-subgroupQuadOperationsInAllStages)"] + pub subgroup_quad_operations_in_all_stages: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-subgroupSize)"] + pub subgroup_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-subgroupSupportedOperations)"] + pub subgroup_supported_operations: Option<SubgroupFeatures>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-subgroupSupportedStages)"] + pub subgroup_supported_stages: Option<ShaderStages>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html#limits-subsampledCoarseReconstructionEarlyAccess)"] + pub subsampled_coarse_reconstruction_early_access: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html#limits-subsampledLoads)"] + pub subsampled_loads: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-supportedDepthResolveModes)"] + pub supported_depth_resolve_modes: Option<ResolveModes>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-supportedHintGridSizes)"] + pub supported_hint_grid_sizes: Option<OpticalFlowGridSizes>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubgroupProperties.html#limits-supportedOperations)"] + pub supported_operations: Option<SubgroupFeatures>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-supportedOutputGridSizes)"] + pub supported_output_grid_sizes: Option<OpticalFlowGridSizes>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesNV.html#limits-supportedQueues)"] + pub supported_queues: Option<QueueFlags>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubgroupProperties.html#limits-supportedStages)"] + pub supported_stages: Option<ShaderStages>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-supportedStencilResolveModes)"] + pub supported_stencil_resolve_modes: Option<ResolveModes>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-timestampComputeAndGraphics)"] + pub timestamp_compute_and_graphics: bool, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-timestampPeriod)"] + pub timestamp_period: f32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-transformFeedbackDraw)"] + pub transform_feedback_draw: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html#limits-transformFeedbackPreservesTriangleFanProvokingVertex)"] + pub transform_feedback_preserves_triangle_fan_provoking_vertex: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-transformFeedbackQueries)"] + pub transform_feedback_queries: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-transformFeedbackRasterizationStreamSelect)"] + pub transform_feedback_rasterization_stream_select: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-transformFeedbackStreamsLinesTriangles)"] + pub transform_feedback_streams_lines_triangles: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.html#limits-triStripVertexOrderIndependentOfProvokingVertex)"] + pub tri_strip_vertex_order_independent_of_provoking_vertex: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-uniformBufferDescriptorSize)"] + pub uniform_buffer_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-uniformTexelBufferDescriptorSize)"] + pub uniform_texel_buffer_descriptor_size: Option<usize>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-uniformTexelBufferOffsetAlignmentBytes)"] + pub uniform_texel_buffer_offset_alignment_bytes: Option<DeviceAlignment>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-uniformTexelBufferOffsetSingleTexelAlignment)"] + pub uniform_texel_buffer_offset_single_texel_alignment: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html#limits-variableSampleLocations)"] + pub variable_sample_locations: Option<bool>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-vendorID)"] + pub vendor_id: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-vgprAllocationGranularity)"] + pub vgpr_allocation_granularity: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-vgprsPerSimd)"] + pub vgprs_per_simd: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-viewportBoundsRange)"] + pub viewport_bounds_range: [f32; 2], + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-viewportSubPixelBits)"] + pub viewport_sub_pixel_bits: u32, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-wavefrontSize)"] + pub wavefront_size: Option<u32>, + #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-wavefrontsPerSimd)"] + pub wavefronts_per_simd: Option<u32>, + pub _ne: crate::NonExhaustive, +} +impl Default for Properties { + fn default() -> Self { + Properties { acceleration_structure_capture_replay_descriptor_data_size : Default :: default () , acceleration_structure_descriptor_size : Default :: default () , active_compute_unit_count : Default :: default () , advanced_blend_all_operations : Default :: default () , advanced_blend_correlated_overlap : Default :: default () , advanced_blend_independent_blend : Default :: default () , advanced_blend_max_color_attachments : Default :: default () , advanced_blend_non_premultiplied_dst_color : Default :: default () , advanced_blend_non_premultiplied_src_color : Default :: default () , allow_command_buffer_query_copies : Default :: default () , allow_sampler_image_view_post_submit_creation : Default :: default () , api_version : Default :: default () , bidirectional_flow_supported : Default :: default () , buffer_capture_replay_descriptor_data_size : Default :: default () , buffer_image_granularity : Default :: default () , bufferless_push_descriptors : Default :: default () , combined_image_sampler_density_map_descriptor_size : Default :: default () , combined_image_sampler_descriptor_single_array : Default :: default () , combined_image_sampler_descriptor_size : Default :: default () , compute_units_per_shader_array : Default :: default () , conformance_version : Default :: default () , conservative_point_and_line_rasterization : Default :: default () , conservative_rasterization_post_depth_coverage : Default :: default () , cooperative_matrix_supported_stages : Default :: default () , cost_supported : Default :: default () , decompression_methods : Default :: default () , default_robustness_images : Default :: default () , default_robustness_storage_buffers : Default :: default () , default_robustness_uniform_buffers : Default :: default () , default_robustness_vertex_inputs : Default :: default () , degenerate_lines_rasterized : Default :: default () , degenerate_triangles_rasterized : Default :: default () , denorm_behavior_independence : Default :: default () , descriptor_buffer_address_space_size : Default :: default () , descriptor_buffer_offset_alignment : Default :: default () , device_id : Default :: default () , device_luid : Default :: default () , device_luid_valid : Default :: default () , device_name : Default :: default () , device_node_mask : Default :: default () , device_type : Default :: default () , device_uuid : Default :: default () , discrete_queue_priorities : Default :: default () , driver_id : Default :: default () , driver_info : Default :: default () , driver_name : Default :: default () , driver_uuid : Default :: default () , driver_version : Default :: default () , dynamic_primitive_topology_unrestricted : Default :: default () , extra_primitive_overestimation_size_granularity : Default :: default () , filter_minmax_image_component_mapping : Default :: default () , filter_minmax_single_component_formats : Default :: default () , fragment_density_invocations : Default :: default () , fragment_density_offset_granularity : Default :: default () , fragment_shading_rate_non_trivial_combiner_ops : Default :: default () , fragment_shading_rate_strict_multiply_combiner : Default :: default () , fragment_shading_rate_with_conservative_rasterization : Default :: default () , fragment_shading_rate_with_custom_sample_locations : Default :: default () , fragment_shading_rate_with_fragment_shader_interlock : Default :: default () , fragment_shading_rate_with_sample_mask : Default :: default () , fragment_shading_rate_with_shader_depth_stencil_writes : Default :: default () , fragment_shading_rate_with_shader_sample_mask : Default :: default () , framebuffer_color_sample_counts : Default :: default () , framebuffer_depth_sample_counts : Default :: default () , framebuffer_integer_color_sample_counts : Default :: default () , framebuffer_no_attachments_sample_counts : Default :: default () , framebuffer_stencil_sample_counts : Default :: default () , fully_covered_fragment_shader_input_variable : Default :: default () , global_flow_supported : Default :: default () , graphics_pipeline_library_fast_linking : Default :: default () , graphics_pipeline_library_independent_interpolation_decoration : Default :: default () , has_primary : Default :: default () , has_render : Default :: default () , hint_supported : Default :: default () , image_capture_replay_descriptor_data_size : Default :: default () , image_view_capture_replay_descriptor_data_size : Default :: default () , independent_resolve : Default :: default () , independent_resolve_none : Default :: default () , input_attachment_descriptor_size : Default :: default () , integer_dot_product16_bit_mixed_signedness_accelerated : Default :: default () , integer_dot_product16_bit_signed_accelerated : Default :: default () , integer_dot_product16_bit_unsigned_accelerated : Default :: default () , integer_dot_product32_bit_mixed_signedness_accelerated : Default :: default () , integer_dot_product32_bit_signed_accelerated : Default :: default () , integer_dot_product32_bit_unsigned_accelerated : Default :: default () , integer_dot_product4x8_bit_packed_mixed_signedness_accelerated : Default :: default () , integer_dot_product4x8_bit_packed_signed_accelerated : Default :: default () , integer_dot_product4x8_bit_packed_unsigned_accelerated : Default :: default () , integer_dot_product64_bit_mixed_signedness_accelerated : Default :: default () , integer_dot_product64_bit_signed_accelerated : Default :: default () , integer_dot_product64_bit_unsigned_accelerated : Default :: default () , integer_dot_product8_bit_mixed_signedness_accelerated : Default :: default () , integer_dot_product8_bit_signed_accelerated : Default :: default () , integer_dot_product8_bit_unsigned_accelerated : Default :: default () , integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated : Default :: default () , integer_dot_product_accumulating_saturating16_bit_signed_accelerated : Default :: default () , integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated : Default :: default () , integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated : Default :: default () , integer_dot_product_accumulating_saturating32_bit_signed_accelerated : Default :: default () , integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated : Default :: default () , integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated : Default :: default () , integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated : Default :: default () , integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated : Default :: default () , integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated : Default :: default () , integer_dot_product_accumulating_saturating64_bit_signed_accelerated : Default :: default () , integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated : Default :: default () , integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated : Default :: default () , integer_dot_product_accumulating_saturating8_bit_signed_accelerated : Default :: default () , integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated : Default :: default () , layered_shading_rate_attachments : Default :: default () , line_sub_pixel_precision_bits : Default :: default () , line_width_granularity : Default :: default () , line_width_range : Default :: default () , max_block_match_region : Default :: default () , max_bound_descriptor_sets : Default :: default () , max_box_filter_block_size : Default :: default () , max_buffer_size : Default :: default () , max_clip_distances : Default :: default () , max_color_attachments : Default :: default () , max_combined_clip_and_cull_distances : Default :: default () , max_compute_shared_memory_size : Default :: default () , max_compute_work_group_count : Default :: default () , max_compute_work_group_invocations : Default :: default () , max_compute_work_group_size : Default :: default () , max_compute_workgroup_subgroups : Default :: default () , max_cull_distances : Default :: default () , max_custom_border_color_samplers : Default :: default () , max_decompression_indirect_count : Default :: default () , max_descriptor_buffer_bindings : Default :: default () , max_descriptor_set_acceleration_structures : Default :: default () , max_descriptor_set_inline_uniform_blocks : Default :: default () , max_descriptor_set_input_attachments : Default :: default () , max_descriptor_set_sampled_images : Default :: default () , max_descriptor_set_samplers : Default :: default () , max_descriptor_set_storage_buffers : Default :: default () , max_descriptor_set_storage_buffers_dynamic : Default :: default () , max_descriptor_set_storage_images : Default :: default () , max_descriptor_set_subsampled_samplers : Default :: default () , max_descriptor_set_uniform_buffers : Default :: default () , max_descriptor_set_uniform_buffers_dynamic : Default :: default () , max_descriptor_set_update_after_bind_acceleration_structures : Default :: default () , max_descriptor_set_update_after_bind_inline_uniform_blocks : Default :: default () , max_descriptor_set_update_after_bind_input_attachments : Default :: default () , max_descriptor_set_update_after_bind_sampled_images : Default :: default () , max_descriptor_set_update_after_bind_samplers : Default :: default () , max_descriptor_set_update_after_bind_storage_buffers : Default :: default () , max_descriptor_set_update_after_bind_storage_buffers_dynamic : Default :: default () , max_descriptor_set_update_after_bind_storage_images : Default :: default () , max_descriptor_set_update_after_bind_uniform_buffers : Default :: default () , max_descriptor_set_update_after_bind_uniform_buffers_dynamic : Default :: default () , max_discard_rectangles : Default :: default () , max_draw_indexed_index_value : Default :: default () , max_draw_indirect_count : Default :: default () , max_draw_mesh_tasks_count : Default :: default () , max_embedded_immutable_sampler_bindings : Default :: default () , max_embedded_immutable_samplers : Default :: default () , max_extra_primitive_overestimation_size : Default :: default () , max_fragment_combined_output_resources : Default :: default () , max_fragment_density_texel_size : Default :: default () , max_fragment_dual_src_attachments : Default :: default () , max_fragment_input_components : Default :: default () , max_fragment_output_attachments : Default :: default () , max_fragment_shading_rate_attachment_texel_size : Default :: default () , max_fragment_shading_rate_attachment_texel_size_aspect_ratio : Default :: default () , max_fragment_shading_rate_coverage_samples : Default :: default () , max_fragment_shading_rate_invocation_count : Default :: default () , max_fragment_shading_rate_rasterization_samples : Default :: default () , max_fragment_size : Default :: default () , max_fragment_size_aspect_ratio : Default :: default () , max_framebuffer_height : Default :: default () , max_framebuffer_layers : Default :: default () , max_framebuffer_width : Default :: default () , max_geometry_count : Default :: default () , max_geometry_input_components : Default :: default () , max_geometry_output_components : Default :: default () , max_geometry_output_vertices : Default :: default () , max_geometry_shader_invocations : Default :: default () , max_geometry_total_output_components : Default :: default () , max_graphics_shader_group_count : Default :: default () , max_height : Default :: default () , max_image_array_layers : Default :: default () , max_image_dimension1_d : Default :: default () , max_image_dimension2_d : Default :: default () , max_image_dimension3_d : Default :: default () , max_image_dimension_cube : Default :: default () , max_indirect_commands_stream_count : Default :: default () , max_indirect_commands_stream_stride : Default :: default () , max_indirect_commands_token_count : Default :: default () , max_indirect_commands_token_offset : Default :: default () , max_indirect_sequence_count : Default :: default () , max_inline_uniform_block_size : Default :: default () , max_inline_uniform_total_size : Default :: default () , max_instance_count : Default :: default () , max_interpolation_offset : Default :: default () , max_memory_allocation_count : Default :: default () , max_memory_allocation_size : Default :: default () , max_mesh_multiview_view_count : Default :: default () , max_mesh_output_components : Default :: default () , max_mesh_output_layers : Default :: default () , max_mesh_output_memory_size : Default :: default () , max_mesh_output_primitives : Default :: default () , max_mesh_output_vertices : Default :: default () , max_mesh_payload_and_output_memory_size : Default :: default () , max_mesh_payload_and_shared_memory_size : Default :: default () , max_mesh_shared_memory_size : Default :: default () , max_mesh_total_memory_size : Default :: default () , max_mesh_work_group_count : Default :: default () , max_mesh_work_group_invocations : Default :: default () , max_mesh_work_group_size : Default :: default () , max_mesh_work_group_total_count : Default :: default () , max_multi_draw_count : Default :: default () , max_multiview_instance_index : Default :: default () , max_multiview_view_count : Default :: default () , max_num_regions_of_interest : Default :: default () , max_opacity2_state_subdivision_level : Default :: default () , max_opacity4_state_subdivision_level : Default :: default () , max_per_set_descriptors : Default :: default () , max_per_stage_descriptor_acceleration_structures : Default :: default () , max_per_stage_descriptor_inline_uniform_blocks : Default :: default () , max_per_stage_descriptor_input_attachments : Default :: default () , max_per_stage_descriptor_sampled_images : Default :: default () , max_per_stage_descriptor_samplers : Default :: default () , max_per_stage_descriptor_storage_buffers : Default :: default () , max_per_stage_descriptor_storage_images : Default :: default () , max_per_stage_descriptor_uniform_buffers : Default :: default () , max_per_stage_descriptor_update_after_bind_acceleration_structures : Default :: default () , max_per_stage_descriptor_update_after_bind_inline_uniform_blocks : Default :: default () , max_per_stage_descriptor_update_after_bind_input_attachments : Default :: default () , max_per_stage_descriptor_update_after_bind_sampled_images : Default :: default () , max_per_stage_descriptor_update_after_bind_samplers : Default :: default () , max_per_stage_descriptor_update_after_bind_storage_buffers : Default :: default () , max_per_stage_descriptor_update_after_bind_storage_images : Default :: default () , max_per_stage_descriptor_update_after_bind_uniform_buffers : Default :: default () , max_per_stage_resources : Default :: default () , max_per_stage_update_after_bind_resources : Default :: default () , max_preferred_mesh_work_group_invocations : Default :: default () , max_preferred_task_work_group_invocations : Default :: default () , max_primitive_count : Default :: default () , max_push_constants_size : Default :: default () , max_push_descriptors : Default :: default () , max_ray_dispatch_invocation_count : Default :: default () , max_ray_hit_attribute_size : Default :: default () , max_ray_recursion_depth : Default :: default () , max_recursion_depth : Default :: default () , max_resource_descriptor_buffer_bindings : Default :: default () , max_resource_descriptor_buffer_range : Default :: default () , max_sample_location_grid_size : Default :: default () , max_sample_mask_words : Default :: default () , max_sampler_allocation_count : Default :: default () , max_sampler_anisotropy : Default :: default () , max_sampler_descriptor_buffer_bindings : Default :: default () , max_sampler_descriptor_buffer_range : Default :: default () , max_sampler_lod_bias : Default :: default () , max_sgpr_allocation : Default :: default () , max_shader_group_stride : Default :: default () , max_storage_buffer_range : Default :: default () , max_subgroup_size : Default :: default () , max_subpass_shading_workgroup_size_aspect_ratio : Default :: default () , max_subsampled_array_layers : Default :: default () , max_task_output_count : Default :: default () , max_task_payload_and_shared_memory_size : Default :: default () , max_task_payload_size : Default :: default () , max_task_shared_memory_size : Default :: default () , max_task_total_memory_size : Default :: default () , max_task_work_group_count : Default :: default () , max_task_work_group_invocations : Default :: default () , max_task_work_group_size : Default :: default () , max_task_work_group_total_count : Default :: default () , max_tessellation_control_per_patch_output_components : Default :: default () , max_tessellation_control_per_vertex_input_components : Default :: default () , max_tessellation_control_per_vertex_output_components : Default :: default () , max_tessellation_control_total_output_components : Default :: default () , max_tessellation_evaluation_input_components : Default :: default () , max_tessellation_evaluation_output_components : Default :: default () , max_tessellation_generation_level : Default :: default () , max_tessellation_patch_size : Default :: default () , max_texel_buffer_elements : Default :: default () , max_texel_gather_offset : Default :: default () , max_texel_offset : Default :: default () , max_timeline_semaphore_value_difference : Default :: default () , max_transform_feedback_buffer_data_size : Default :: default () , max_transform_feedback_buffer_data_stride : Default :: default () , max_transform_feedback_buffer_size : Default :: default () , max_transform_feedback_buffers : Default :: default () , max_transform_feedback_stream_data_size : Default :: default () , max_transform_feedback_streams : Default :: default () , max_triangle_count : Default :: default () , max_uniform_buffer_range : Default :: default () , max_update_after_bind_descriptors_in_all_pools : Default :: default () , max_vertex_attrib_divisor : Default :: default () , max_vertex_input_attribute_offset : Default :: default () , max_vertex_input_attributes : Default :: default () , max_vertex_input_binding_stride : Default :: default () , max_vertex_input_bindings : Default :: default () , max_vertex_output_components : Default :: default () , max_vgpr_allocation : Default :: default () , max_viewport_dimensions : Default :: default () , max_viewports : Default :: default () , max_weight_filter_dimension : Default :: default () , max_weight_filter_phases : Default :: default () , max_width : Default :: default () , mesh_output_per_primitive_granularity : Default :: default () , mesh_output_per_vertex_granularity : Default :: default () , min_acceleration_structure_scratch_offset_alignment : Default :: default () , min_fragment_density_texel_size : Default :: default () , min_fragment_shading_rate_attachment_texel_size : Default :: default () , min_height : Default :: default () , min_imported_host_pointer_alignment : Default :: default () , min_indirect_commands_buffer_offset_alignment : Default :: default () , min_interpolation_offset : Default :: default () , min_memory_map_alignment : Default :: default () , min_sequences_count_buffer_offset_alignment : Default :: default () , min_sequences_index_buffer_offset_alignment : Default :: default () , min_sgpr_allocation : Default :: default () , min_storage_buffer_offset_alignment : Default :: default () , min_subgroup_size : Default :: default () , min_texel_buffer_offset_alignment : Default :: default () , min_texel_gather_offset : Default :: default () , min_texel_offset : Default :: default () , min_uniform_buffer_offset_alignment : Default :: default () , min_vertex_input_binding_stride_alignment : Default :: default () , min_vgpr_allocation : Default :: default () , min_width : Default :: default () , mipmap_precision_bits : Default :: default () , non_coherent_atom_size : Default :: default () , optimal_buffer_copy_offset_alignment : Default :: default () , optimal_buffer_copy_row_pitch_alignment : Default :: default () , pci_bus : Default :: default () , pci_device : Default :: default () , pci_domain : Default :: default () , pci_function : Default :: default () , per_view_position_all_components : Default :: default () , pipeline_cache_uuid : Default :: default () , point_clipping_behavior : Default :: default () , point_size_granularity : Default :: default () , point_size_range : Default :: default () , prefers_compact_primitive_output : Default :: default () , prefers_compact_vertex_output : Default :: default () , prefers_local_invocation_primitive_output : Default :: default () , prefers_local_invocation_vertex_output : Default :: default () , primary_major : Default :: default () , primary_minor : Default :: default () , primitive_fragment_shading_rate_with_multiple_viewports : Default :: default () , primitive_overestimation_size : Default :: default () , primitive_underestimation : Default :: default () , protected_no_fault : Default :: default () , provoking_vertex_mode_per_pipeline : Default :: default () , quad_divergent_implicit_lod : Default :: default () , quad_operations_in_all_stages : Default :: default () , ray_tracing_invocation_reorder_reordering_hint : Default :: default () , render_major : Default :: default () , render_minor : Default :: default () , required_subgroup_size_stages : Default :: default () , residency_aligned_mip_size : Default :: default () , residency_non_resident_strict : Default :: default () , residency_standard2_d_block_shape : Default :: default () , residency_standard2_d_multisample_block_shape : Default :: default () , residency_standard3_d_block_shape : Default :: default () , resource_descriptor_buffer_address_space_size : Default :: default () , robust_buffer_access_update_after_bind : Default :: default () , robust_storage_buffer_access_size_alignment : Default :: default () , robust_storage_buffer_descriptor_size : Default :: default () , robust_storage_texel_buffer_descriptor_size : Default :: default () , robust_uniform_buffer_access_size_alignment : Default :: default () , robust_uniform_buffer_descriptor_size : Default :: default () , robust_uniform_texel_buffer_descriptor_size : Default :: default () , rounding_mode_independence : Default :: default () , sample_location_coordinate_range : Default :: default () , sample_location_sample_counts : Default :: default () , sample_location_sub_pixel_bits : Default :: default () , sampled_image_color_sample_counts : Default :: default () , sampled_image_depth_sample_counts : Default :: default () , sampled_image_descriptor_size : Default :: default () , sampled_image_integer_sample_counts : Default :: default () , sampled_image_stencil_sample_counts : Default :: default () , sampler_capture_replay_descriptor_data_size : Default :: default () , sampler_descriptor_buffer_address_space_size : Default :: default () , sampler_descriptor_size : Default :: default () , sgpr_allocation_granularity : Default :: default () , sgprs_per_simd : Default :: default () , shader_arrays_per_engine_count : Default :: default () , shader_core_count : Default :: default () , shader_core_features : Default :: default () , shader_core_mask : Default :: default () , shader_denorm_flush_to_zero_float16 : Default :: default () , shader_denorm_flush_to_zero_float32 : Default :: default () , shader_denorm_flush_to_zero_float64 : Default :: default () , shader_denorm_preserve_float16 : Default :: default () , shader_denorm_preserve_float32 : Default :: default () , shader_denorm_preserve_float64 : Default :: default () , shader_engine_count : Default :: default () , shader_group_base_alignment : Default :: default () , shader_group_handle_alignment : Default :: default () , shader_group_handle_capture_replay_size : Default :: default () , shader_group_handle_size : Default :: default () , shader_input_attachment_array_non_uniform_indexing_native : Default :: default () , shader_module_identifier_algorithm_uuid : Default :: default () , shader_rounding_mode_rte_float16 : Default :: default () , shader_rounding_mode_rte_float32 : Default :: default () , shader_rounding_mode_rte_float64 : Default :: default () , shader_rounding_mode_rtz_float16 : Default :: default () , shader_rounding_mode_rtz_float32 : Default :: default () , shader_rounding_mode_rtz_float64 : Default :: default () , shader_sampled_image_array_non_uniform_indexing_native : Default :: default () , shader_signed_zero_inf_nan_preserve_float16 : Default :: default () , shader_signed_zero_inf_nan_preserve_float32 : Default :: default () , shader_signed_zero_inf_nan_preserve_float64 : Default :: default () , shader_sm_count : Default :: default () , shader_storage_buffer_array_non_uniform_indexing_native : Default :: default () , shader_storage_image_array_non_uniform_indexing_native : Default :: default () , shader_uniform_buffer_array_non_uniform_indexing_native : Default :: default () , shader_warps_per_core : Default :: default () , shader_warps_per_sm : Default :: default () , shading_rate_max_coarse_samples : Default :: default () , shading_rate_palette_size : Default :: default () , shading_rate_texel_size : Default :: default () , simd_per_compute_unit : Default :: default () , sparse_address_space_size : Default :: default () , standard_sample_locations : Default :: default () , storage_buffer_descriptor_size : Default :: default () , storage_image_descriptor_size : Default :: default () , storage_image_sample_counts : Default :: default () , storage_texel_buffer_descriptor_size : Default :: default () , storage_texel_buffer_offset_alignment_bytes : Default :: default () , storage_texel_buffer_offset_single_texel_alignment : Default :: default () , strict_lines : Default :: default () , sub_pixel_interpolation_offset_bits : Default :: default () , sub_pixel_precision_bits : Default :: default () , sub_texel_precision_bits : Default :: default () , subgroup_quad_operations_in_all_stages : Default :: default () , subgroup_size : Default :: default () , subgroup_supported_operations : Default :: default () , subgroup_supported_stages : Default :: default () , subsampled_coarse_reconstruction_early_access : Default :: default () , subsampled_loads : Default :: default () , supported_depth_resolve_modes : Default :: default () , supported_hint_grid_sizes : Default :: default () , supported_operations : Default :: default () , supported_output_grid_sizes : Default :: default () , supported_queues : Default :: default () , supported_stages : Default :: default () , supported_stencil_resolve_modes : Default :: default () , timestamp_compute_and_graphics : Default :: default () , timestamp_period : Default :: default () , transform_feedback_draw : Default :: default () , transform_feedback_preserves_triangle_fan_provoking_vertex : Default :: default () , transform_feedback_queries : Default :: default () , transform_feedback_rasterization_stream_select : Default :: default () , transform_feedback_streams_lines_triangles : Default :: default () , tri_strip_vertex_order_independent_of_provoking_vertex : Default :: default () , uniform_buffer_descriptor_size : Default :: default () , uniform_texel_buffer_descriptor_size : Default :: default () , uniform_texel_buffer_offset_alignment_bytes : Default :: default () , uniform_texel_buffer_offset_single_texel_alignment : Default :: default () , variable_sample_locations : Default :: default () , vendor_id : Default :: default () , vgpr_allocation_granularity : Default :: default () , vgprs_per_simd : Default :: default () , viewport_bounds_range : Default :: default () , viewport_sub_pixel_bits : Default :: default () , wavefront_size : Default :: default () , wavefronts_per_simd : Default :: default () , _ne : crate :: NonExhaustive (()) , } + } +} +impl From<&PropertiesFfi> for Properties { + fn from(properties_ffi: &PropertiesFfi) -> Self { + Properties { acceleration_structure_capture_replay_descriptor_data_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . acceleration_structure_capture_replay_descriptor_data_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , acceleration_structure_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . acceleration_structure_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , active_compute_unit_count : [properties_ffi . properties_shader_core2_amd . map (| s | s . active_compute_unit_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , advanced_blend_all_operations : [properties_ffi . properties_blend_operation_advanced_ext . map (| s | s . advanced_blend_all_operations)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , advanced_blend_correlated_overlap : [properties_ffi . properties_blend_operation_advanced_ext . map (| s | s . advanced_blend_correlated_overlap)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , advanced_blend_independent_blend : [properties_ffi . properties_blend_operation_advanced_ext . map (| s | s . advanced_blend_independent_blend)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , advanced_blend_max_color_attachments : [properties_ffi . properties_blend_operation_advanced_ext . map (| s | s . advanced_blend_max_color_attachments)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , advanced_blend_non_premultiplied_dst_color : [properties_ffi . properties_blend_operation_advanced_ext . map (| s | s . advanced_blend_non_premultiplied_dst_color)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , advanced_blend_non_premultiplied_src_color : [properties_ffi . properties_blend_operation_advanced_ext . map (| s | s . advanced_blend_non_premultiplied_src_color)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , allow_command_buffer_query_copies : [properties_ffi . properties_performance_query_khr . map (| s | s . allow_command_buffer_query_copies)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , allow_sampler_image_view_post_submit_creation : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . allow_sampler_image_view_post_submit_creation)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , api_version : [properties_ffi . properties_vulkan10 . properties . api_version] . into_iter () . next () . and_then (< Version > :: from_vulkan) . unwrap () , bidirectional_flow_supported : [properties_ffi . properties_optical_flow_nv . map (| s | s . bidirectional_flow_supported)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , buffer_capture_replay_descriptor_data_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . buffer_capture_replay_descriptor_data_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , buffer_image_granularity : [properties_ffi . properties_vulkan10 . properties . limits . buffer_image_granularity] . into_iter () . next () . and_then (< DeviceAlignment > :: from_vulkan) . unwrap () , bufferless_push_descriptors : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . bufferless_push_descriptors)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , combined_image_sampler_density_map_descriptor_size : [properties_ffi . properties_descriptor_buffer_density_map_ext . map (| s | s . combined_image_sampler_density_map_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , combined_image_sampler_descriptor_single_array : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . combined_image_sampler_descriptor_single_array)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , combined_image_sampler_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . combined_image_sampler_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , compute_units_per_shader_array : [properties_ffi . properties_shader_core_amd . map (| s | s . compute_units_per_shader_array)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , conformance_version : [properties_ffi . properties_vulkan12 . map (| s | s . conformance_version) , properties_ffi . properties_driver . map (| s | s . conformance_version)] . into_iter () . flatten () . next () . and_then (< ConformanceVersion > :: from_vulkan) , conservative_point_and_line_rasterization : [properties_ffi . properties_conservative_rasterization_ext . map (| s | s . conservative_point_and_line_rasterization)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , conservative_rasterization_post_depth_coverage : [properties_ffi . properties_conservative_rasterization_ext . map (| s | s . conservative_rasterization_post_depth_coverage)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , cooperative_matrix_supported_stages : [properties_ffi . properties_cooperative_matrix_nv . map (| s | s . cooperative_matrix_supported_stages)] . into_iter () . flatten () . next () . and_then (< ShaderStages > :: from_vulkan) , cost_supported : [properties_ffi . properties_optical_flow_nv . map (| s | s . cost_supported)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , decompression_methods : [properties_ffi . properties_memory_decompression_nv . map (| s | s . decompression_methods)] . into_iter () . flatten () . next () . and_then (< MemoryDecompressionMethods > :: from_vulkan) , default_robustness_images : [properties_ffi . properties_pipeline_robustness_ext . map (| s | s . default_robustness_images)] . into_iter () . flatten () . next () . and_then (< PipelineRobustnessImageBehavior > :: from_vulkan) , default_robustness_storage_buffers : [properties_ffi . properties_pipeline_robustness_ext . map (| s | s . default_robustness_storage_buffers)] . into_iter () . flatten () . next () . and_then (< PipelineRobustnessBufferBehavior > :: from_vulkan) , default_robustness_uniform_buffers : [properties_ffi . properties_pipeline_robustness_ext . map (| s | s . default_robustness_uniform_buffers)] . into_iter () . flatten () . next () . and_then (< PipelineRobustnessBufferBehavior > :: from_vulkan) , default_robustness_vertex_inputs : [properties_ffi . properties_pipeline_robustness_ext . map (| s | s . default_robustness_vertex_inputs)] . into_iter () . flatten () . next () . and_then (< PipelineRobustnessBufferBehavior > :: from_vulkan) , degenerate_lines_rasterized : [properties_ffi . properties_conservative_rasterization_ext . map (| s | s . degenerate_lines_rasterized)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , degenerate_triangles_rasterized : [properties_ffi . properties_conservative_rasterization_ext . map (| s | s . degenerate_triangles_rasterized)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , denorm_behavior_independence : [properties_ffi . properties_vulkan12 . map (| s | s . denorm_behavior_independence) , properties_ffi . properties_float_controls . map (| s | s . denorm_behavior_independence)] . into_iter () . flatten () . next () . and_then (< ShaderFloatControlsIndependence > :: from_vulkan) , descriptor_buffer_address_space_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . descriptor_buffer_address_space_size)] . into_iter () . flatten () . next () . and_then (< DeviceSize > :: from_vulkan) , descriptor_buffer_offset_alignment : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . descriptor_buffer_offset_alignment)] . into_iter () . flatten () . next () . and_then (< DeviceSize > :: from_vulkan) , device_id : [properties_ffi . properties_vulkan10 . properties . device_id] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , device_luid : [properties_ffi . properties_vulkan11 . map (| s | s . device_luid) , properties_ffi . properties_id . map (| s | s . device_luid)] . into_iter () . flatten () . next () . and_then (< [u8 ; 8] > :: from_vulkan) , device_luid_valid : [properties_ffi . properties_vulkan11 . map (| s | s . device_luid_valid) , properties_ffi . properties_id . map (| s | s . device_luid_valid)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , device_name : [properties_ffi . properties_vulkan10 . properties . device_name] . into_iter () . next () . and_then (< String > :: from_vulkan) . unwrap () , device_node_mask : [properties_ffi . properties_vulkan11 . map (| s | s . device_node_mask) , properties_ffi . properties_id . map (| s | s . device_node_mask)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , device_type : [properties_ffi . properties_vulkan10 . properties . device_type] . into_iter () . next () . and_then (< PhysicalDeviceType > :: from_vulkan) . unwrap () , device_uuid : [properties_ffi . properties_vulkan11 . map (| s | s . device_uuid) , properties_ffi . properties_id . map (| s | s . device_uuid)] . into_iter () . flatten () . next () . and_then (< [u8 ; 16] > :: from_vulkan) , discrete_queue_priorities : [properties_ffi . properties_vulkan10 . properties . limits . discrete_queue_priorities] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , driver_id : [properties_ffi . properties_vulkan12 . map (| s | s . driver_id) , properties_ffi . properties_driver . map (| s | s . driver_id)] . into_iter () . flatten () . next () . and_then (< DriverId > :: from_vulkan) , driver_info : [properties_ffi . properties_vulkan12 . map (| s | s . driver_info) , properties_ffi . properties_driver . map (| s | s . driver_info)] . into_iter () . flatten () . next () . and_then (< String > :: from_vulkan) , driver_name : [properties_ffi . properties_vulkan12 . map (| s | s . driver_name) , properties_ffi . properties_driver . map (| s | s . driver_name)] . into_iter () . flatten () . next () . and_then (< String > :: from_vulkan) , driver_uuid : [properties_ffi . properties_vulkan11 . map (| s | s . driver_uuid) , properties_ffi . properties_id . map (| s | s . driver_uuid)] . into_iter () . flatten () . next () . and_then (< [u8 ; 16] > :: from_vulkan) , driver_version : [properties_ffi . properties_vulkan10 . properties . driver_version] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , dynamic_primitive_topology_unrestricted : [properties_ffi . properties_extended_dynamic_state3_ext . map (| s | s . dynamic_primitive_topology_unrestricted)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , extra_primitive_overestimation_size_granularity : [properties_ffi . properties_conservative_rasterization_ext . map (| s | s . extra_primitive_overestimation_size_granularity)] . into_iter () . flatten () . next () . and_then (< f32 > :: from_vulkan) , filter_minmax_image_component_mapping : [properties_ffi . properties_vulkan12 . map (| s | s . filter_minmax_image_component_mapping) , properties_ffi . properties_sampler_filter_minmax . map (| s | s . filter_minmax_image_component_mapping)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , filter_minmax_single_component_formats : [properties_ffi . properties_vulkan12 . map (| s | s . filter_minmax_single_component_formats) , properties_ffi . properties_sampler_filter_minmax . map (| s | s . filter_minmax_single_component_formats)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , fragment_density_invocations : [properties_ffi . properties_fragment_density_map_ext . map (| s | s . fragment_density_invocations)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , fragment_density_offset_granularity : [properties_ffi . properties_fragment_density_map_offset_qcom . map (| s | s . fragment_density_offset_granularity)] . into_iter () . flatten () . next () . and_then (< [u32 ; 2] > :: from_vulkan) , fragment_shading_rate_non_trivial_combiner_ops : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . fragment_shading_rate_non_trivial_combiner_ops)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , fragment_shading_rate_strict_multiply_combiner : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . fragment_shading_rate_strict_multiply_combiner)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , fragment_shading_rate_with_conservative_rasterization : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . fragment_shading_rate_with_conservative_rasterization)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , fragment_shading_rate_with_custom_sample_locations : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . fragment_shading_rate_with_custom_sample_locations)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , fragment_shading_rate_with_fragment_shader_interlock : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . fragment_shading_rate_with_fragment_shader_interlock)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , fragment_shading_rate_with_sample_mask : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . fragment_shading_rate_with_sample_mask)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , fragment_shading_rate_with_shader_depth_stencil_writes : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . fragment_shading_rate_with_shader_depth_stencil_writes)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , fragment_shading_rate_with_shader_sample_mask : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . fragment_shading_rate_with_shader_sample_mask)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , framebuffer_color_sample_counts : [properties_ffi . properties_vulkan10 . properties . limits . framebuffer_color_sample_counts] . into_iter () . next () . and_then (< SampleCounts > :: from_vulkan) . unwrap () , framebuffer_depth_sample_counts : [properties_ffi . properties_vulkan10 . properties . limits . framebuffer_depth_sample_counts] . into_iter () . next () . and_then (< SampleCounts > :: from_vulkan) . unwrap () , framebuffer_integer_color_sample_counts : [properties_ffi . properties_vulkan12 . map (| s | s . framebuffer_integer_color_sample_counts)] . into_iter () . flatten () . next () . and_then (< SampleCounts > :: from_vulkan) , framebuffer_no_attachments_sample_counts : [properties_ffi . properties_vulkan10 . properties . limits . framebuffer_no_attachments_sample_counts] . into_iter () . next () . and_then (< SampleCounts > :: from_vulkan) . unwrap () , framebuffer_stencil_sample_counts : [properties_ffi . properties_vulkan10 . properties . limits . framebuffer_stencil_sample_counts] . into_iter () . next () . and_then (< SampleCounts > :: from_vulkan) . unwrap () , fully_covered_fragment_shader_input_variable : [properties_ffi . properties_conservative_rasterization_ext . map (| s | s . fully_covered_fragment_shader_input_variable)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , global_flow_supported : [properties_ffi . properties_optical_flow_nv . map (| s | s . global_flow_supported)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , graphics_pipeline_library_fast_linking : [properties_ffi . properties_graphics_pipeline_library_ext . map (| s | s . graphics_pipeline_library_fast_linking)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , graphics_pipeline_library_independent_interpolation_decoration : [properties_ffi . properties_graphics_pipeline_library_ext . map (| s | s . graphics_pipeline_library_independent_interpolation_decoration)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , has_primary : [properties_ffi . properties_drm_ext . map (| s | s . has_primary)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , has_render : [properties_ffi . properties_drm_ext . map (| s | s . has_render)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , hint_supported : [properties_ffi . properties_optical_flow_nv . map (| s | s . hint_supported)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , image_capture_replay_descriptor_data_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . image_capture_replay_descriptor_data_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , image_view_capture_replay_descriptor_data_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . image_view_capture_replay_descriptor_data_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , independent_resolve : [properties_ffi . properties_vulkan12 . map (| s | s . independent_resolve) , properties_ffi . properties_depth_stencil_resolve . map (| s | s . independent_resolve)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , independent_resolve_none : [properties_ffi . properties_vulkan12 . map (| s | s . independent_resolve_none) , properties_ffi . properties_depth_stencil_resolve . map (| s | s . independent_resolve_none)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , input_attachment_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . input_attachment_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , integer_dot_product16_bit_mixed_signedness_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product16_bit_mixed_signedness_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product16_bit_mixed_signedness_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product16_bit_signed_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product16_bit_signed_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product16_bit_signed_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product16_bit_unsigned_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product16_bit_unsigned_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product16_bit_unsigned_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product32_bit_mixed_signedness_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product32_bit_mixed_signedness_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product32_bit_mixed_signedness_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product32_bit_signed_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product32_bit_signed_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product32_bit_signed_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product32_bit_unsigned_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product32_bit_unsigned_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product32_bit_unsigned_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product4x8_bit_packed_mixed_signedness_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product4x8_bit_packed_mixed_signedness_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product4x8_bit_packed_mixed_signedness_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product4x8_bit_packed_signed_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product4x8_bit_packed_signed_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product4x8_bit_packed_signed_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product4x8_bit_packed_unsigned_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product4x8_bit_packed_unsigned_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product4x8_bit_packed_unsigned_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product64_bit_mixed_signedness_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product64_bit_mixed_signedness_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product64_bit_mixed_signedness_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product64_bit_signed_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product64_bit_signed_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product64_bit_signed_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product64_bit_unsigned_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product64_bit_unsigned_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product64_bit_unsigned_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product8_bit_mixed_signedness_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product8_bit_mixed_signedness_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product8_bit_mixed_signedness_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product8_bit_signed_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product8_bit_signed_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product8_bit_signed_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product8_bit_unsigned_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product8_bit_unsigned_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product8_bit_unsigned_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating16_bit_signed_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating16_bit_signed_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating16_bit_signed_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating32_bit_signed_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating32_bit_signed_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating32_bit_signed_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating64_bit_signed_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating64_bit_signed_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating64_bit_signed_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating8_bit_signed_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating8_bit_signed_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating8_bit_signed_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated : [properties_ffi . properties_vulkan13 . map (| s | s . integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated) , properties_ffi . properties_shader_integer_dot_product . map (| s | s . integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , layered_shading_rate_attachments : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . layered_shading_rate_attachments)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , line_sub_pixel_precision_bits : [properties_ffi . properties_line_rasterization_ext . map (| s | s . line_sub_pixel_precision_bits)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , line_width_granularity : [properties_ffi . properties_vulkan10 . properties . limits . line_width_granularity] . into_iter () . next () . and_then (< f32 > :: from_vulkan) . unwrap () , line_width_range : [properties_ffi . properties_vulkan10 . properties . limits . line_width_range] . into_iter () . next () . and_then (< [f32 ; 2] > :: from_vulkan) . unwrap () , max_block_match_region : [properties_ffi . properties_image_processing_qcom . map (| s | s . max_block_match_region)] . into_iter () . flatten () . next () . and_then (< [u32 ; 2] > :: from_vulkan) , max_bound_descriptor_sets : [properties_ffi . properties_vulkan10 . properties . limits . max_bound_descriptor_sets] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_box_filter_block_size : [properties_ffi . properties_image_processing_qcom . map (| s | s . max_box_filter_block_size)] . into_iter () . flatten () . next () . and_then (< [u32 ; 2] > :: from_vulkan) , max_buffer_size : [properties_ffi . properties_vulkan13 . map (| s | s . max_buffer_size) , properties_ffi . properties_maintenance4 . map (| s | s . max_buffer_size)] . into_iter () . flatten () . next () . and_then (< DeviceSize > :: from_vulkan) , max_clip_distances : [properties_ffi . properties_vulkan10 . properties . limits . max_clip_distances] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_color_attachments : [properties_ffi . properties_vulkan10 . properties . limits . max_color_attachments] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_combined_clip_and_cull_distances : [properties_ffi . properties_vulkan10 . properties . limits . max_combined_clip_and_cull_distances] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_compute_shared_memory_size : [properties_ffi . properties_vulkan10 . properties . limits . max_compute_shared_memory_size] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_compute_work_group_count : [properties_ffi . properties_vulkan10 . properties . limits . max_compute_work_group_count] . into_iter () . next () . and_then (< [u32 ; 3] > :: from_vulkan) . unwrap () , max_compute_work_group_invocations : [properties_ffi . properties_vulkan10 . properties . limits . max_compute_work_group_invocations] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_compute_work_group_size : [properties_ffi . properties_vulkan10 . properties . limits . max_compute_work_group_size] . into_iter () . next () . and_then (< [u32 ; 3] > :: from_vulkan) . unwrap () , max_compute_workgroup_subgroups : [properties_ffi . properties_vulkan13 . map (| s | s . max_compute_workgroup_subgroups) , properties_ffi . properties_subgroup_size_control . map (| s | s . max_compute_workgroup_subgroups)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_cull_distances : [properties_ffi . properties_vulkan10 . properties . limits . max_cull_distances] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_custom_border_color_samplers : [properties_ffi . properties_custom_border_color_ext . map (| s | s . max_custom_border_color_samplers)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_decompression_indirect_count : [properties_ffi . properties_memory_decompression_nv . map (| s | s . max_decompression_indirect_count)] . into_iter () . flatten () . next () . and_then (< u64 > :: from_vulkan) , max_descriptor_buffer_bindings : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . max_descriptor_buffer_bindings)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_acceleration_structures : [properties_ffi . properties_acceleration_structure_khr . map (| s | s . max_descriptor_set_acceleration_structures) , properties_ffi . properties_ray_tracing_nv . map (| s | s . max_descriptor_set_acceleration_structures)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_inline_uniform_blocks : [properties_ffi . properties_vulkan13 . map (| s | s . max_descriptor_set_inline_uniform_blocks) , properties_ffi . properties_inline_uniform_block . map (| s | s . max_descriptor_set_inline_uniform_blocks)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_input_attachments : [properties_ffi . properties_vulkan10 . properties . limits . max_descriptor_set_input_attachments] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_descriptor_set_sampled_images : [properties_ffi . properties_vulkan10 . properties . limits . max_descriptor_set_sampled_images] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_descriptor_set_samplers : [properties_ffi . properties_vulkan10 . properties . limits . max_descriptor_set_samplers] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_descriptor_set_storage_buffers : [properties_ffi . properties_vulkan10 . properties . limits . max_descriptor_set_storage_buffers] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_descriptor_set_storage_buffers_dynamic : [properties_ffi . properties_vulkan10 . properties . limits . max_descriptor_set_storage_buffers_dynamic] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_descriptor_set_storage_images : [properties_ffi . properties_vulkan10 . properties . limits . max_descriptor_set_storage_images] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_descriptor_set_subsampled_samplers : [properties_ffi . properties_fragment_density_map2_ext . map (| s | s . max_descriptor_set_subsampled_samplers)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_uniform_buffers : [properties_ffi . properties_vulkan10 . properties . limits . max_descriptor_set_uniform_buffers] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_descriptor_set_uniform_buffers_dynamic : [properties_ffi . properties_vulkan10 . properties . limits . max_descriptor_set_uniform_buffers_dynamic] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_descriptor_set_update_after_bind_acceleration_structures : [properties_ffi . properties_acceleration_structure_khr . map (| s | s . max_descriptor_set_update_after_bind_acceleration_structures)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_update_after_bind_inline_uniform_blocks : [properties_ffi . properties_vulkan13 . map (| s | s . max_descriptor_set_update_after_bind_inline_uniform_blocks) , properties_ffi . properties_inline_uniform_block . map (| s | s . max_descriptor_set_update_after_bind_inline_uniform_blocks)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_update_after_bind_input_attachments : [properties_ffi . properties_vulkan12 . map (| s | s . max_descriptor_set_update_after_bind_input_attachments) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_descriptor_set_update_after_bind_input_attachments)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_update_after_bind_sampled_images : [properties_ffi . properties_vulkan12 . map (| s | s . max_descriptor_set_update_after_bind_sampled_images) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_descriptor_set_update_after_bind_sampled_images)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_update_after_bind_samplers : [properties_ffi . properties_vulkan12 . map (| s | s . max_descriptor_set_update_after_bind_samplers) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_descriptor_set_update_after_bind_samplers)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_update_after_bind_storage_buffers : [properties_ffi . properties_vulkan12 . map (| s | s . max_descriptor_set_update_after_bind_storage_buffers) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_descriptor_set_update_after_bind_storage_buffers)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_update_after_bind_storage_buffers_dynamic : [properties_ffi . properties_vulkan12 . map (| s | s . max_descriptor_set_update_after_bind_storage_buffers_dynamic) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_descriptor_set_update_after_bind_storage_buffers_dynamic)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_update_after_bind_storage_images : [properties_ffi . properties_vulkan12 . map (| s | s . max_descriptor_set_update_after_bind_storage_images) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_descriptor_set_update_after_bind_storage_images)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_update_after_bind_uniform_buffers : [properties_ffi . properties_vulkan12 . map (| s | s . max_descriptor_set_update_after_bind_uniform_buffers) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_descriptor_set_update_after_bind_uniform_buffers)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_descriptor_set_update_after_bind_uniform_buffers_dynamic : [properties_ffi . properties_vulkan12 . map (| s | s . max_descriptor_set_update_after_bind_uniform_buffers_dynamic) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_descriptor_set_update_after_bind_uniform_buffers_dynamic)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_discard_rectangles : [properties_ffi . properties_discard_rectangle_ext . map (| s | s . max_discard_rectangles)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_draw_indexed_index_value : [properties_ffi . properties_vulkan10 . properties . limits . max_draw_indexed_index_value] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_draw_indirect_count : [properties_ffi . properties_vulkan10 . properties . limits . max_draw_indirect_count] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_draw_mesh_tasks_count : [properties_ffi . properties_mesh_shader_nv . map (| s | s . max_draw_mesh_tasks_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_embedded_immutable_sampler_bindings : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . max_embedded_immutable_sampler_bindings)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_embedded_immutable_samplers : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . max_embedded_immutable_samplers)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_extra_primitive_overestimation_size : [properties_ffi . properties_conservative_rasterization_ext . map (| s | s . max_extra_primitive_overestimation_size)] . into_iter () . flatten () . next () . and_then (< f32 > :: from_vulkan) , max_fragment_combined_output_resources : [properties_ffi . properties_vulkan10 . properties . limits . max_fragment_combined_output_resources] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_fragment_density_texel_size : [properties_ffi . properties_fragment_density_map_ext . map (| s | s . max_fragment_density_texel_size)] . into_iter () . flatten () . next () . and_then (< [u32 ; 2] > :: from_vulkan) , max_fragment_dual_src_attachments : [properties_ffi . properties_vulkan10 . properties . limits . max_fragment_dual_src_attachments] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_fragment_input_components : [properties_ffi . properties_vulkan10 . properties . limits . max_fragment_input_components] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_fragment_output_attachments : [properties_ffi . properties_vulkan10 . properties . limits . max_fragment_output_attachments] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_fragment_shading_rate_attachment_texel_size : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . max_fragment_shading_rate_attachment_texel_size)] . into_iter () . flatten () . next () . and_then (< [u32 ; 2] > :: from_vulkan) , max_fragment_shading_rate_attachment_texel_size_aspect_ratio : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . max_fragment_shading_rate_attachment_texel_size_aspect_ratio)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_fragment_shading_rate_coverage_samples : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . max_fragment_shading_rate_coverage_samples)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_fragment_shading_rate_invocation_count : [properties_ffi . properties_fragment_shading_rate_enums_nv . map (| s | s . max_fragment_shading_rate_invocation_count)] . into_iter () . flatten () . next () . and_then (< SampleCount > :: from_vulkan) , max_fragment_shading_rate_rasterization_samples : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . max_fragment_shading_rate_rasterization_samples)] . into_iter () . flatten () . next () . and_then (< SampleCount > :: from_vulkan) , max_fragment_size : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . max_fragment_size)] . into_iter () . flatten () . next () . and_then (< [u32 ; 2] > :: from_vulkan) , max_fragment_size_aspect_ratio : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . max_fragment_size_aspect_ratio)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_framebuffer_height : [properties_ffi . properties_vulkan10 . properties . limits . max_framebuffer_height] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_framebuffer_layers : [properties_ffi . properties_vulkan10 . properties . limits . max_framebuffer_layers] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_framebuffer_width : [properties_ffi . properties_vulkan10 . properties . limits . max_framebuffer_width] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_geometry_count : [properties_ffi . properties_acceleration_structure_khr . map (| s | s . max_geometry_count) , properties_ffi . properties_ray_tracing_nv . map (| s | s . max_geometry_count)] . into_iter () . flatten () . next () . and_then (< u64 > :: from_vulkan) , max_geometry_input_components : [properties_ffi . properties_vulkan10 . properties . limits . max_geometry_input_components] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_geometry_output_components : [properties_ffi . properties_vulkan10 . properties . limits . max_geometry_output_components] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_geometry_output_vertices : [properties_ffi . properties_vulkan10 . properties . limits . max_geometry_output_vertices] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_geometry_shader_invocations : [properties_ffi . properties_vulkan10 . properties . limits . max_geometry_shader_invocations] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_geometry_total_output_components : [properties_ffi . properties_vulkan10 . properties . limits . max_geometry_total_output_components] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_graphics_shader_group_count : [properties_ffi . properties_device_generated_commands_nv . map (| s | s . max_graphics_shader_group_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_height : [properties_ffi . properties_optical_flow_nv . map (| s | s . max_height)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_image_array_layers : [properties_ffi . properties_vulkan10 . properties . limits . max_image_array_layers] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_image_dimension1_d : [properties_ffi . properties_vulkan10 . properties . limits . max_image_dimension1_d] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_image_dimension2_d : [properties_ffi . properties_vulkan10 . properties . limits . max_image_dimension2_d] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_image_dimension3_d : [properties_ffi . properties_vulkan10 . properties . limits . max_image_dimension3_d] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_image_dimension_cube : [properties_ffi . properties_vulkan10 . properties . limits . max_image_dimension_cube] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_indirect_commands_stream_count : [properties_ffi . properties_device_generated_commands_nv . map (| s | s . max_indirect_commands_stream_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_indirect_commands_stream_stride : [properties_ffi . properties_device_generated_commands_nv . map (| s | s . max_indirect_commands_stream_stride)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_indirect_commands_token_count : [properties_ffi . properties_device_generated_commands_nv . map (| s | s . max_indirect_commands_token_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_indirect_commands_token_offset : [properties_ffi . properties_device_generated_commands_nv . map (| s | s . max_indirect_commands_token_offset)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_indirect_sequence_count : [properties_ffi . properties_device_generated_commands_nv . map (| s | s . max_indirect_sequence_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_inline_uniform_block_size : [properties_ffi . properties_vulkan13 . map (| s | s . max_inline_uniform_block_size) , properties_ffi . properties_inline_uniform_block . map (| s | s . max_inline_uniform_block_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_inline_uniform_total_size : [properties_ffi . properties_vulkan13 . map (| s | s . max_inline_uniform_total_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_instance_count : [properties_ffi . properties_acceleration_structure_khr . map (| s | s . max_instance_count) , properties_ffi . properties_ray_tracing_nv . map (| s | s . max_instance_count)] . into_iter () . flatten () . next () . and_then (< u64 > :: from_vulkan) , max_interpolation_offset : [properties_ffi . properties_vulkan10 . properties . limits . max_interpolation_offset] . into_iter () . next () . and_then (< f32 > :: from_vulkan) . unwrap () , max_memory_allocation_count : [properties_ffi . properties_vulkan10 . properties . limits . max_memory_allocation_count] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_memory_allocation_size : [properties_ffi . properties_vulkan11 . map (| s | s . max_memory_allocation_size) , properties_ffi . properties_maintenance3 . map (| s | s . max_memory_allocation_size)] . into_iter () . flatten () . next () . and_then (< DeviceSize > :: from_vulkan) , max_mesh_multiview_view_count : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_multiview_view_count) , properties_ffi . properties_mesh_shader_nv . map (| s | s . max_mesh_multiview_view_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_mesh_output_components : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_output_components)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_mesh_output_layers : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_output_layers)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_mesh_output_memory_size : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_output_memory_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_mesh_output_primitives : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_output_primitives) , properties_ffi . properties_mesh_shader_nv . map (| s | s . max_mesh_output_primitives)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_mesh_output_vertices : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_output_vertices) , properties_ffi . properties_mesh_shader_nv . map (| s | s . max_mesh_output_vertices)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_mesh_payload_and_output_memory_size : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_payload_and_output_memory_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_mesh_payload_and_shared_memory_size : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_payload_and_shared_memory_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_mesh_shared_memory_size : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_shared_memory_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_mesh_total_memory_size : [properties_ffi . properties_mesh_shader_nv . map (| s | s . max_mesh_total_memory_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_mesh_work_group_count : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_work_group_count)] . into_iter () . flatten () . next () . and_then (< [u32 ; 3] > :: from_vulkan) , max_mesh_work_group_invocations : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_work_group_invocations) , properties_ffi . properties_mesh_shader_nv . map (| s | s . max_mesh_work_group_invocations)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_mesh_work_group_size : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_work_group_size) , properties_ffi . properties_mesh_shader_nv . map (| s | s . max_mesh_work_group_size)] . into_iter () . flatten () . next () . and_then (< [u32 ; 3] > :: from_vulkan) , max_mesh_work_group_total_count : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_mesh_work_group_total_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_multi_draw_count : [properties_ffi . properties_multi_draw_ext . map (| s | s . max_multi_draw_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_multiview_instance_index : [properties_ffi . properties_vulkan11 . map (| s | s . max_multiview_instance_index) , properties_ffi . properties_multiview . map (| s | s . max_multiview_instance_index)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_multiview_view_count : [properties_ffi . properties_vulkan11 . map (| s | s . max_multiview_view_count) , properties_ffi . properties_multiview . map (| s | s . max_multiview_view_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_num_regions_of_interest : [properties_ffi . properties_optical_flow_nv . map (| s | s . max_num_regions_of_interest)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_opacity2_state_subdivision_level : [properties_ffi . properties_opacity_micromap_ext . map (| s | s . max_opacity2_state_subdivision_level)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_opacity4_state_subdivision_level : [properties_ffi . properties_opacity_micromap_ext . map (| s | s . max_opacity4_state_subdivision_level)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_per_set_descriptors : [properties_ffi . properties_vulkan11 . map (| s | s . max_per_set_descriptors) , properties_ffi . properties_maintenance3 . map (| s | s . max_per_set_descriptors)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_per_stage_descriptor_acceleration_structures : [properties_ffi . properties_acceleration_structure_khr . map (| s | s . max_per_stage_descriptor_acceleration_structures)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_per_stage_descriptor_inline_uniform_blocks : [properties_ffi . properties_vulkan13 . map (| s | s . max_per_stage_descriptor_inline_uniform_blocks) , properties_ffi . properties_inline_uniform_block . map (| s | s . max_per_stage_descriptor_inline_uniform_blocks)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_per_stage_descriptor_input_attachments : [properties_ffi . properties_vulkan10 . properties . limits . max_per_stage_descriptor_input_attachments] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_per_stage_descriptor_sampled_images : [properties_ffi . properties_vulkan10 . properties . limits . max_per_stage_descriptor_sampled_images] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_per_stage_descriptor_samplers : [properties_ffi . properties_vulkan10 . properties . limits . max_per_stage_descriptor_samplers] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_per_stage_descriptor_storage_buffers : [properties_ffi . properties_vulkan10 . properties . limits . max_per_stage_descriptor_storage_buffers] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_per_stage_descriptor_storage_images : [properties_ffi . properties_vulkan10 . properties . limits . max_per_stage_descriptor_storage_images] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_per_stage_descriptor_uniform_buffers : [properties_ffi . properties_vulkan10 . properties . limits . max_per_stage_descriptor_uniform_buffers] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_per_stage_descriptor_update_after_bind_acceleration_structures : [properties_ffi . properties_acceleration_structure_khr . map (| s | s . max_per_stage_descriptor_update_after_bind_acceleration_structures)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_per_stage_descriptor_update_after_bind_inline_uniform_blocks : [properties_ffi . properties_vulkan13 . map (| s | s . max_per_stage_descriptor_update_after_bind_inline_uniform_blocks) , properties_ffi . properties_inline_uniform_block . map (| s | s . max_per_stage_descriptor_update_after_bind_inline_uniform_blocks)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_per_stage_descriptor_update_after_bind_input_attachments : [properties_ffi . properties_vulkan12 . map (| s | s . max_per_stage_descriptor_update_after_bind_input_attachments) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_per_stage_descriptor_update_after_bind_input_attachments)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_per_stage_descriptor_update_after_bind_sampled_images : [properties_ffi . properties_vulkan12 . map (| s | s . max_per_stage_descriptor_update_after_bind_sampled_images) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_per_stage_descriptor_update_after_bind_sampled_images)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_per_stage_descriptor_update_after_bind_samplers : [properties_ffi . properties_vulkan12 . map (| s | s . max_per_stage_descriptor_update_after_bind_samplers) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_per_stage_descriptor_update_after_bind_samplers)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_per_stage_descriptor_update_after_bind_storage_buffers : [properties_ffi . properties_vulkan12 . map (| s | s . max_per_stage_descriptor_update_after_bind_storage_buffers) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_per_stage_descriptor_update_after_bind_storage_buffers)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_per_stage_descriptor_update_after_bind_storage_images : [properties_ffi . properties_vulkan12 . map (| s | s . max_per_stage_descriptor_update_after_bind_storage_images) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_per_stage_descriptor_update_after_bind_storage_images)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_per_stage_descriptor_update_after_bind_uniform_buffers : [properties_ffi . properties_vulkan12 . map (| s | s . max_per_stage_descriptor_update_after_bind_uniform_buffers) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_per_stage_descriptor_update_after_bind_uniform_buffers)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_per_stage_resources : [properties_ffi . properties_vulkan10 . properties . limits . max_per_stage_resources] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_per_stage_update_after_bind_resources : [properties_ffi . properties_vulkan12 . map (| s | s . max_per_stage_update_after_bind_resources) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_per_stage_update_after_bind_resources)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_preferred_mesh_work_group_invocations : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_preferred_mesh_work_group_invocations)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_preferred_task_work_group_invocations : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_preferred_task_work_group_invocations)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_primitive_count : [properties_ffi . properties_acceleration_structure_khr . map (| s | s . max_primitive_count)] . into_iter () . flatten () . next () . and_then (< u64 > :: from_vulkan) , max_push_constants_size : [properties_ffi . properties_vulkan10 . properties . limits . max_push_constants_size] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_push_descriptors : [properties_ffi . properties_push_descriptor_khr . map (| s | s . max_push_descriptors)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_ray_dispatch_invocation_count : [properties_ffi . properties_ray_tracing_pipeline_khr . map (| s | s . max_ray_dispatch_invocation_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_ray_hit_attribute_size : [properties_ffi . properties_ray_tracing_pipeline_khr . map (| s | s . max_ray_hit_attribute_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_ray_recursion_depth : [properties_ffi . properties_ray_tracing_pipeline_khr . map (| s | s . max_ray_recursion_depth)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_recursion_depth : [properties_ffi . properties_ray_tracing_nv . map (| s | s . max_recursion_depth)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_resource_descriptor_buffer_bindings : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . max_resource_descriptor_buffer_bindings)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_resource_descriptor_buffer_range : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . max_resource_descriptor_buffer_range)] . into_iter () . flatten () . next () . and_then (< DeviceSize > :: from_vulkan) , max_sample_location_grid_size : [properties_ffi . properties_sample_locations_ext . map (| s | s . max_sample_location_grid_size)] . into_iter () . flatten () . next () . and_then (< [u32 ; 2] > :: from_vulkan) , max_sample_mask_words : [properties_ffi . properties_vulkan10 . properties . limits . max_sample_mask_words] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_sampler_allocation_count : [properties_ffi . properties_vulkan10 . properties . limits . max_sampler_allocation_count] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_sampler_anisotropy : [properties_ffi . properties_vulkan10 . properties . limits . max_sampler_anisotropy] . into_iter () . next () . and_then (< f32 > :: from_vulkan) . unwrap () , max_sampler_descriptor_buffer_bindings : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . max_sampler_descriptor_buffer_bindings)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_sampler_descriptor_buffer_range : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . max_sampler_descriptor_buffer_range)] . into_iter () . flatten () . next () . and_then (< DeviceSize > :: from_vulkan) , max_sampler_lod_bias : [properties_ffi . properties_vulkan10 . properties . limits . max_sampler_lod_bias] . into_iter () . next () . and_then (< f32 > :: from_vulkan) . unwrap () , max_sgpr_allocation : [properties_ffi . properties_shader_core_amd . map (| s | s . max_sgpr_allocation)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_shader_group_stride : [properties_ffi . properties_ray_tracing_pipeline_khr . map (| s | s . max_shader_group_stride) , properties_ffi . properties_ray_tracing_nv . map (| s | s . max_shader_group_stride)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_storage_buffer_range : [properties_ffi . properties_vulkan10 . properties . limits . max_storage_buffer_range] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_subgroup_size : [properties_ffi . properties_vulkan13 . map (| s | s . max_subgroup_size) , properties_ffi . properties_subgroup_size_control . map (| s | s . max_subgroup_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_subpass_shading_workgroup_size_aspect_ratio : [properties_ffi . properties_subpass_shading_huawei . map (| s | s . max_subpass_shading_workgroup_size_aspect_ratio)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_subsampled_array_layers : [properties_ffi . properties_fragment_density_map2_ext . map (| s | s . max_subsampled_array_layers)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_task_output_count : [properties_ffi . properties_mesh_shader_nv . map (| s | s . max_task_output_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_task_payload_and_shared_memory_size : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_task_payload_and_shared_memory_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_task_payload_size : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_task_payload_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_task_shared_memory_size : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_task_shared_memory_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_task_total_memory_size : [properties_ffi . properties_mesh_shader_nv . map (| s | s . max_task_total_memory_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_task_work_group_count : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_task_work_group_count)] . into_iter () . flatten () . next () . and_then (< [u32 ; 3] > :: from_vulkan) , max_task_work_group_invocations : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_task_work_group_invocations) , properties_ffi . properties_mesh_shader_nv . map (| s | s . max_task_work_group_invocations)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_task_work_group_size : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_task_work_group_size) , properties_ffi . properties_mesh_shader_nv . map (| s | s . max_task_work_group_size)] . into_iter () . flatten () . next () . and_then (< [u32 ; 3] > :: from_vulkan) , max_task_work_group_total_count : [properties_ffi . properties_mesh_shader_ext . map (| s | s . max_task_work_group_total_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_tessellation_control_per_patch_output_components : [properties_ffi . properties_vulkan10 . properties . limits . max_tessellation_control_per_patch_output_components] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_tessellation_control_per_vertex_input_components : [properties_ffi . properties_vulkan10 . properties . limits . max_tessellation_control_per_vertex_input_components] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_tessellation_control_per_vertex_output_components : [properties_ffi . properties_vulkan10 . properties . limits . max_tessellation_control_per_vertex_output_components] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_tessellation_control_total_output_components : [properties_ffi . properties_vulkan10 . properties . limits . max_tessellation_control_total_output_components] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_tessellation_evaluation_input_components : [properties_ffi . properties_vulkan10 . properties . limits . max_tessellation_evaluation_input_components] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_tessellation_evaluation_output_components : [properties_ffi . properties_vulkan10 . properties . limits . max_tessellation_evaluation_output_components] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_tessellation_generation_level : [properties_ffi . properties_vulkan10 . properties . limits . max_tessellation_generation_level] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_tessellation_patch_size : [properties_ffi . properties_vulkan10 . properties . limits . max_tessellation_patch_size] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_texel_buffer_elements : [properties_ffi . properties_vulkan10 . properties . limits . max_texel_buffer_elements] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_texel_gather_offset : [properties_ffi . properties_vulkan10 . properties . limits . max_texel_gather_offset] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_texel_offset : [properties_ffi . properties_vulkan10 . properties . limits . max_texel_offset] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_timeline_semaphore_value_difference : [properties_ffi . properties_vulkan12 . map (| s | s . max_timeline_semaphore_value_difference) , properties_ffi . properties_timeline_semaphore . map (| s | s . max_timeline_semaphore_value_difference)] . into_iter () . flatten () . next () . and_then (< u64 > :: from_vulkan) , max_transform_feedback_buffer_data_size : [properties_ffi . properties_transform_feedback_ext . map (| s | s . max_transform_feedback_buffer_data_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_transform_feedback_buffer_data_stride : [properties_ffi . properties_transform_feedback_ext . map (| s | s . max_transform_feedback_buffer_data_stride)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_transform_feedback_buffer_size : [properties_ffi . properties_transform_feedback_ext . map (| s | s . max_transform_feedback_buffer_size)] . into_iter () . flatten () . next () . and_then (< DeviceSize > :: from_vulkan) , max_transform_feedback_buffers : [properties_ffi . properties_transform_feedback_ext . map (| s | s . max_transform_feedback_buffers)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_transform_feedback_stream_data_size : [properties_ffi . properties_transform_feedback_ext . map (| s | s . max_transform_feedback_stream_data_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_transform_feedback_streams : [properties_ffi . properties_transform_feedback_ext . map (| s | s . max_transform_feedback_streams)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_triangle_count : [properties_ffi . properties_ray_tracing_nv . map (| s | s . max_triangle_count)] . into_iter () . flatten () . next () . and_then (< u64 > :: from_vulkan) , max_uniform_buffer_range : [properties_ffi . properties_vulkan10 . properties . limits . max_uniform_buffer_range] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_update_after_bind_descriptors_in_all_pools : [properties_ffi . properties_vulkan12 . map (| s | s . max_update_after_bind_descriptors_in_all_pools) , properties_ffi . properties_descriptor_indexing . map (| s | s . max_update_after_bind_descriptors_in_all_pools)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_vertex_attrib_divisor : [properties_ffi . properties_vertex_attribute_divisor_ext . map (| s | s . max_vertex_attrib_divisor)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_vertex_input_attribute_offset : [properties_ffi . properties_vulkan10 . properties . limits . max_vertex_input_attribute_offset] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_vertex_input_attributes : [properties_ffi . properties_vulkan10 . properties . limits . max_vertex_input_attributes] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_vertex_input_binding_stride : [properties_ffi . properties_vulkan10 . properties . limits . max_vertex_input_binding_stride] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_vertex_input_bindings : [properties_ffi . properties_vulkan10 . properties . limits . max_vertex_input_bindings] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_vertex_output_components : [properties_ffi . properties_vulkan10 . properties . limits . max_vertex_output_components] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_vgpr_allocation : [properties_ffi . properties_shader_core_amd . map (| s | s . max_vgpr_allocation)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_viewport_dimensions : [properties_ffi . properties_vulkan10 . properties . limits . max_viewport_dimensions] . into_iter () . next () . and_then (< [u32 ; 2] > :: from_vulkan) . unwrap () , max_viewports : [properties_ffi . properties_vulkan10 . properties . limits . max_viewports] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , max_weight_filter_dimension : [properties_ffi . properties_image_processing_qcom . map (| s | s . max_weight_filter_dimension)] . into_iter () . flatten () . next () . and_then (< [u32 ; 2] > :: from_vulkan) , max_weight_filter_phases : [properties_ffi . properties_image_processing_qcom . map (| s | s . max_weight_filter_phases)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , max_width : [properties_ffi . properties_optical_flow_nv . map (| s | s . max_width)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , mesh_output_per_primitive_granularity : [properties_ffi . properties_mesh_shader_ext . map (| s | s . mesh_output_per_primitive_granularity) , properties_ffi . properties_mesh_shader_nv . map (| s | s . mesh_output_per_primitive_granularity)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , mesh_output_per_vertex_granularity : [properties_ffi . properties_mesh_shader_ext . map (| s | s . mesh_output_per_vertex_granularity) , properties_ffi . properties_mesh_shader_nv . map (| s | s . mesh_output_per_vertex_granularity)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , min_acceleration_structure_scratch_offset_alignment : [properties_ffi . properties_acceleration_structure_khr . map (| s | s . min_acceleration_structure_scratch_offset_alignment)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , min_fragment_density_texel_size : [properties_ffi . properties_fragment_density_map_ext . map (| s | s . min_fragment_density_texel_size)] . into_iter () . flatten () . next () . and_then (< [u32 ; 2] > :: from_vulkan) , min_fragment_shading_rate_attachment_texel_size : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . min_fragment_shading_rate_attachment_texel_size)] . into_iter () . flatten () . next () . and_then (< [u32 ; 2] > :: from_vulkan) , min_height : [properties_ffi . properties_optical_flow_nv . map (| s | s . min_height)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , min_imported_host_pointer_alignment : [properties_ffi . properties_external_memory_host_ext . map (| s | s . min_imported_host_pointer_alignment)] . into_iter () . flatten () . next () . and_then (< DeviceSize > :: from_vulkan) , min_indirect_commands_buffer_offset_alignment : [properties_ffi . properties_device_generated_commands_nv . map (| s | s . min_indirect_commands_buffer_offset_alignment)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , min_interpolation_offset : [properties_ffi . properties_vulkan10 . properties . limits . min_interpolation_offset] . into_iter () . next () . and_then (< f32 > :: from_vulkan) . unwrap () , min_memory_map_alignment : [properties_ffi . properties_vulkan10 . properties . limits . min_memory_map_alignment] . into_iter () . next () . and_then (< usize > :: from_vulkan) . unwrap () , min_sequences_count_buffer_offset_alignment : [properties_ffi . properties_device_generated_commands_nv . map (| s | s . min_sequences_count_buffer_offset_alignment)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , min_sequences_index_buffer_offset_alignment : [properties_ffi . properties_device_generated_commands_nv . map (| s | s . min_sequences_index_buffer_offset_alignment)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , min_sgpr_allocation : [properties_ffi . properties_shader_core_amd . map (| s | s . min_sgpr_allocation)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , min_storage_buffer_offset_alignment : [properties_ffi . properties_vulkan10 . properties . limits . min_storage_buffer_offset_alignment] . into_iter () . next () . and_then (< DeviceAlignment > :: from_vulkan) . unwrap () , min_subgroup_size : [properties_ffi . properties_vulkan13 . map (| s | s . min_subgroup_size) , properties_ffi . properties_subgroup_size_control . map (| s | s . min_subgroup_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , min_texel_buffer_offset_alignment : [properties_ffi . properties_vulkan10 . properties . limits . min_texel_buffer_offset_alignment] . into_iter () . next () . and_then (< DeviceAlignment > :: from_vulkan) . unwrap () , min_texel_gather_offset : [properties_ffi . properties_vulkan10 . properties . limits . min_texel_gather_offset] . into_iter () . next () . and_then (< i32 > :: from_vulkan) . unwrap () , min_texel_offset : [properties_ffi . properties_vulkan10 . properties . limits . min_texel_offset] . into_iter () . next () . and_then (< i32 > :: from_vulkan) . unwrap () , min_uniform_buffer_offset_alignment : [properties_ffi . properties_vulkan10 . properties . limits . min_uniform_buffer_offset_alignment] . into_iter () . next () . and_then (< DeviceAlignment > :: from_vulkan) . unwrap () , min_vertex_input_binding_stride_alignment : [properties_ffi . properties_portability_subset_khr . map (| s | s . min_vertex_input_binding_stride_alignment)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , min_vgpr_allocation : [properties_ffi . properties_shader_core_amd . map (| s | s . min_vgpr_allocation)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , min_width : [properties_ffi . properties_optical_flow_nv . map (| s | s . min_width)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , mipmap_precision_bits : [properties_ffi . properties_vulkan10 . properties . limits . mipmap_precision_bits] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , non_coherent_atom_size : [properties_ffi . properties_vulkan10 . properties . limits . non_coherent_atom_size] . into_iter () . next () . and_then (< DeviceAlignment > :: from_vulkan) . unwrap () , optimal_buffer_copy_offset_alignment : [properties_ffi . properties_vulkan10 . properties . limits . optimal_buffer_copy_offset_alignment] . into_iter () . next () . and_then (< DeviceAlignment > :: from_vulkan) . unwrap () , optimal_buffer_copy_row_pitch_alignment : [properties_ffi . properties_vulkan10 . properties . limits . optimal_buffer_copy_row_pitch_alignment] . into_iter () . next () . and_then (< DeviceAlignment > :: from_vulkan) . unwrap () , pci_bus : [properties_ffi . properties_pci_bus_info_ext . map (| s | s . pci_bus)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , pci_device : [properties_ffi . properties_pci_bus_info_ext . map (| s | s . pci_device)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , pci_domain : [properties_ffi . properties_pci_bus_info_ext . map (| s | s . pci_domain)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , pci_function : [properties_ffi . properties_pci_bus_info_ext . map (| s | s . pci_function)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , per_view_position_all_components : [properties_ffi . properties_multiview_per_view_attributes_nvx . map (| s | s . per_view_position_all_components)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , pipeline_cache_uuid : [properties_ffi . properties_vulkan10 . properties . pipeline_cache_uuid] . into_iter () . next () . and_then (< [u8 ; 16] > :: from_vulkan) . unwrap () , point_clipping_behavior : [properties_ffi . properties_vulkan11 . map (| s | s . point_clipping_behavior) , properties_ffi . properties_point_clipping . map (| s | s . point_clipping_behavior)] . into_iter () . flatten () . next () . and_then (< PointClippingBehavior > :: from_vulkan) , point_size_granularity : [properties_ffi . properties_vulkan10 . properties . limits . point_size_granularity] . into_iter () . next () . and_then (< f32 > :: from_vulkan) . unwrap () , point_size_range : [properties_ffi . properties_vulkan10 . properties . limits . point_size_range] . into_iter () . next () . and_then (< [f32 ; 2] > :: from_vulkan) . unwrap () , prefers_compact_primitive_output : [properties_ffi . properties_mesh_shader_ext . map (| s | s . prefers_compact_primitive_output)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , prefers_compact_vertex_output : [properties_ffi . properties_mesh_shader_ext . map (| s | s . prefers_compact_vertex_output)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , prefers_local_invocation_primitive_output : [properties_ffi . properties_mesh_shader_ext . map (| s | s . prefers_local_invocation_primitive_output)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , prefers_local_invocation_vertex_output : [properties_ffi . properties_mesh_shader_ext . map (| s | s . prefers_local_invocation_vertex_output)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , primary_major : [properties_ffi . properties_drm_ext . map (| s | s . primary_major)] . into_iter () . flatten () . next () . and_then (< i64 > :: from_vulkan) , primary_minor : [properties_ffi . properties_drm_ext . map (| s | s . primary_minor)] . into_iter () . flatten () . next () . and_then (< i64 > :: from_vulkan) , primitive_fragment_shading_rate_with_multiple_viewports : [properties_ffi . properties_fragment_shading_rate_khr . map (| s | s . primitive_fragment_shading_rate_with_multiple_viewports)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , primitive_overestimation_size : [properties_ffi . properties_conservative_rasterization_ext . map (| s | s . primitive_overestimation_size)] . into_iter () . flatten () . next () . and_then (< f32 > :: from_vulkan) , primitive_underestimation : [properties_ffi . properties_conservative_rasterization_ext . map (| s | s . primitive_underestimation)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , protected_no_fault : [properties_ffi . properties_vulkan11 . map (| s | s . protected_no_fault) , properties_ffi . properties_protected_memory . map (| s | s . protected_no_fault)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , provoking_vertex_mode_per_pipeline : [properties_ffi . properties_provoking_vertex_ext . map (| s | s . provoking_vertex_mode_per_pipeline)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , quad_divergent_implicit_lod : [properties_ffi . properties_vulkan12 . map (| s | s . quad_divergent_implicit_lod) , properties_ffi . properties_descriptor_indexing . map (| s | s . quad_divergent_implicit_lod)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , quad_operations_in_all_stages : [properties_ffi . properties_subgroup . map (| s | s . quad_operations_in_all_stages)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , ray_tracing_invocation_reorder_reordering_hint : [properties_ffi . properties_ray_tracing_invocation_reorder_nv . map (| s | s . ray_tracing_invocation_reorder_reordering_hint)] . into_iter () . flatten () . next () . and_then (< RayTracingInvocationReorderMode > :: from_vulkan) , render_major : [properties_ffi . properties_drm_ext . map (| s | s . render_major)] . into_iter () . flatten () . next () . and_then (< i64 > :: from_vulkan) , render_minor : [properties_ffi . properties_drm_ext . map (| s | s . render_minor)] . into_iter () . flatten () . next () . and_then (< i64 > :: from_vulkan) , required_subgroup_size_stages : [properties_ffi . properties_vulkan13 . map (| s | s . required_subgroup_size_stages) , properties_ffi . properties_subgroup_size_control . map (| s | s . required_subgroup_size_stages)] . into_iter () . flatten () . next () . and_then (< ShaderStages > :: from_vulkan) , residency_aligned_mip_size : [properties_ffi . properties_vulkan10 . properties . sparse_properties . residency_aligned_mip_size] . into_iter () . next () . and_then (< bool > :: from_vulkan) . unwrap () , residency_non_resident_strict : [properties_ffi . properties_vulkan10 . properties . sparse_properties . residency_non_resident_strict] . into_iter () . next () . and_then (< bool > :: from_vulkan) . unwrap () , residency_standard2_d_block_shape : [properties_ffi . properties_vulkan10 . properties . sparse_properties . residency_standard2_d_block_shape] . into_iter () . next () . and_then (< bool > :: from_vulkan) . unwrap () , residency_standard2_d_multisample_block_shape : [properties_ffi . properties_vulkan10 . properties . sparse_properties . residency_standard2_d_multisample_block_shape] . into_iter () . next () . and_then (< bool > :: from_vulkan) . unwrap () , residency_standard3_d_block_shape : [properties_ffi . properties_vulkan10 . properties . sparse_properties . residency_standard3_d_block_shape] . into_iter () . next () . and_then (< bool > :: from_vulkan) . unwrap () , resource_descriptor_buffer_address_space_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . resource_descriptor_buffer_address_space_size)] . into_iter () . flatten () . next () . and_then (< DeviceSize > :: from_vulkan) , robust_buffer_access_update_after_bind : [properties_ffi . properties_vulkan12 . map (| s | s . robust_buffer_access_update_after_bind) , properties_ffi . properties_descriptor_indexing . map (| s | s . robust_buffer_access_update_after_bind)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , robust_storage_buffer_access_size_alignment : [properties_ffi . properties_robustness2_ext . map (| s | s . robust_storage_buffer_access_size_alignment)] . into_iter () . flatten () . next () . and_then (< DeviceAlignment > :: from_vulkan) , robust_storage_buffer_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . robust_storage_buffer_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , robust_storage_texel_buffer_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . robust_storage_texel_buffer_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , robust_uniform_buffer_access_size_alignment : [properties_ffi . properties_robustness2_ext . map (| s | s . robust_uniform_buffer_access_size_alignment)] . into_iter () . flatten () . next () . and_then (< DeviceAlignment > :: from_vulkan) , robust_uniform_buffer_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . robust_uniform_buffer_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , robust_uniform_texel_buffer_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . robust_uniform_texel_buffer_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , rounding_mode_independence : [properties_ffi . properties_vulkan12 . map (| s | s . rounding_mode_independence) , properties_ffi . properties_float_controls . map (| s | s . rounding_mode_independence)] . into_iter () . flatten () . next () . and_then (< ShaderFloatControlsIndependence > :: from_vulkan) , sample_location_coordinate_range : [properties_ffi . properties_sample_locations_ext . map (| s | s . sample_location_coordinate_range)] . into_iter () . flatten () . next () . and_then (< [f32 ; 2] > :: from_vulkan) , sample_location_sample_counts : [properties_ffi . properties_sample_locations_ext . map (| s | s . sample_location_sample_counts)] . into_iter () . flatten () . next () . and_then (< SampleCounts > :: from_vulkan) , sample_location_sub_pixel_bits : [properties_ffi . properties_sample_locations_ext . map (| s | s . sample_location_sub_pixel_bits)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , sampled_image_color_sample_counts : [properties_ffi . properties_vulkan10 . properties . limits . sampled_image_color_sample_counts] . into_iter () . next () . and_then (< SampleCounts > :: from_vulkan) . unwrap () , sampled_image_depth_sample_counts : [properties_ffi . properties_vulkan10 . properties . limits . sampled_image_depth_sample_counts] . into_iter () . next () . and_then (< SampleCounts > :: from_vulkan) . unwrap () , sampled_image_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . sampled_image_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , sampled_image_integer_sample_counts : [properties_ffi . properties_vulkan10 . properties . limits . sampled_image_integer_sample_counts] . into_iter () . next () . and_then (< SampleCounts > :: from_vulkan) . unwrap () , sampled_image_stencil_sample_counts : [properties_ffi . properties_vulkan10 . properties . limits . sampled_image_stencil_sample_counts] . into_iter () . next () . and_then (< SampleCounts > :: from_vulkan) . unwrap () , sampler_capture_replay_descriptor_data_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . sampler_capture_replay_descriptor_data_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , sampler_descriptor_buffer_address_space_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . sampler_descriptor_buffer_address_space_size)] . into_iter () . flatten () . next () . and_then (< DeviceSize > :: from_vulkan) , sampler_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . sampler_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , sgpr_allocation_granularity : [properties_ffi . properties_shader_core_amd . map (| s | s . sgpr_allocation_granularity)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , sgprs_per_simd : [properties_ffi . properties_shader_core_amd . map (| s | s . sgprs_per_simd)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shader_arrays_per_engine_count : [properties_ffi . properties_shader_core_amd . map (| s | s . shader_arrays_per_engine_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shader_core_count : [properties_ffi . properties_shader_core_builtins_arm . map (| s | s . shader_core_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shader_core_features : [properties_ffi . properties_shader_core2_amd . map (| s | s . shader_core_features)] . into_iter () . flatten () . next () . and_then (< ShaderCoreProperties > :: from_vulkan) , shader_core_mask : [properties_ffi . properties_shader_core_builtins_arm . map (| s | s . shader_core_mask)] . into_iter () . flatten () . next () . and_then (< u64 > :: from_vulkan) , shader_denorm_flush_to_zero_float16 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_denorm_flush_to_zero_float16) , properties_ffi . properties_float_controls . map (| s | s . shader_denorm_flush_to_zero_float16)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_denorm_flush_to_zero_float32 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_denorm_flush_to_zero_float32) , properties_ffi . properties_float_controls . map (| s | s . shader_denorm_flush_to_zero_float32)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_denorm_flush_to_zero_float64 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_denorm_flush_to_zero_float64) , properties_ffi . properties_float_controls . map (| s | s . shader_denorm_flush_to_zero_float64)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_denorm_preserve_float16 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_denorm_preserve_float16) , properties_ffi . properties_float_controls . map (| s | s . shader_denorm_preserve_float16)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_denorm_preserve_float32 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_denorm_preserve_float32) , properties_ffi . properties_float_controls . map (| s | s . shader_denorm_preserve_float32)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_denorm_preserve_float64 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_denorm_preserve_float64) , properties_ffi . properties_float_controls . map (| s | s . shader_denorm_preserve_float64)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_engine_count : [properties_ffi . properties_shader_core_amd . map (| s | s . shader_engine_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shader_group_base_alignment : [properties_ffi . properties_ray_tracing_pipeline_khr . map (| s | s . shader_group_base_alignment) , properties_ffi . properties_ray_tracing_nv . map (| s | s . shader_group_base_alignment)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shader_group_handle_alignment : [properties_ffi . properties_ray_tracing_pipeline_khr . map (| s | s . shader_group_handle_alignment)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shader_group_handle_capture_replay_size : [properties_ffi . properties_ray_tracing_pipeline_khr . map (| s | s . shader_group_handle_capture_replay_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shader_group_handle_size : [properties_ffi . properties_ray_tracing_pipeline_khr . map (| s | s . shader_group_handle_size) , properties_ffi . properties_ray_tracing_nv . map (| s | s . shader_group_handle_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shader_input_attachment_array_non_uniform_indexing_native : [properties_ffi . properties_vulkan12 . map (| s | s . shader_input_attachment_array_non_uniform_indexing_native) , properties_ffi . properties_descriptor_indexing . map (| s | s . shader_input_attachment_array_non_uniform_indexing_native)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_module_identifier_algorithm_uuid : [properties_ffi . properties_shader_module_identifier_ext . map (| s | s . shader_module_identifier_algorithm_uuid)] . into_iter () . flatten () . next () . and_then (< [u8 ; 16] > :: from_vulkan) , shader_rounding_mode_rte_float16 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_rounding_mode_rte_float16) , properties_ffi . properties_float_controls . map (| s | s . shader_rounding_mode_rte_float16)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_rounding_mode_rte_float32 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_rounding_mode_rte_float32) , properties_ffi . properties_float_controls . map (| s | s . shader_rounding_mode_rte_float32)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_rounding_mode_rte_float64 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_rounding_mode_rte_float64) , properties_ffi . properties_float_controls . map (| s | s . shader_rounding_mode_rte_float64)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_rounding_mode_rtz_float16 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_rounding_mode_rtz_float16) , properties_ffi . properties_float_controls . map (| s | s . shader_rounding_mode_rtz_float16)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_rounding_mode_rtz_float32 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_rounding_mode_rtz_float32) , properties_ffi . properties_float_controls . map (| s | s . shader_rounding_mode_rtz_float32)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_rounding_mode_rtz_float64 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_rounding_mode_rtz_float64) , properties_ffi . properties_float_controls . map (| s | s . shader_rounding_mode_rtz_float64)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_sampled_image_array_non_uniform_indexing_native : [properties_ffi . properties_vulkan12 . map (| s | s . shader_sampled_image_array_non_uniform_indexing_native) , properties_ffi . properties_descriptor_indexing . map (| s | s . shader_sampled_image_array_non_uniform_indexing_native)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_signed_zero_inf_nan_preserve_float16 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_signed_zero_inf_nan_preserve_float16) , properties_ffi . properties_float_controls . map (| s | s . shader_signed_zero_inf_nan_preserve_float16)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_signed_zero_inf_nan_preserve_float32 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_signed_zero_inf_nan_preserve_float32) , properties_ffi . properties_float_controls . map (| s | s . shader_signed_zero_inf_nan_preserve_float32)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_signed_zero_inf_nan_preserve_float64 : [properties_ffi . properties_vulkan12 . map (| s | s . shader_signed_zero_inf_nan_preserve_float64) , properties_ffi . properties_float_controls . map (| s | s . shader_signed_zero_inf_nan_preserve_float64)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_sm_count : [properties_ffi . properties_shader_sm_builtins_nv . map (| s | s . shader_sm_count)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shader_storage_buffer_array_non_uniform_indexing_native : [properties_ffi . properties_vulkan12 . map (| s | s . shader_storage_buffer_array_non_uniform_indexing_native) , properties_ffi . properties_descriptor_indexing . map (| s | s . shader_storage_buffer_array_non_uniform_indexing_native)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_storage_image_array_non_uniform_indexing_native : [properties_ffi . properties_vulkan12 . map (| s | s . shader_storage_image_array_non_uniform_indexing_native) , properties_ffi . properties_descriptor_indexing . map (| s | s . shader_storage_image_array_non_uniform_indexing_native)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_uniform_buffer_array_non_uniform_indexing_native : [properties_ffi . properties_vulkan12 . map (| s | s . shader_uniform_buffer_array_non_uniform_indexing_native) , properties_ffi . properties_descriptor_indexing . map (| s | s . shader_uniform_buffer_array_non_uniform_indexing_native)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , shader_warps_per_core : [properties_ffi . properties_shader_core_builtins_arm . map (| s | s . shader_warps_per_core)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shader_warps_per_sm : [properties_ffi . properties_shader_sm_builtins_nv . map (| s | s . shader_warps_per_sm)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shading_rate_max_coarse_samples : [properties_ffi . properties_shading_rate_image_nv . map (| s | s . shading_rate_max_coarse_samples)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shading_rate_palette_size : [properties_ffi . properties_shading_rate_image_nv . map (| s | s . shading_rate_palette_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , shading_rate_texel_size : [properties_ffi . properties_shading_rate_image_nv . map (| s | s . shading_rate_texel_size)] . into_iter () . flatten () . next () . and_then (< [u32 ; 2] > :: from_vulkan) , simd_per_compute_unit : [properties_ffi . properties_shader_core_amd . map (| s | s . simd_per_compute_unit)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , sparse_address_space_size : [properties_ffi . properties_vulkan10 . properties . limits . sparse_address_space_size] . into_iter () . next () . and_then (< DeviceSize > :: from_vulkan) . unwrap () , standard_sample_locations : [properties_ffi . properties_vulkan10 . properties . limits . standard_sample_locations] . into_iter () . next () . and_then (< bool > :: from_vulkan) . unwrap () , storage_buffer_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . storage_buffer_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , storage_image_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . storage_image_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , storage_image_sample_counts : [properties_ffi . properties_vulkan10 . properties . limits . storage_image_sample_counts] . into_iter () . next () . and_then (< SampleCounts > :: from_vulkan) . unwrap () , storage_texel_buffer_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . storage_texel_buffer_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , storage_texel_buffer_offset_alignment_bytes : [properties_ffi . properties_vulkan13 . map (| s | s . storage_texel_buffer_offset_alignment_bytes) , properties_ffi . properties_texel_buffer_alignment . map (| s | s . storage_texel_buffer_offset_alignment_bytes)] . into_iter () . flatten () . next () . and_then (< DeviceAlignment > :: from_vulkan) , storage_texel_buffer_offset_single_texel_alignment : [properties_ffi . properties_vulkan13 . map (| s | s . storage_texel_buffer_offset_single_texel_alignment) , properties_ffi . properties_texel_buffer_alignment . map (| s | s . storage_texel_buffer_offset_single_texel_alignment)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , strict_lines : [properties_ffi . properties_vulkan10 . properties . limits . strict_lines] . into_iter () . next () . and_then (< bool > :: from_vulkan) . unwrap () , sub_pixel_interpolation_offset_bits : [properties_ffi . properties_vulkan10 . properties . limits . sub_pixel_interpolation_offset_bits] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , sub_pixel_precision_bits : [properties_ffi . properties_vulkan10 . properties . limits . sub_pixel_precision_bits] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , sub_texel_precision_bits : [properties_ffi . properties_vulkan10 . properties . limits . sub_texel_precision_bits] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , subgroup_quad_operations_in_all_stages : [properties_ffi . properties_vulkan11 . map (| s | s . subgroup_quad_operations_in_all_stages)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , subgroup_size : [properties_ffi . properties_vulkan11 . map (| s | s . subgroup_size) , properties_ffi . properties_subgroup . map (| s | s . subgroup_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , subgroup_supported_operations : [properties_ffi . properties_vulkan11 . map (| s | s . subgroup_supported_operations)] . into_iter () . flatten () . next () . and_then (< SubgroupFeatures > :: from_vulkan) , subgroup_supported_stages : [properties_ffi . properties_vulkan11 . map (| s | s . subgroup_supported_stages)] . into_iter () . flatten () . next () . and_then (< ShaderStages > :: from_vulkan) , subsampled_coarse_reconstruction_early_access : [properties_ffi . properties_fragment_density_map2_ext . map (| s | s . subsampled_coarse_reconstruction_early_access)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , subsampled_loads : [properties_ffi . properties_fragment_density_map2_ext . map (| s | s . subsampled_loads)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , supported_depth_resolve_modes : [properties_ffi . properties_vulkan12 . map (| s | s . supported_depth_resolve_modes) , properties_ffi . properties_depth_stencil_resolve . map (| s | s . supported_depth_resolve_modes)] . into_iter () . flatten () . next () . and_then (< ResolveModes > :: from_vulkan) , supported_hint_grid_sizes : [properties_ffi . properties_optical_flow_nv . map (| s | s . supported_hint_grid_sizes)] . into_iter () . flatten () . next () . and_then (< OpticalFlowGridSizes > :: from_vulkan) , supported_operations : [properties_ffi . properties_subgroup . map (| s | s . supported_operations)] . into_iter () . flatten () . next () . and_then (< SubgroupFeatures > :: from_vulkan) , supported_output_grid_sizes : [properties_ffi . properties_optical_flow_nv . map (| s | s . supported_output_grid_sizes)] . into_iter () . flatten () . next () . and_then (< OpticalFlowGridSizes > :: from_vulkan) , supported_queues : [properties_ffi . properties_copy_memory_indirect_nv . map (| s | s . supported_queues)] . into_iter () . flatten () . next () . and_then (< QueueFlags > :: from_vulkan) , supported_stages : [properties_ffi . properties_subgroup . map (| s | s . supported_stages)] . into_iter () . flatten () . next () . and_then (< ShaderStages > :: from_vulkan) , supported_stencil_resolve_modes : [properties_ffi . properties_vulkan12 . map (| s | s . supported_stencil_resolve_modes) , properties_ffi . properties_depth_stencil_resolve . map (| s | s . supported_stencil_resolve_modes)] . into_iter () . flatten () . next () . and_then (< ResolveModes > :: from_vulkan) , timestamp_compute_and_graphics : [properties_ffi . properties_vulkan10 . properties . limits . timestamp_compute_and_graphics] . into_iter () . next () . and_then (< bool > :: from_vulkan) . unwrap () , timestamp_period : [properties_ffi . properties_vulkan10 . properties . limits . timestamp_period] . into_iter () . next () . and_then (< f32 > :: from_vulkan) . unwrap () , transform_feedback_draw : [properties_ffi . properties_transform_feedback_ext . map (| s | s . transform_feedback_draw)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , transform_feedback_preserves_triangle_fan_provoking_vertex : [properties_ffi . properties_provoking_vertex_ext . map (| s | s . transform_feedback_preserves_triangle_fan_provoking_vertex)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , transform_feedback_queries : [properties_ffi . properties_transform_feedback_ext . map (| s | s . transform_feedback_queries)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , transform_feedback_rasterization_stream_select : [properties_ffi . properties_transform_feedback_ext . map (| s | s . transform_feedback_rasterization_stream_select)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , transform_feedback_streams_lines_triangles : [properties_ffi . properties_transform_feedback_ext . map (| s | s . transform_feedback_streams_lines_triangles)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , tri_strip_vertex_order_independent_of_provoking_vertex : [properties_ffi . properties_fragment_shader_barycentric_khr . map (| s | s . tri_strip_vertex_order_independent_of_provoking_vertex)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , uniform_buffer_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . uniform_buffer_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , uniform_texel_buffer_descriptor_size : [properties_ffi . properties_descriptor_buffer_ext . map (| s | s . uniform_texel_buffer_descriptor_size)] . into_iter () . flatten () . next () . and_then (< usize > :: from_vulkan) , uniform_texel_buffer_offset_alignment_bytes : [properties_ffi . properties_vulkan13 . map (| s | s . uniform_texel_buffer_offset_alignment_bytes) , properties_ffi . properties_texel_buffer_alignment . map (| s | s . uniform_texel_buffer_offset_alignment_bytes)] . into_iter () . flatten () . next () . and_then (< DeviceAlignment > :: from_vulkan) , uniform_texel_buffer_offset_single_texel_alignment : [properties_ffi . properties_vulkan13 . map (| s | s . uniform_texel_buffer_offset_single_texel_alignment) , properties_ffi . properties_texel_buffer_alignment . map (| s | s . uniform_texel_buffer_offset_single_texel_alignment)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , variable_sample_locations : [properties_ffi . properties_sample_locations_ext . map (| s | s . variable_sample_locations)] . into_iter () . flatten () . next () . and_then (< bool > :: from_vulkan) , vendor_id : [properties_ffi . properties_vulkan10 . properties . vendor_id] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , vgpr_allocation_granularity : [properties_ffi . properties_shader_core_amd . map (| s | s . vgpr_allocation_granularity)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , vgprs_per_simd : [properties_ffi . properties_shader_core_amd . map (| s | s . vgprs_per_simd)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , viewport_bounds_range : [properties_ffi . properties_vulkan10 . properties . limits . viewport_bounds_range] . into_iter () . next () . and_then (< [f32 ; 2] > :: from_vulkan) . unwrap () , viewport_sub_pixel_bits : [properties_ffi . properties_vulkan10 . properties . limits . viewport_sub_pixel_bits] . into_iter () . next () . and_then (< u32 > :: from_vulkan) . unwrap () , wavefront_size : [properties_ffi . properties_shader_core_amd . map (| s | s . wavefront_size)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , wavefronts_per_simd : [properties_ffi . properties_shader_core_amd . map (| s | s . wavefronts_per_simd)] . into_iter () . flatten () . next () . and_then (< u32 > :: from_vulkan) , _ne : crate :: NonExhaustive (()) , } + } +} +#[derive(Default)] +pub(crate) struct PropertiesFfi { + properties_vulkan10: ash::vk::PhysicalDeviceProperties2KHR, + properties_vulkan11: Option<ash::vk::PhysicalDeviceVulkan11Properties>, + properties_vulkan12: Option<ash::vk::PhysicalDeviceVulkan12Properties>, + properties_vulkan13: Option<ash::vk::PhysicalDeviceVulkan13Properties>, + properties_id: Option<ash::vk::PhysicalDeviceIDProperties>, + properties_maintenance3: Option<ash::vk::PhysicalDeviceMaintenance3Properties>, + properties_multiview: Option<ash::vk::PhysicalDeviceMultiviewProperties>, + properties_point_clipping: Option<ash::vk::PhysicalDevicePointClippingProperties>, + properties_protected_memory: Option<ash::vk::PhysicalDeviceProtectedMemoryProperties>, + properties_subgroup: Option<ash::vk::PhysicalDeviceSubgroupProperties>, + properties_depth_stencil_resolve: Option<ash::vk::PhysicalDeviceDepthStencilResolveProperties>, + properties_descriptor_indexing: Option<ash::vk::PhysicalDeviceDescriptorIndexingProperties>, + properties_driver: Option<ash::vk::PhysicalDeviceDriverProperties>, + properties_float_controls: Option<ash::vk::PhysicalDeviceFloatControlsProperties>, + properties_sampler_filter_minmax: Option<ash::vk::PhysicalDeviceSamplerFilterMinmaxProperties>, + properties_timeline_semaphore: Option<ash::vk::PhysicalDeviceTimelineSemaphoreProperties>, + properties_inline_uniform_block: Option<ash::vk::PhysicalDeviceInlineUniformBlockProperties>, + properties_maintenance4: Option<ash::vk::PhysicalDeviceMaintenance4Properties>, + properties_shader_integer_dot_product: + Option<ash::vk::PhysicalDeviceShaderIntegerDotProductProperties>, + properties_subgroup_size_control: Option<ash::vk::PhysicalDeviceSubgroupSizeControlProperties>, + properties_texel_buffer_alignment: + Option<ash::vk::PhysicalDeviceTexelBufferAlignmentProperties>, + properties_acceleration_structure_khr: + Option<ash::vk::PhysicalDeviceAccelerationStructurePropertiesKHR>, + properties_fragment_shader_barycentric_khr: + Option<ash::vk::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR>, + properties_fragment_shading_rate_khr: + Option<ash::vk::PhysicalDeviceFragmentShadingRatePropertiesKHR>, + properties_performance_query_khr: Option<ash::vk::PhysicalDevicePerformanceQueryPropertiesKHR>, + properties_portability_subset_khr: + Option<ash::vk::PhysicalDevicePortabilitySubsetPropertiesKHR>, + properties_push_descriptor_khr: Option<ash::vk::PhysicalDevicePushDescriptorPropertiesKHR>, + properties_ray_tracing_pipeline_khr: + Option<ash::vk::PhysicalDeviceRayTracingPipelinePropertiesKHR>, + properties_blend_operation_advanced_ext: + Option<ash::vk::PhysicalDeviceBlendOperationAdvancedPropertiesEXT>, + properties_conservative_rasterization_ext: + Option<ash::vk::PhysicalDeviceConservativeRasterizationPropertiesEXT>, + properties_custom_border_color_ext: + Option<ash::vk::PhysicalDeviceCustomBorderColorPropertiesEXT>, + properties_descriptor_buffer_density_map_ext: + Option<ash::vk::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT>, + properties_descriptor_buffer_ext: Option<ash::vk::PhysicalDeviceDescriptorBufferPropertiesEXT>, + properties_discard_rectangle_ext: Option<ash::vk::PhysicalDeviceDiscardRectanglePropertiesEXT>, + properties_drm_ext: Option<ash::vk::PhysicalDeviceDrmPropertiesEXT>, + properties_extended_dynamic_state3_ext: + Option<ash::vk::PhysicalDeviceExtendedDynamicState3PropertiesEXT>, + properties_external_memory_host_ext: + Option<ash::vk::PhysicalDeviceExternalMemoryHostPropertiesEXT>, + properties_fragment_density_map2_ext: + Option<ash::vk::PhysicalDeviceFragmentDensityMap2PropertiesEXT>, + properties_fragment_density_map_ext: + Option<ash::vk::PhysicalDeviceFragmentDensityMapPropertiesEXT>, + properties_graphics_pipeline_library_ext: + Option<ash::vk::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT>, + properties_line_rasterization_ext: + Option<ash::vk::PhysicalDeviceLineRasterizationPropertiesEXT>, + properties_mesh_shader_ext: Option<ash::vk::PhysicalDeviceMeshShaderPropertiesEXT>, + properties_multi_draw_ext: Option<ash::vk::PhysicalDeviceMultiDrawPropertiesEXT>, + properties_opacity_micromap_ext: Option<ash::vk::PhysicalDeviceOpacityMicromapPropertiesEXT>, + properties_pci_bus_info_ext: Option<ash::vk::PhysicalDevicePCIBusInfoPropertiesEXT>, + properties_pipeline_robustness_ext: + Option<ash::vk::PhysicalDevicePipelineRobustnessPropertiesEXT>, + properties_provoking_vertex_ext: Option<ash::vk::PhysicalDeviceProvokingVertexPropertiesEXT>, + properties_robustness2_ext: Option<ash::vk::PhysicalDeviceRobustness2PropertiesEXT>, + properties_sample_locations_ext: Option<ash::vk::PhysicalDeviceSampleLocationsPropertiesEXT>, + properties_shader_module_identifier_ext: + Option<ash::vk::PhysicalDeviceShaderModuleIdentifierPropertiesEXT>, + properties_transform_feedback_ext: + Option<ash::vk::PhysicalDeviceTransformFeedbackPropertiesEXT>, + properties_vertex_attribute_divisor_ext: + Option<ash::vk::PhysicalDeviceVertexAttributeDivisorPropertiesEXT>, + properties_cooperative_matrix_nv: Option<ash::vk::PhysicalDeviceCooperativeMatrixPropertiesNV>, + properties_copy_memory_indirect_nv: + Option<ash::vk::PhysicalDeviceCopyMemoryIndirectPropertiesNV>, + properties_device_generated_commands_nv: + Option<ash::vk::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV>, + properties_fragment_density_map_offset_qcom: + Option<ash::vk::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>, + properties_fragment_shading_rate_enums_nv: + Option<ash::vk::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV>, + properties_image_processing_qcom: Option<ash::vk::PhysicalDeviceImageProcessingPropertiesQCOM>, + properties_memory_decompression_nv: + Option<ash::vk::PhysicalDeviceMemoryDecompressionPropertiesNV>, + properties_mesh_shader_nv: Option<ash::vk::PhysicalDeviceMeshShaderPropertiesNV>, + properties_multiview_per_view_attributes_nvx: + Option<ash::vk::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>, + properties_optical_flow_nv: Option<ash::vk::PhysicalDeviceOpticalFlowPropertiesNV>, + properties_ray_tracing_invocation_reorder_nv: + Option<ash::vk::PhysicalDeviceRayTracingInvocationReorderPropertiesNV>, + properties_ray_tracing_nv: Option<ash::vk::PhysicalDeviceRayTracingPropertiesNV>, + properties_shader_core_builtins_arm: + Option<ash::vk::PhysicalDeviceShaderCoreBuiltinsPropertiesARM>, + properties_shader_core2_amd: Option<ash::vk::PhysicalDeviceShaderCoreProperties2AMD>, + properties_shader_core_amd: Option<ash::vk::PhysicalDeviceShaderCorePropertiesAMD>, + properties_shader_sm_builtins_nv: Option<ash::vk::PhysicalDeviceShaderSMBuiltinsPropertiesNV>, + properties_shading_rate_image_nv: Option<ash::vk::PhysicalDeviceShadingRateImagePropertiesNV>, + properties_subpass_shading_huawei: + Option<ash::vk::PhysicalDeviceSubpassShadingPropertiesHUAWEI>, +} +impl PropertiesFfi { + pub(crate) fn make_chain( + &mut self, + api_version: Version, + device_extensions: &DeviceExtensions, + instance_extensions: &InstanceExtensions, + ) { + self.properties_vulkan10 = Default::default(); + let head = &mut self.properties_vulkan10; + if [api_version >= Version::V1_2].into_iter().any(|x| x) && [].into_iter().all(|x| x) { + self.properties_vulkan11 = Some(Default::default()); + let member = self.properties_vulkan11.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [api_version >= Version::V1_2].into_iter().any(|x| x) && [].into_iter().all(|x| x) { + self.properties_vulkan12 = Some(Default::default()); + let member = self.properties_vulkan12.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [api_version >= Version::V1_3].into_iter().any(|x| x) && [].into_iter().all(|x| x) { + self.properties_vulkan13 = Some(Default::default()); + let member = self.properties_vulkan13.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_1, + instance_extensions.khr_external_fence_capabilities, + instance_extensions.khr_external_memory_capabilities, + instance_extensions.khr_external_semaphore_capabilities, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan11.is_none()].into_iter().all(|x| x) + { + self.properties_id = Some(Default::default()); + let member = self.properties_id.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_1, + device_extensions.khr_maintenance3, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan11.is_none()].into_iter().all(|x| x) + { + self.properties_maintenance3 = Some(Default::default()); + let member = self.properties_maintenance3.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_1, + device_extensions.khr_multiview, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan11.is_none()].into_iter().all(|x| x) + { + self.properties_multiview = Some(Default::default()); + let member = self.properties_multiview.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_1, + device_extensions.khr_maintenance2, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan11.is_none()].into_iter().all(|x| x) + { + self.properties_point_clipping = Some(Default::default()); + let member = self.properties_point_clipping.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [api_version >= Version::V1_1].into_iter().any(|x| x) + && [self.properties_vulkan11.is_none()].into_iter().all(|x| x) + { + self.properties_protected_memory = Some(Default::default()); + let member = self.properties_protected_memory.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [api_version >= Version::V1_1].into_iter().any(|x| x) + && [self.properties_vulkan11.is_none()].into_iter().all(|x| x) + { + self.properties_subgroup = Some(Default::default()); + let member = self.properties_subgroup.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_2, + device_extensions.khr_depth_stencil_resolve, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan12.is_none()].into_iter().all(|x| x) + { + self.properties_depth_stencil_resolve = Some(Default::default()); + let member = self.properties_depth_stencil_resolve.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_2, + device_extensions.ext_descriptor_indexing, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan12.is_none()].into_iter().all(|x| x) + { + self.properties_descriptor_indexing = Some(Default::default()); + let member = self.properties_descriptor_indexing.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_2, + device_extensions.khr_driver_properties, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan12.is_none()].into_iter().all(|x| x) + { + self.properties_driver = Some(Default::default()); + let member = self.properties_driver.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_2, + device_extensions.khr_shader_float_controls, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan12.is_none()].into_iter().all(|x| x) + { + self.properties_float_controls = Some(Default::default()); + let member = self.properties_float_controls.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_2, + device_extensions.ext_sampler_filter_minmax, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan12.is_none()].into_iter().all(|x| x) + { + self.properties_sampler_filter_minmax = Some(Default::default()); + let member = self.properties_sampler_filter_minmax.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_2, + device_extensions.khr_timeline_semaphore, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan12.is_none()].into_iter().all(|x| x) + { + self.properties_timeline_semaphore = Some(Default::default()); + let member = self.properties_timeline_semaphore.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_3, + device_extensions.ext_inline_uniform_block, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan13.is_none()].into_iter().all(|x| x) + { + self.properties_inline_uniform_block = Some(Default::default()); + let member = self.properties_inline_uniform_block.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_3, + device_extensions.khr_maintenance4, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan13.is_none()].into_iter().all(|x| x) + { + self.properties_maintenance4 = Some(Default::default()); + let member = self.properties_maintenance4.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_3, + device_extensions.khr_shader_integer_dot_product, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan13.is_none()].into_iter().all(|x| x) + { + self.properties_shader_integer_dot_product = Some(Default::default()); + let member = self.properties_shader_integer_dot_product.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_3, + device_extensions.ext_subgroup_size_control, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan13.is_none()].into_iter().all(|x| x) + { + self.properties_subgroup_size_control = Some(Default::default()); + let member = self.properties_subgroup_size_control.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [ + api_version >= Version::V1_3, + device_extensions.ext_texel_buffer_alignment, + ] + .into_iter() + .any(|x| x) + && [self.properties_vulkan13.is_none()].into_iter().all(|x| x) + { + self.properties_texel_buffer_alignment = Some(Default::default()); + let member = self.properties_texel_buffer_alignment.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.properties_acceleration_structure_khr = Some(Default::default()); + let member = self.properties_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] + .into_iter() + .any(|x| x) + && [].into_iter().all(|x| x) + { + self.properties_fragment_shader_barycentric_khr = Some(Default::default()); + let member = self + .properties_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.properties_fragment_shading_rate_khr = Some(Default::default()); + let member = self.properties_fragment_shading_rate_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.properties_performance_query_khr = Some(Default::default()); + let member = self.properties_performance_query_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.properties_portability_subset_khr = Some(Default::default()); + let member = self.properties_portability_subset_khr.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [device_extensions.khr_push_descriptor] + .into_iter() + .any(|x| x) + && [].into_iter().all(|x| x) + { + self.properties_push_descriptor_khr = Some(Default::default()); + let member = self.properties_push_descriptor_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.properties_ray_tracing_pipeline_khr = Some(Default::default()); + let member = self.properties_ray_tracing_pipeline_khr.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.properties_blend_operation_advanced_ext = Some(Default::default()); + let member = self + .properties_blend_operation_advanced_ext + .as_mut() + .unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [device_extensions.ext_conservative_rasterization] + .into_iter() + .any(|x| x) + && [].into_iter().all(|x| x) + { + self.properties_conservative_rasterization_ext = Some(Default::default()); + let member = self + .properties_conservative_rasterization_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.properties_custom_border_color_ext = Some(Default::default()); + let member = self.properties_custom_border_color_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.properties_descriptor_buffer_density_map_ext = Some(Default::default()); + let member = self + .properties_descriptor_buffer_density_map_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.properties_descriptor_buffer_ext = Some(Default::default()); + let member = self.properties_descriptor_buffer_ext.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [device_extensions.ext_discard_rectangles] + .into_iter() + .any(|x| x) + && [].into_iter().all(|x| x) + { + self.properties_discard_rectangle_ext = Some(Default::default()); + let member = self.properties_discard_rectangle_ext.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [device_extensions.ext_physical_device_drm] + .into_iter() + .any(|x| x) + && [].into_iter().all(|x| x) + { + self.properties_drm_ext = Some(Default::default()); + let member = self.properties_drm_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.properties_extended_dynamic_state3_ext = Some(Default::default()); + let member = self + .properties_extended_dynamic_state3_ext + .as_mut() + .unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [device_extensions.ext_external_memory_host] + .into_iter() + .any(|x| x) + && [].into_iter().all(|x| x) + { + self.properties_external_memory_host_ext = Some(Default::default()); + let member = self.properties_external_memory_host_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.properties_fragment_density_map2_ext = Some(Default::default()); + let member = self.properties_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.properties_fragment_density_map_ext = Some(Default::default()); + let member = self.properties_fragment_density_map_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.properties_graphics_pipeline_library_ext = Some(Default::default()); + let member = self + .properties_graphics_pipeline_library_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.properties_line_rasterization_ext = Some(Default::default()); + let member = self.properties_line_rasterization_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.properties_mesh_shader_ext = Some(Default::default()); + let member = self.properties_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.properties_multi_draw_ext = Some(Default::default()); + let member = self.properties_multi_draw_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.properties_opacity_micromap_ext = Some(Default::default()); + let member = self.properties_opacity_micromap_ext.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [device_extensions.ext_pci_bus_info].into_iter().any(|x| x) && [].into_iter().all(|x| x) + { + self.properties_pci_bus_info_ext = Some(Default::default()); + let member = self.properties_pci_bus_info_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.properties_pipeline_robustness_ext = Some(Default::default()); + let member = self.properties_pipeline_robustness_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.properties_provoking_vertex_ext = Some(Default::default()); + let member = self.properties_provoking_vertex_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.properties_robustness2_ext = Some(Default::default()); + let member = self.properties_robustness2_ext.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [device_extensions.ext_sample_locations] + .into_iter() + .any(|x| x) + && [].into_iter().all(|x| x) + { + self.properties_sample_locations_ext = Some(Default::default()); + let member = self.properties_sample_locations_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.properties_shader_module_identifier_ext = Some(Default::default()); + let member = self + .properties_shader_module_identifier_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.properties_transform_feedback_ext = Some(Default::default()); + let member = self.properties_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.properties_vertex_attribute_divisor_ext = Some(Default::default()); + let member = self + .properties_vertex_attribute_divisor_ext + .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.properties_cooperative_matrix_nv = Some(Default::default()); + let member = self.properties_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.properties_copy_memory_indirect_nv = Some(Default::default()); + let member = self.properties_copy_memory_indirect_nv.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.properties_device_generated_commands_nv = Some(Default::default()); + let member = self + .properties_device_generated_commands_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.properties_fragment_density_map_offset_qcom = Some(Default::default()); + let member = self + .properties_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.properties_fragment_shading_rate_enums_nv = Some(Default::default()); + let member = self + .properties_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.properties_image_processing_qcom = Some(Default::default()); + let member = self.properties_image_processing_qcom.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.properties_memory_decompression_nv = Some(Default::default()); + let member = self.properties_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.properties_mesh_shader_ext.is_none()] + .into_iter() + .all(|x| x) + { + self.properties_mesh_shader_nv = Some(Default::default()); + let member = self.properties_mesh_shader_nv.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [device_extensions.nvx_multiview_per_view_attributes] + .into_iter() + .any(|x| x) + && [].into_iter().all(|x| x) + { + self.properties_multiview_per_view_attributes_nvx = Some(Default::default()); + let member = self + .properties_multiview_per_view_attributes_nvx + .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.properties_optical_flow_nv = Some(Default::default()); + let member = self.properties_optical_flow_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.properties_ray_tracing_invocation_reorder_nv = Some(Default::default()); + let member = self + .properties_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].into_iter().any(|x| x) + && [ + self.properties_ray_tracing_pipeline_khr.is_none(), + self.properties_acceleration_structure_khr.is_none(), + ] + .into_iter() + .all(|x| x) + { + self.properties_ray_tracing_nv = Some(Default::default()); + let member = self.properties_ray_tracing_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.properties_shader_core_builtins_arm = Some(Default::default()); + let member = self.properties_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_core_properties2] + .into_iter() + .any(|x| x) + && [].into_iter().all(|x| x) + { + self.properties_shader_core2_amd = Some(Default::default()); + let member = self.properties_shader_core2_amd.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + if [device_extensions.amd_shader_core_properties] + .into_iter() + .any(|x| x) + && [].into_iter().all(|x| x) + { + self.properties_shader_core_amd = Some(Default::default()); + let member = self.properties_shader_core_amd.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.properties_shader_sm_builtins_nv = Some(Default::default()); + let member = self.properties_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.properties_shading_rate_image_nv = Some(Default::default()); + let member = self.properties_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.properties_subpass_shading_huawei = Some(Default::default()); + let member = self.properties_subpass_shading_huawei.as_mut().unwrap(); + member.p_next = head.p_next; + head.p_next = member as *mut _ as _; + } + } + pub(crate) fn head_as_mut(&mut self) -> &mut ash::vk::PhysicalDeviceProperties2KHR { + &mut self.properties_vulkan10 + } +} |