1 // This file is auto-generated by vulkano autogen from vk.xml header version 1.3.238. 2 // It should not be edited manually. Changes should be made by editing autogen. 3 4 #[doc = r" Represents all the properties of a physical device."] 5 #[doc = r""] 6 #[doc = r" Depending on the highest version of Vulkan supported by the physical device, and the"] 7 #[doc = r" available extensions, not every property may be available. For that reason, some"] 8 #[doc = r" properties are wrapped in an `Option`."] 9 #[derive(Clone, Debug)] 10 pub struct Properties { 11 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-accelerationStructureCaptureReplayDescriptorDataSize)"] 12 pub acceleration_structure_capture_replay_descriptor_data_size: Option<usize>, 13 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-accelerationStructureDescriptorSize)"] 14 pub acceleration_structure_descriptor_size: Option<usize>, 15 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html#limits-activeComputeUnitCount)"] 16 pub active_compute_unit_count: Option<u32>, 17 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html#limits-advancedBlendAllOperations)"] 18 pub advanced_blend_all_operations: Option<bool>, 19 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html#limits-advancedBlendCorrelatedOverlap)"] 20 pub advanced_blend_correlated_overlap: Option<bool>, 21 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html#limits-advancedBlendIndependentBlend)"] 22 pub advanced_blend_independent_blend: Option<bool>, 23 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html#limits-advancedBlendMaxColorAttachments)"] 24 pub advanced_blend_max_color_attachments: Option<u32>, 25 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html#limits-advancedBlendNonPremultipliedDstColor)"] 26 pub advanced_blend_non_premultiplied_dst_color: Option<bool>, 27 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html#limits-advancedBlendNonPremultipliedSrcColor)"] 28 pub advanced_blend_non_premultiplied_src_color: Option<bool>, 29 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePerformanceQueryPropertiesKHR.html#limits-allowCommandBufferQueryCopies)"] 30 pub allow_command_buffer_query_copies: Option<bool>, 31 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-allowSamplerImageViewPostSubmitCreation)"] 32 pub allow_sampler_image_view_post_submit_creation: Option<bool>, 33 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-apiVersion)"] 34 pub api_version: Version, 35 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-bidirectionalFlowSupported)"] 36 pub bidirectional_flow_supported: Option<bool>, 37 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-bufferCaptureReplayDescriptorDataSize)"] 38 pub buffer_capture_replay_descriptor_data_size: Option<usize>, 39 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-bufferImageGranularity)"] 40 pub buffer_image_granularity: DeviceAlignment, 41 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-bufferlessPushDescriptors)"] 42 pub bufferless_push_descriptors: Option<bool>, 43 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.html#limits-combinedImageSamplerDensityMapDescriptorSize)"] 44 pub combined_image_sampler_density_map_descriptor_size: Option<usize>, 45 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-combinedImageSamplerDescriptorSingleArray)"] 46 pub combined_image_sampler_descriptor_single_array: Option<bool>, 47 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-combinedImageSamplerDescriptorSize)"] 48 pub combined_image_sampler_descriptor_size: Option<usize>, 49 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-computeUnitsPerShaderArray)"] 50 pub compute_units_per_shader_array: Option<u32>, 51 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-conformanceVersion)"] 52 pub conformance_version: Option<ConformanceVersion>, 53 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-conservativePointAndLineRasterization)"] 54 pub conservative_point_and_line_rasterization: Option<bool>, 55 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-conservativeRasterizationPostDepthCoverage)"] 56 pub conservative_rasterization_post_depth_coverage: Option<bool>, 57 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesNV.html#limits-cooperativeMatrixSupportedStages)"] 58 pub cooperative_matrix_supported_stages: Option<ShaderStages>, 59 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-costSupported)"] 60 pub cost_supported: Option<bool>, 61 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesNV.html#limits-decompressionMethods)"] 62 pub decompression_methods: Option<MemoryDecompressionMethods>, 63 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html#limits-defaultRobustnessImages)"] 64 pub default_robustness_images: Option<PipelineRobustnessImageBehavior>, 65 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html#limits-defaultRobustnessStorageBuffers)"] 66 pub default_robustness_storage_buffers: Option<PipelineRobustnessBufferBehavior>, 67 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html#limits-defaultRobustnessUniformBuffers)"] 68 pub default_robustness_uniform_buffers: Option<PipelineRobustnessBufferBehavior>, 69 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePipelineRobustnessPropertiesEXT.html#limits-defaultRobustnessVertexInputs)"] 70 pub default_robustness_vertex_inputs: Option<PipelineRobustnessBufferBehavior>, 71 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-degenerateLinesRasterized)"] 72 pub degenerate_lines_rasterized: Option<bool>, 73 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-degenerateTrianglesRasterized)"] 74 pub degenerate_triangles_rasterized: Option<bool>, 75 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-denormBehaviorIndependence)"] 76 pub denorm_behavior_independence: Option<ShaderFloatControlsIndependence>, 77 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-descriptorBufferAddressSpaceSize)"] 78 pub descriptor_buffer_address_space_size: Option<DeviceSize>, 79 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-descriptorBufferOffsetAlignment)"] 80 pub descriptor_buffer_offset_alignment: Option<DeviceSize>, 81 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-deviceID)"] 82 pub device_id: u32, 83 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-deviceLUID)"] 84 pub device_luid: Option<[u8; 8]>, 85 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-deviceLUIDValid)"] 86 pub device_luid_valid: Option<bool>, 87 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-deviceName)"] 88 pub device_name: String, 89 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-deviceNodeMask)"] 90 pub device_node_mask: Option<u32>, 91 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-deviceType)"] 92 pub device_type: PhysicalDeviceType, 93 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-deviceUUID)"] 94 pub device_uuid: Option<[u8; 16]>, 95 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-discreteQueuePriorities)"] 96 pub discrete_queue_priorities: u32, 97 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-driverID)"] 98 pub driver_id: Option<DriverId>, 99 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-driverInfo)"] 100 pub driver_info: Option<String>, 101 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-driverName)"] 102 pub driver_name: Option<String>, 103 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-driverUUID)"] 104 pub driver_uuid: Option<[u8; 16]>, 105 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-driverVersion)"] 106 pub driver_version: u32, 107 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExtendedDynamicState3PropertiesEXT.html#limits-dynamicPrimitiveTopologyUnrestricted)"] 108 pub dynamic_primitive_topology_unrestricted: Option<bool>, 109 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-extraPrimitiveOverestimationSizeGranularity)"] 110 pub extra_primitive_overestimation_size_granularity: Option<f32>, 111 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-filterMinmaxImageComponentMapping)"] 112 pub filter_minmax_image_component_mapping: Option<bool>, 113 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-filterMinmaxSingleComponentFormats)"] 114 pub filter_minmax_single_component_formats: Option<bool>, 115 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html#limits-fragmentDensityInvocations)"] 116 pub fragment_density_invocations: Option<bool>, 117 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.html#limits-fragmentDensityOffsetGranularity)"] 118 pub fragment_density_offset_granularity: Option<[u32; 2]>, 119 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateNonTrivialCombinerOps)"] 120 pub fragment_shading_rate_non_trivial_combiner_ops: Option<bool>, 121 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateStrictMultiplyCombiner)"] 122 pub fragment_shading_rate_strict_multiply_combiner: Option<bool>, 123 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateWithConservativeRasterization)"] 124 pub fragment_shading_rate_with_conservative_rasterization: Option<bool>, 125 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateWithCustomSampleLocations)"] 126 pub fragment_shading_rate_with_custom_sample_locations: Option<bool>, 127 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateWithFragmentShaderInterlock)"] 128 pub fragment_shading_rate_with_fragment_shader_interlock: Option<bool>, 129 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateWithSampleMask)"] 130 pub fragment_shading_rate_with_sample_mask: Option<bool>, 131 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateWithShaderDepthStencilWrites)"] 132 pub fragment_shading_rate_with_shader_depth_stencil_writes: Option<bool>, 133 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-fragmentShadingRateWithShaderSampleMask)"] 134 pub fragment_shading_rate_with_shader_sample_mask: Option<bool>, 135 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-framebufferColorSampleCounts)"] 136 pub framebuffer_color_sample_counts: SampleCounts, 137 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-framebufferDepthSampleCounts)"] 138 pub framebuffer_depth_sample_counts: SampleCounts, 139 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-framebufferIntegerColorSampleCounts)"] 140 pub framebuffer_integer_color_sample_counts: Option<SampleCounts>, 141 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-framebufferNoAttachmentsSampleCounts)"] 142 pub framebuffer_no_attachments_sample_counts: SampleCounts, 143 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-framebufferStencilSampleCounts)"] 144 pub framebuffer_stencil_sample_counts: SampleCounts, 145 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-fullyCoveredFragmentShaderInputVariable)"] 146 pub fully_covered_fragment_shader_input_variable: Option<bool>, 147 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-globalFlowSupported)"] 148 pub global_flow_supported: Option<bool>, 149 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.html#limits-graphicsPipelineLibraryFastLinking)"] 150 pub graphics_pipeline_library_fast_linking: Option<bool>, 151 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.html#limits-graphicsPipelineLibraryIndependentInterpolationDecoration)"] 152 pub graphics_pipeline_library_independent_interpolation_decoration: Option<bool>, 153 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html#limits-hasPrimary)"] 154 pub has_primary: Option<bool>, 155 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html#limits-hasRender)"] 156 pub has_render: Option<bool>, 157 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-hintSupported)"] 158 pub hint_supported: Option<bool>, 159 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-imageCaptureReplayDescriptorDataSize)"] 160 pub image_capture_replay_descriptor_data_size: Option<usize>, 161 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-imageViewCaptureReplayDescriptorDataSize)"] 162 pub image_view_capture_replay_descriptor_data_size: Option<usize>, 163 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-independentResolve)"] 164 pub independent_resolve: Option<bool>, 165 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-independentResolveNone)"] 166 pub independent_resolve_none: Option<bool>, 167 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-inputAttachmentDescriptorSize)"] 168 pub input_attachment_descriptor_size: Option<usize>, 169 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct16BitMixedSignednessAccelerated)"] 170 pub integer_dot_product16_bit_mixed_signedness_accelerated: Option<bool>, 171 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct16BitSignedAccelerated)"] 172 pub integer_dot_product16_bit_signed_accelerated: Option<bool>, 173 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct16BitUnsignedAccelerated)"] 174 pub integer_dot_product16_bit_unsigned_accelerated: Option<bool>, 175 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct32BitMixedSignednessAccelerated)"] 176 pub integer_dot_product32_bit_mixed_signedness_accelerated: Option<bool>, 177 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct32BitSignedAccelerated)"] 178 pub integer_dot_product32_bit_signed_accelerated: Option<bool>, 179 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct32BitUnsignedAccelerated)"] 180 pub integer_dot_product32_bit_unsigned_accelerated: Option<bool>, 181 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct4x8BitPackedMixedSignednessAccelerated)"] 182 pub integer_dot_product4x8_bit_packed_mixed_signedness_accelerated: Option<bool>, 183 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct4x8BitPackedSignedAccelerated)"] 184 pub integer_dot_product4x8_bit_packed_signed_accelerated: Option<bool>, 185 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct4x8BitPackedUnsignedAccelerated)"] 186 pub integer_dot_product4x8_bit_packed_unsigned_accelerated: Option<bool>, 187 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct64BitMixedSignednessAccelerated)"] 188 pub integer_dot_product64_bit_mixed_signedness_accelerated: Option<bool>, 189 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct64BitSignedAccelerated)"] 190 pub integer_dot_product64_bit_signed_accelerated: Option<bool>, 191 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct64BitUnsignedAccelerated)"] 192 pub integer_dot_product64_bit_unsigned_accelerated: Option<bool>, 193 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct8BitMixedSignednessAccelerated)"] 194 pub integer_dot_product8_bit_mixed_signedness_accelerated: Option<bool>, 195 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct8BitSignedAccelerated)"] 196 pub integer_dot_product8_bit_signed_accelerated: Option<bool>, 197 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProduct8BitUnsignedAccelerated)"] 198 pub integer_dot_product8_bit_unsigned_accelerated: Option<bool>, 199 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated)"] 200 pub integer_dot_product_accumulating_saturating16_bit_mixed_signedness_accelerated: 201 Option<bool>, 202 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating16BitSignedAccelerated)"] 203 pub integer_dot_product_accumulating_saturating16_bit_signed_accelerated: Option<bool>, 204 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating16BitUnsignedAccelerated)"] 205 pub integer_dot_product_accumulating_saturating16_bit_unsigned_accelerated: Option<bool>, 206 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated)"] 207 pub integer_dot_product_accumulating_saturating32_bit_mixed_signedness_accelerated: 208 Option<bool>, 209 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating32BitSignedAccelerated)"] 210 pub integer_dot_product_accumulating_saturating32_bit_signed_accelerated: Option<bool>, 211 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating32BitUnsignedAccelerated)"] 212 pub integer_dot_product_accumulating_saturating32_bit_unsigned_accelerated: Option<bool>, 213 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated)"] 214 pub integer_dot_product_accumulating_saturating4x8_bit_packed_mixed_signedness_accelerated: 215 Option<bool>, 216 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated)"] 217 pub integer_dot_product_accumulating_saturating4x8_bit_packed_signed_accelerated: Option<bool>, 218 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated)"] 219 pub integer_dot_product_accumulating_saturating4x8_bit_packed_unsigned_accelerated: 220 Option<bool>, 221 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated)"] 222 pub integer_dot_product_accumulating_saturating64_bit_mixed_signedness_accelerated: 223 Option<bool>, 224 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating64BitSignedAccelerated)"] 225 pub integer_dot_product_accumulating_saturating64_bit_signed_accelerated: Option<bool>, 226 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating64BitUnsignedAccelerated)"] 227 pub integer_dot_product_accumulating_saturating64_bit_unsigned_accelerated: Option<bool>, 228 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated)"] 229 pub integer_dot_product_accumulating_saturating8_bit_mixed_signedness_accelerated: Option<bool>, 230 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating8BitSignedAccelerated)"] 231 pub integer_dot_product_accumulating_saturating8_bit_signed_accelerated: Option<bool>, 232 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-integerDotProductAccumulatingSaturating8BitUnsignedAccelerated)"] 233 pub integer_dot_product_accumulating_saturating8_bit_unsigned_accelerated: Option<bool>, 234 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-layeredShadingRateAttachments)"] 235 pub layered_shading_rate_attachments: Option<bool>, 236 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLineRasterizationPropertiesEXT.html#limits-lineSubPixelPrecisionBits)"] 237 pub line_sub_pixel_precision_bits: Option<u32>, 238 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-lineWidthGranularity)"] 239 pub line_width_granularity: f32, 240 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-lineWidthRange)"] 241 pub line_width_range: [f32; 2], 242 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html#limits-maxBlockMatchRegion)"] 243 pub max_block_match_region: Option<[u32; 2]>, 244 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxBoundDescriptorSets)"] 245 pub max_bound_descriptor_sets: u32, 246 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html#limits-maxBoxFilterBlockSize)"] 247 pub max_box_filter_block_size: Option<[u32; 2]>, 248 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxBufferSize)"] 249 pub max_buffer_size: Option<DeviceSize>, 250 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxClipDistances)"] 251 pub max_clip_distances: u32, 252 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxColorAttachments)"] 253 pub max_color_attachments: u32, 254 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxCombinedClipAndCullDistances)"] 255 pub max_combined_clip_and_cull_distances: u32, 256 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxComputeSharedMemorySize)"] 257 pub max_compute_shared_memory_size: u32, 258 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxComputeWorkGroupCount)"] 259 pub max_compute_work_group_count: [u32; 3], 260 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxComputeWorkGroupInvocations)"] 261 pub max_compute_work_group_invocations: u32, 262 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxComputeWorkGroupSize)"] 263 pub max_compute_work_group_size: [u32; 3], 264 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxComputeWorkgroupSubgroups)"] 265 pub max_compute_workgroup_subgroups: Option<u32>, 266 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxCullDistances)"] 267 pub max_cull_distances: u32, 268 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCustomBorderColorPropertiesEXT.html#limits-maxCustomBorderColorSamplers)"] 269 pub max_custom_border_color_samplers: Option<u32>, 270 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesNV.html#limits-maxDecompressionIndirectCount)"] 271 pub max_decompression_indirect_count: Option<u64>, 272 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxDescriptorBufferBindings)"] 273 pub max_descriptor_buffer_bindings: Option<u32>, 274 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxDescriptorSetAccelerationStructures)"] 275 pub max_descriptor_set_acceleration_structures: Option<u32>, 276 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxDescriptorSetInlineUniformBlocks)"] 277 pub max_descriptor_set_inline_uniform_blocks: Option<u32>, 278 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetInputAttachments)"] 279 pub max_descriptor_set_input_attachments: u32, 280 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetSampledImages)"] 281 pub max_descriptor_set_sampled_images: u32, 282 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetSamplers)"] 283 pub max_descriptor_set_samplers: u32, 284 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetStorageBuffers)"] 285 pub max_descriptor_set_storage_buffers: u32, 286 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetStorageBuffersDynamic)"] 287 pub max_descriptor_set_storage_buffers_dynamic: u32, 288 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetStorageImages)"] 289 pub max_descriptor_set_storage_images: u32, 290 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html#limits-maxDescriptorSetSubsampledSamplers)"] 291 pub max_descriptor_set_subsampled_samplers: Option<u32>, 292 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetUniformBuffers)"] 293 pub max_descriptor_set_uniform_buffers: u32, 294 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDescriptorSetUniformBuffersDynamic)"] 295 pub max_descriptor_set_uniform_buffers_dynamic: u32, 296 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxDescriptorSetUpdateAfterBindAccelerationStructures)"] 297 pub max_descriptor_set_update_after_bind_acceleration_structures: Option<u32>, 298 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxDescriptorSetUpdateAfterBindInlineUniformBlocks)"] 299 pub max_descriptor_set_update_after_bind_inline_uniform_blocks: Option<u32>, 300 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindInputAttachments)"] 301 pub max_descriptor_set_update_after_bind_input_attachments: Option<u32>, 302 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindSampledImages)"] 303 pub max_descriptor_set_update_after_bind_sampled_images: Option<u32>, 304 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindSamplers)"] 305 pub max_descriptor_set_update_after_bind_samplers: Option<u32>, 306 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindStorageBuffers)"] 307 pub max_descriptor_set_update_after_bind_storage_buffers: Option<u32>, 308 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindStorageBuffersDynamic)"] 309 pub max_descriptor_set_update_after_bind_storage_buffers_dynamic: Option<u32>, 310 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindStorageImages)"] 311 pub max_descriptor_set_update_after_bind_storage_images: Option<u32>, 312 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindUniformBuffers)"] 313 pub max_descriptor_set_update_after_bind_uniform_buffers: Option<u32>, 314 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxDescriptorSetUpdateAfterBindUniformBuffersDynamic)"] 315 pub max_descriptor_set_update_after_bind_uniform_buffers_dynamic: Option<u32>, 316 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html#limits-maxDiscardRectangles)"] 317 pub max_discard_rectangles: Option<u32>, 318 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDrawIndexedIndexValue)"] 319 pub max_draw_indexed_index_value: u32, 320 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxDrawIndirectCount)"] 321 pub max_draw_indirect_count: u32, 322 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html#limits-maxDrawMeshTasksCount)"] 323 pub max_draw_mesh_tasks_count: Option<u32>, 324 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxEmbeddedImmutableSamplerBindings)"] 325 pub max_embedded_immutable_sampler_bindings: Option<u32>, 326 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxEmbeddedImmutableSamplers)"] 327 pub max_embedded_immutable_samplers: Option<u32>, 328 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-maxExtraPrimitiveOverestimationSize)"] 329 pub max_extra_primitive_overestimation_size: Option<f32>, 330 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFragmentCombinedOutputResources)"] 331 pub max_fragment_combined_output_resources: u32, 332 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html#limits-maxFragmentDensityTexelSize)"] 333 pub max_fragment_density_texel_size: Option<[u32; 2]>, 334 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFragmentDualSrcAttachments)"] 335 pub max_fragment_dual_src_attachments: u32, 336 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFragmentInputComponents)"] 337 pub max_fragment_input_components: u32, 338 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFragmentOutputAttachments)"] 339 pub max_fragment_output_attachments: u32, 340 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-maxFragmentShadingRateAttachmentTexelSize)"] 341 pub max_fragment_shading_rate_attachment_texel_size: Option<[u32; 2]>, 342 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio)"] 343 pub max_fragment_shading_rate_attachment_texel_size_aspect_ratio: Option<u32>, 344 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-maxFragmentShadingRateCoverageSamples)"] 345 pub max_fragment_shading_rate_coverage_samples: Option<u32>, 346 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.html#limits-maxFragmentShadingRateInvocationCount)"] 347 pub max_fragment_shading_rate_invocation_count: Option<SampleCount>, 348 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-maxFragmentShadingRateRasterizationSamples)"] 349 pub max_fragment_shading_rate_rasterization_samples: Option<SampleCount>, 350 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-maxFragmentSize)"] 351 pub max_fragment_size: Option<[u32; 2]>, 352 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-maxFragmentSizeAspectRatio)"] 353 pub max_fragment_size_aspect_ratio: Option<u32>, 354 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFramebufferHeight)"] 355 pub max_framebuffer_height: u32, 356 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFramebufferLayers)"] 357 pub max_framebuffer_layers: u32, 358 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxFramebufferWidth)"] 359 pub max_framebuffer_width: u32, 360 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxGeometryCount)"] 361 pub max_geometry_count: Option<u64>, 362 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxGeometryInputComponents)"] 363 pub max_geometry_input_components: u32, 364 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxGeometryOutputComponents)"] 365 pub max_geometry_output_components: u32, 366 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxGeometryOutputVertices)"] 367 pub max_geometry_output_vertices: u32, 368 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxGeometryShaderInvocations)"] 369 pub max_geometry_shader_invocations: u32, 370 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxGeometryTotalOutputComponents)"] 371 pub max_geometry_total_output_components: u32, 372 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-maxGraphicsShaderGroupCount)"] 373 pub max_graphics_shader_group_count: Option<u32>, 374 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-maxHeight)"] 375 pub max_height: Option<u32>, 376 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxImageArrayLayers)"] 377 pub max_image_array_layers: u32, 378 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxImageDimension1D)"] 379 pub max_image_dimension1_d: u32, 380 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxImageDimension2D)"] 381 pub max_image_dimension2_d: u32, 382 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxImageDimension3D)"] 383 pub max_image_dimension3_d: u32, 384 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxImageDimensionCube)"] 385 pub max_image_dimension_cube: u32, 386 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-maxIndirectCommandsStreamCount)"] 387 pub max_indirect_commands_stream_count: Option<u32>, 388 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-maxIndirectCommandsStreamStride)"] 389 pub max_indirect_commands_stream_stride: Option<u32>, 390 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-maxIndirectCommandsTokenCount)"] 391 pub max_indirect_commands_token_count: Option<u32>, 392 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-maxIndirectCommandsTokenOffset)"] 393 pub max_indirect_commands_token_offset: Option<u32>, 394 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-maxIndirectSequenceCount)"] 395 pub max_indirect_sequence_count: Option<u32>, 396 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxInlineUniformBlockSize)"] 397 pub max_inline_uniform_block_size: Option<u32>, 398 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxInlineUniformTotalSize)"] 399 pub max_inline_uniform_total_size: Option<u32>, 400 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxInstanceCount)"] 401 pub max_instance_count: Option<u64>, 402 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxInterpolationOffset)"] 403 pub max_interpolation_offset: f32, 404 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxMemoryAllocationCount)"] 405 pub max_memory_allocation_count: u32, 406 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-maxMemoryAllocationSize)"] 407 pub max_memory_allocation_size: Option<DeviceSize>, 408 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshMultiviewViewCount)"] 409 pub max_mesh_multiview_view_count: Option<u32>, 410 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshOutputComponents)"] 411 pub max_mesh_output_components: Option<u32>, 412 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshOutputLayers)"] 413 pub max_mesh_output_layers: Option<u32>, 414 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshOutputMemorySize)"] 415 pub max_mesh_output_memory_size: Option<u32>, 416 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshOutputPrimitives)"] 417 pub max_mesh_output_primitives: Option<u32>, 418 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshOutputVertices)"] 419 pub max_mesh_output_vertices: Option<u32>, 420 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshPayloadAndOutputMemorySize)"] 421 pub max_mesh_payload_and_output_memory_size: Option<u32>, 422 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshPayloadAndSharedMemorySize)"] 423 pub max_mesh_payload_and_shared_memory_size: Option<u32>, 424 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshSharedMemorySize)"] 425 pub max_mesh_shared_memory_size: Option<u32>, 426 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html#limits-maxMeshTotalMemorySize)"] 427 pub max_mesh_total_memory_size: Option<u32>, 428 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshWorkGroupCount)"] 429 pub max_mesh_work_group_count: Option<[u32; 3]>, 430 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshWorkGroupInvocations)"] 431 pub max_mesh_work_group_invocations: Option<u32>, 432 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshWorkGroupSize)"] 433 pub max_mesh_work_group_size: Option<[u32; 3]>, 434 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxMeshWorkGroupTotalCount)"] 435 pub max_mesh_work_group_total_count: Option<u32>, 436 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultiDrawPropertiesEXT.html#limits-maxMultiDrawCount)"] 437 pub max_multi_draw_count: Option<u32>, 438 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-maxMultiviewInstanceIndex)"] 439 pub max_multiview_instance_index: Option<u32>, 440 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-maxMultiviewViewCount)"] 441 pub max_multiview_view_count: Option<u32>, 442 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-maxNumRegionsOfInterest)"] 443 pub max_num_regions_of_interest: Option<u32>, 444 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapPropertiesEXT.html#limits-maxOpacity2StateSubdivisionLevel)"] 445 pub max_opacity2_state_subdivision_level: Option<u32>, 446 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpacityMicromapPropertiesEXT.html#limits-maxOpacity4StateSubdivisionLevel)"] 447 pub max_opacity4_state_subdivision_level: Option<u32>, 448 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-maxPerSetDescriptors)"] 449 pub max_per_set_descriptors: Option<u32>, 450 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxPerStageDescriptorAccelerationStructures)"] 451 pub max_per_stage_descriptor_acceleration_structures: Option<u32>, 452 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxPerStageDescriptorInlineUniformBlocks)"] 453 pub max_per_stage_descriptor_inline_uniform_blocks: Option<u32>, 454 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageDescriptorInputAttachments)"] 455 pub max_per_stage_descriptor_input_attachments: u32, 456 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageDescriptorSampledImages)"] 457 pub max_per_stage_descriptor_sampled_images: u32, 458 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageDescriptorSamplers)"] 459 pub max_per_stage_descriptor_samplers: u32, 460 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageDescriptorStorageBuffers)"] 461 pub max_per_stage_descriptor_storage_buffers: u32, 462 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageDescriptorStorageImages)"] 463 pub max_per_stage_descriptor_storage_images: u32, 464 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageDescriptorUniformBuffers)"] 465 pub max_per_stage_descriptor_uniform_buffers: u32, 466 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxPerStageDescriptorUpdateAfterBindAccelerationStructures)"] 467 pub max_per_stage_descriptor_update_after_bind_acceleration_structures: Option<u32>, 468 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks)"] 469 pub max_per_stage_descriptor_update_after_bind_inline_uniform_blocks: Option<u32>, 470 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageDescriptorUpdateAfterBindInputAttachments)"] 471 pub max_per_stage_descriptor_update_after_bind_input_attachments: Option<u32>, 472 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageDescriptorUpdateAfterBindSampledImages)"] 473 pub max_per_stage_descriptor_update_after_bind_sampled_images: Option<u32>, 474 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageDescriptorUpdateAfterBindSamplers)"] 475 pub max_per_stage_descriptor_update_after_bind_samplers: Option<u32>, 476 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageDescriptorUpdateAfterBindStorageBuffers)"] 477 pub max_per_stage_descriptor_update_after_bind_storage_buffers: Option<u32>, 478 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageDescriptorUpdateAfterBindStorageImages)"] 479 pub max_per_stage_descriptor_update_after_bind_storage_images: Option<u32>, 480 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageDescriptorUpdateAfterBindUniformBuffers)"] 481 pub max_per_stage_descriptor_update_after_bind_uniform_buffers: Option<u32>, 482 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPerStageResources)"] 483 pub max_per_stage_resources: u32, 484 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxPerStageUpdateAfterBindResources)"] 485 pub max_per_stage_update_after_bind_resources: Option<u32>, 486 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxPreferredMeshWorkGroupInvocations)"] 487 pub max_preferred_mesh_work_group_invocations: Option<u32>, 488 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxPreferredTaskWorkGroupInvocations)"] 489 pub max_preferred_task_work_group_invocations: Option<u32>, 490 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-maxPrimitiveCount)"] 491 pub max_primitive_count: Option<u64>, 492 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxPushConstantsSize)"] 493 pub max_push_constants_size: u32, 494 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePushDescriptorPropertiesKHR.html#limits-maxPushDescriptors)"] 495 pub max_push_descriptors: Option<u32>, 496 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-maxRayDispatchInvocationCount)"] 497 pub max_ray_dispatch_invocation_count: Option<u32>, 498 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-maxRayHitAttributeSize)"] 499 pub max_ray_hit_attribute_size: Option<u32>, 500 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-maxRayRecursionDepth)"] 501 pub max_ray_recursion_depth: Option<u32>, 502 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html#limits-maxRecursionDepth)"] 503 pub max_recursion_depth: Option<u32>, 504 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxResourceDescriptorBufferBindings)"] 505 pub max_resource_descriptor_buffer_bindings: Option<u32>, 506 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxResourceDescriptorBufferRange)"] 507 pub max_resource_descriptor_buffer_range: Option<DeviceSize>, 508 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html#limits-maxSampleLocationGridSize)"] 509 pub max_sample_location_grid_size: Option<[u32; 2]>, 510 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxSampleMaskWords)"] 511 pub max_sample_mask_words: u32, 512 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxSamplerAllocationCount)"] 513 pub max_sampler_allocation_count: u32, 514 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxSamplerAnisotropy)"] 515 pub max_sampler_anisotropy: f32, 516 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxSamplerDescriptorBufferBindings)"] 517 pub max_sampler_descriptor_buffer_bindings: Option<u32>, 518 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-maxSamplerDescriptorBufferRange)"] 519 pub max_sampler_descriptor_buffer_range: Option<DeviceSize>, 520 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxSamplerLodBias)"] 521 pub max_sampler_lod_bias: f32, 522 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-maxSgprAllocation)"] 523 pub max_sgpr_allocation: Option<u32>, 524 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-maxShaderGroupStride)"] 525 pub max_shader_group_stride: Option<u32>, 526 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxStorageBufferRange)"] 527 pub max_storage_buffer_range: u32, 528 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-maxSubgroupSize)"] 529 pub max_subgroup_size: Option<u32>, 530 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.html#limits-maxSubpassShadingWorkgroupSizeAspectRatio)"] 531 pub max_subpass_shading_workgroup_size_aspect_ratio: Option<u32>, 532 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html#limits-maxSubsampledArrayLayers)"] 533 pub max_subsampled_array_layers: Option<u32>, 534 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html#limits-maxTaskOutputCount)"] 535 pub max_task_output_count: Option<u32>, 536 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskPayloadAndSharedMemorySize)"] 537 pub max_task_payload_and_shared_memory_size: Option<u32>, 538 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskPayloadSize)"] 539 pub max_task_payload_size: Option<u32>, 540 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskSharedMemorySize)"] 541 pub max_task_shared_memory_size: Option<u32>, 542 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html#limits-maxTaskTotalMemorySize)"] 543 pub max_task_total_memory_size: Option<u32>, 544 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskWorkGroupCount)"] 545 pub max_task_work_group_count: Option<[u32; 3]>, 546 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskWorkGroupInvocations)"] 547 pub max_task_work_group_invocations: Option<u32>, 548 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskWorkGroupSize)"] 549 pub max_task_work_group_size: Option<[u32; 3]>, 550 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-maxTaskWorkGroupTotalCount)"] 551 pub max_task_work_group_total_count: Option<u32>, 552 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationControlPerPatchOutputComponents)"] 553 pub max_tessellation_control_per_patch_output_components: u32, 554 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationControlPerVertexInputComponents)"] 555 pub max_tessellation_control_per_vertex_input_components: u32, 556 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationControlPerVertexOutputComponents)"] 557 pub max_tessellation_control_per_vertex_output_components: u32, 558 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationControlTotalOutputComponents)"] 559 pub max_tessellation_control_total_output_components: u32, 560 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationEvaluationInputComponents)"] 561 pub max_tessellation_evaluation_input_components: u32, 562 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationEvaluationOutputComponents)"] 563 pub max_tessellation_evaluation_output_components: u32, 564 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationGenerationLevel)"] 565 pub max_tessellation_generation_level: u32, 566 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTessellationPatchSize)"] 567 pub max_tessellation_patch_size: u32, 568 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTexelBufferElements)"] 569 pub max_texel_buffer_elements: u32, 570 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTexelGatherOffset)"] 571 pub max_texel_gather_offset: u32, 572 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxTexelOffset)"] 573 pub max_texel_offset: u32, 574 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxTimelineSemaphoreValueDifference)"] 575 pub max_timeline_semaphore_value_difference: Option<u64>, 576 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-maxTransformFeedbackBufferDataSize)"] 577 pub max_transform_feedback_buffer_data_size: Option<u32>, 578 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-maxTransformFeedbackBufferDataStride)"] 579 pub max_transform_feedback_buffer_data_stride: Option<u32>, 580 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-maxTransformFeedbackBufferSize)"] 581 pub max_transform_feedback_buffer_size: Option<DeviceSize>, 582 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-maxTransformFeedbackBuffers)"] 583 pub max_transform_feedback_buffers: Option<u32>, 584 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-maxTransformFeedbackStreamDataSize)"] 585 pub max_transform_feedback_stream_data_size: Option<u32>, 586 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-maxTransformFeedbackStreams)"] 587 pub max_transform_feedback_streams: Option<u32>, 588 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html#limits-maxTriangleCount)"] 589 pub max_triangle_count: Option<u64>, 590 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxUniformBufferRange)"] 591 pub max_uniform_buffer_range: u32, 592 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-maxUpdateAfterBindDescriptorsInAllPools)"] 593 pub max_update_after_bind_descriptors_in_all_pools: Option<u32>, 594 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html#limits-maxVertexAttribDivisor)"] 595 pub max_vertex_attrib_divisor: Option<u32>, 596 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxVertexInputAttributeOffset)"] 597 pub max_vertex_input_attribute_offset: u32, 598 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxVertexInputAttributes)"] 599 pub max_vertex_input_attributes: u32, 600 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxVertexInputBindingStride)"] 601 pub max_vertex_input_binding_stride: u32, 602 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxVertexInputBindings)"] 603 pub max_vertex_input_bindings: u32, 604 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxVertexOutputComponents)"] 605 pub max_vertex_output_components: u32, 606 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-maxVgprAllocation)"] 607 pub max_vgpr_allocation: Option<u32>, 608 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxViewportDimensions)"] 609 pub max_viewport_dimensions: [u32; 2], 610 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-maxViewports)"] 611 pub max_viewports: u32, 612 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html#limits-maxWeightFilterDimension)"] 613 pub max_weight_filter_dimension: Option<[u32; 2]>, 614 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html#limits-maxWeightFilterPhases)"] 615 pub max_weight_filter_phases: Option<u32>, 616 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-maxWidth)"] 617 pub max_width: Option<u32>, 618 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-meshOutputPerPrimitiveGranularity)"] 619 pub mesh_output_per_primitive_granularity: Option<u32>, 620 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-meshOutputPerVertexGranularity)"] 621 pub mesh_output_per_vertex_granularity: Option<u32>, 622 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html#limits-minAccelerationStructureScratchOffsetAlignment)"] 623 pub min_acceleration_structure_scratch_offset_alignment: Option<u32>, 624 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html#limits-minFragmentDensityTexelSize)"] 625 pub min_fragment_density_texel_size: Option<[u32; 2]>, 626 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-minFragmentShadingRateAttachmentTexelSize)"] 627 pub min_fragment_shading_rate_attachment_texel_size: Option<[u32; 2]>, 628 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-minHeight)"] 629 pub min_height: Option<u32>, 630 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html#limits-minImportedHostPointerAlignment)"] 631 pub min_imported_host_pointer_alignment: Option<DeviceSize>, 632 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-minIndirectCommandsBufferOffsetAlignment)"] 633 pub min_indirect_commands_buffer_offset_alignment: Option<u32>, 634 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minInterpolationOffset)"] 635 pub min_interpolation_offset: f32, 636 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minMemoryMapAlignment)"] 637 pub min_memory_map_alignment: usize, 638 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-minSequencesCountBufferOffsetAlignment)"] 639 pub min_sequences_count_buffer_offset_alignment: Option<u32>, 640 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html#limits-minSequencesIndexBufferOffsetAlignment)"] 641 pub min_sequences_index_buffer_offset_alignment: Option<u32>, 642 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-minSgprAllocation)"] 643 pub min_sgpr_allocation: Option<u32>, 644 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minStorageBufferOffsetAlignment)"] 645 pub min_storage_buffer_offset_alignment: DeviceAlignment, 646 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-minSubgroupSize)"] 647 pub min_subgroup_size: Option<u32>, 648 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minTexelBufferOffsetAlignment)"] 649 pub min_texel_buffer_offset_alignment: DeviceAlignment, 650 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minTexelGatherOffset)"] 651 pub min_texel_gather_offset: i32, 652 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minTexelOffset)"] 653 pub min_texel_offset: i32, 654 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-minUniformBufferOffsetAlignment)"] 655 pub min_uniform_buffer_offset_alignment: DeviceAlignment, 656 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePortabilitySubsetPropertiesKHR.html#limits-minVertexInputBindingStrideAlignment)"] 657 pub min_vertex_input_binding_stride_alignment: Option<u32>, 658 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-minVgprAllocation)"] 659 pub min_vgpr_allocation: Option<u32>, 660 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-minWidth)"] 661 pub min_width: Option<u32>, 662 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-mipmapPrecisionBits)"] 663 pub mipmap_precision_bits: u32, 664 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-nonCoherentAtomSize)"] 665 pub non_coherent_atom_size: DeviceAlignment, 666 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-optimalBufferCopyOffsetAlignment)"] 667 pub optimal_buffer_copy_offset_alignment: DeviceAlignment, 668 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-optimalBufferCopyRowPitchAlignment)"] 669 pub optimal_buffer_copy_row_pitch_alignment: DeviceAlignment, 670 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html#limits-pciBus)"] 671 pub pci_bus: Option<u32>, 672 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html#limits-pciDevice)"] 673 pub pci_device: Option<u32>, 674 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html#limits-pciDomain)"] 675 pub pci_domain: Option<u32>, 676 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html#limits-pciFunction)"] 677 pub pci_function: Option<u32>, 678 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html#limits-perViewPositionAllComponents)"] 679 pub per_view_position_all_components: Option<bool>, 680 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-pipelineCacheUUID)"] 681 pub pipeline_cache_uuid: [u8; 16], 682 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-pointClippingBehavior)"] 683 pub point_clipping_behavior: Option<PointClippingBehavior>, 684 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-pointSizeGranularity)"] 685 pub point_size_granularity: f32, 686 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-pointSizeRange)"] 687 pub point_size_range: [f32; 2], 688 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-prefersCompactPrimitiveOutput)"] 689 pub prefers_compact_primitive_output: Option<bool>, 690 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-prefersCompactVertexOutput)"] 691 pub prefers_compact_vertex_output: Option<bool>, 692 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-prefersLocalInvocationPrimitiveOutput)"] 693 pub prefers_local_invocation_primitive_output: Option<bool>, 694 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html#limits-prefersLocalInvocationVertexOutput)"] 695 pub prefers_local_invocation_vertex_output: Option<bool>, 696 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html#limits-primaryMajor)"] 697 pub primary_major: Option<i64>, 698 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html#limits-primaryMinor)"] 699 pub primary_minor: Option<i64>, 700 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html#limits-primitiveFragmentShadingRateWithMultipleViewports)"] 701 pub primitive_fragment_shading_rate_with_multiple_viewports: Option<bool>, 702 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-primitiveOverestimationSize)"] 703 pub primitive_overestimation_size: Option<f32>, 704 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html#limits-primitiveUnderestimation)"] 705 pub primitive_underestimation: Option<bool>, 706 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-protectedNoFault)"] 707 pub protected_no_fault: Option<bool>, 708 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html#limits-provokingVertexModePerPipeline)"] 709 pub provoking_vertex_mode_per_pipeline: Option<bool>, 710 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-quadDivergentImplicitLod)"] 711 pub quad_divergent_implicit_lod: Option<bool>, 712 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubgroupProperties.html#limits-quadOperationsInAllStages)"] 713 pub quad_operations_in_all_stages: Option<bool>, 714 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.html#limits-rayTracingInvocationReorderReorderingHint)"] 715 pub ray_tracing_invocation_reorder_reordering_hint: Option<RayTracingInvocationReorderMode>, 716 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html#limits-renderMajor)"] 717 pub render_major: Option<i64>, 718 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDrmPropertiesEXT.html#limits-renderMinor)"] 719 pub render_minor: Option<i64>, 720 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-requiredSubgroupSizeStages)"] 721 pub required_subgroup_size_stages: Option<ShaderStages>, 722 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSparseProperties.html#limits-residencyAlignedMipSize)"] 723 pub residency_aligned_mip_size: bool, 724 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSparseProperties.html#limits-residencyNonResidentStrict)"] 725 pub residency_non_resident_strict: bool, 726 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSparseProperties.html#limits-residencyStandard2DBlockShape)"] 727 pub residency_standard2_d_block_shape: bool, 728 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSparseProperties.html#limits-residencyStandard2DMultisampleBlockShape)"] 729 pub residency_standard2_d_multisample_block_shape: bool, 730 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSparseProperties.html#limits-residencyStandard3DBlockShape)"] 731 pub residency_standard3_d_block_shape: bool, 732 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-resourceDescriptorBufferAddressSpaceSize)"] 733 pub resource_descriptor_buffer_address_space_size: Option<DeviceSize>, 734 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-robustBufferAccessUpdateAfterBind)"] 735 pub robust_buffer_access_update_after_bind: Option<bool>, 736 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html#limits-robustStorageBufferAccessSizeAlignment)"] 737 pub robust_storage_buffer_access_size_alignment: Option<DeviceAlignment>, 738 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-robustStorageBufferDescriptorSize)"] 739 pub robust_storage_buffer_descriptor_size: Option<usize>, 740 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-robustStorageTexelBufferDescriptorSize)"] 741 pub robust_storage_texel_buffer_descriptor_size: Option<usize>, 742 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRobustness2PropertiesEXT.html#limits-robustUniformBufferAccessSizeAlignment)"] 743 pub robust_uniform_buffer_access_size_alignment: Option<DeviceAlignment>, 744 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-robustUniformBufferDescriptorSize)"] 745 pub robust_uniform_buffer_descriptor_size: Option<usize>, 746 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-robustUniformTexelBufferDescriptorSize)"] 747 pub robust_uniform_texel_buffer_descriptor_size: Option<usize>, 748 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-roundingModeIndependence)"] 749 pub rounding_mode_independence: Option<ShaderFloatControlsIndependence>, 750 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html#limits-sampleLocationCoordinateRange)"] 751 pub sample_location_coordinate_range: Option<[f32; 2]>, 752 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html#limits-sampleLocationSampleCounts)"] 753 pub sample_location_sample_counts: Option<SampleCounts>, 754 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html#limits-sampleLocationSubPixelBits)"] 755 pub sample_location_sub_pixel_bits: Option<u32>, 756 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-sampledImageColorSampleCounts)"] 757 pub sampled_image_color_sample_counts: SampleCounts, 758 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-sampledImageDepthSampleCounts)"] 759 pub sampled_image_depth_sample_counts: SampleCounts, 760 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-sampledImageDescriptorSize)"] 761 pub sampled_image_descriptor_size: Option<usize>, 762 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-sampledImageIntegerSampleCounts)"] 763 pub sampled_image_integer_sample_counts: SampleCounts, 764 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-sampledImageStencilSampleCounts)"] 765 pub sampled_image_stencil_sample_counts: SampleCounts, 766 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-samplerCaptureReplayDescriptorDataSize)"] 767 pub sampler_capture_replay_descriptor_data_size: Option<usize>, 768 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-samplerDescriptorBufferAddressSpaceSize)"] 769 pub sampler_descriptor_buffer_address_space_size: Option<DeviceSize>, 770 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-samplerDescriptorSize)"] 771 pub sampler_descriptor_size: Option<usize>, 772 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-sgprAllocationGranularity)"] 773 pub sgpr_allocation_granularity: Option<u32>, 774 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-sgprsPerSimd)"] 775 pub sgprs_per_simd: Option<u32>, 776 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-shaderArraysPerEngineCount)"] 777 pub shader_arrays_per_engine_count: Option<u32>, 778 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html#limits-shaderCoreCount)"] 779 pub shader_core_count: Option<u32>, 780 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html#limits-shaderCoreFeatures)"] 781 pub shader_core_features: Option<ShaderCoreProperties>, 782 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html#limits-shaderCoreMask)"] 783 pub shader_core_mask: Option<u64>, 784 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderDenormFlushToZeroFloat16)"] 785 pub shader_denorm_flush_to_zero_float16: Option<bool>, 786 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderDenormFlushToZeroFloat32)"] 787 pub shader_denorm_flush_to_zero_float32: Option<bool>, 788 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderDenormFlushToZeroFloat64)"] 789 pub shader_denorm_flush_to_zero_float64: Option<bool>, 790 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderDenormPreserveFloat16)"] 791 pub shader_denorm_preserve_float16: Option<bool>, 792 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderDenormPreserveFloat32)"] 793 pub shader_denorm_preserve_float32: Option<bool>, 794 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderDenormPreserveFloat64)"] 795 pub shader_denorm_preserve_float64: Option<bool>, 796 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-shaderEngineCount)"] 797 pub shader_engine_count: Option<u32>, 798 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-shaderGroupBaseAlignment)"] 799 pub shader_group_base_alignment: Option<u32>, 800 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-shaderGroupHandleAlignment)"] 801 pub shader_group_handle_alignment: Option<u32>, 802 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-shaderGroupHandleCaptureReplaySize)"] 803 pub shader_group_handle_capture_replay_size: Option<u32>, 804 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html#limits-shaderGroupHandleSize)"] 805 pub shader_group_handle_size: Option<u32>, 806 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderInputAttachmentArrayNonUniformIndexingNative)"] 807 pub shader_input_attachment_array_non_uniform_indexing_native: Option<bool>, 808 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.html#limits-shaderModuleIdentifierAlgorithmUUID)"] 809 pub shader_module_identifier_algorithm_uuid: Option<[u8; 16]>, 810 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderRoundingModeRTEFloat16)"] 811 pub shader_rounding_mode_rte_float16: Option<bool>, 812 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderRoundingModeRTEFloat32)"] 813 pub shader_rounding_mode_rte_float32: Option<bool>, 814 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderRoundingModeRTEFloat64)"] 815 pub shader_rounding_mode_rte_float64: Option<bool>, 816 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderRoundingModeRTZFloat16)"] 817 pub shader_rounding_mode_rtz_float16: Option<bool>, 818 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderRoundingModeRTZFloat32)"] 819 pub shader_rounding_mode_rtz_float32: Option<bool>, 820 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderRoundingModeRTZFloat64)"] 821 pub shader_rounding_mode_rtz_float64: Option<bool>, 822 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderSampledImageArrayNonUniformIndexingNative)"] 823 pub shader_sampled_image_array_non_uniform_indexing_native: Option<bool>, 824 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderSignedZeroInfNanPreserveFloat16)"] 825 pub shader_signed_zero_inf_nan_preserve_float16: Option<bool>, 826 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderSignedZeroInfNanPreserveFloat32)"] 827 pub shader_signed_zero_inf_nan_preserve_float32: Option<bool>, 828 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderSignedZeroInfNanPreserveFloat64)"] 829 pub shader_signed_zero_inf_nan_preserve_float64: Option<bool>, 830 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html#limits-shaderSMCount)"] 831 pub shader_sm_count: Option<u32>, 832 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderStorageBufferArrayNonUniformIndexingNative)"] 833 pub shader_storage_buffer_array_non_uniform_indexing_native: Option<bool>, 834 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderStorageImageArrayNonUniformIndexingNative)"] 835 pub shader_storage_image_array_non_uniform_indexing_native: Option<bool>, 836 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-shaderUniformBufferArrayNonUniformIndexingNative)"] 837 pub shader_uniform_buffer_array_non_uniform_indexing_native: Option<bool>, 838 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html#limits-shaderWarpsPerCore)"] 839 pub shader_warps_per_core: Option<u32>, 840 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html#limits-shaderWarpsPerSM)"] 841 pub shader_warps_per_sm: Option<u32>, 842 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html#limits-shadingRateMaxCoarseSamples)"] 843 pub shading_rate_max_coarse_samples: Option<u32>, 844 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html#limits-shadingRatePaletteSize)"] 845 pub shading_rate_palette_size: Option<u32>, 846 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html#limits-shadingRateTexelSize)"] 847 pub shading_rate_texel_size: Option<[u32; 2]>, 848 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-simdPerComputeUnit)"] 849 pub simd_per_compute_unit: Option<u32>, 850 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-sparseAddressSpaceSize)"] 851 pub sparse_address_space_size: DeviceSize, 852 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-standardSampleLocations)"] 853 pub standard_sample_locations: bool, 854 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-storageBufferDescriptorSize)"] 855 pub storage_buffer_descriptor_size: Option<usize>, 856 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-storageImageDescriptorSize)"] 857 pub storage_image_descriptor_size: Option<usize>, 858 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-storageImageSampleCounts)"] 859 pub storage_image_sample_counts: SampleCounts, 860 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-storageTexelBufferDescriptorSize)"] 861 pub storage_texel_buffer_descriptor_size: Option<usize>, 862 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-storageTexelBufferOffsetAlignmentBytes)"] 863 pub storage_texel_buffer_offset_alignment_bytes: Option<DeviceAlignment>, 864 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-storageTexelBufferOffsetSingleTexelAlignment)"] 865 pub storage_texel_buffer_offset_single_texel_alignment: Option<bool>, 866 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-strictLines)"] 867 pub strict_lines: bool, 868 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-subPixelInterpolationOffsetBits)"] 869 pub sub_pixel_interpolation_offset_bits: u32, 870 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-subPixelPrecisionBits)"] 871 pub sub_pixel_precision_bits: u32, 872 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-subTexelPrecisionBits)"] 873 pub sub_texel_precision_bits: u32, 874 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-subgroupQuadOperationsInAllStages)"] 875 pub subgroup_quad_operations_in_all_stages: Option<bool>, 876 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-subgroupSize)"] 877 pub subgroup_size: Option<u32>, 878 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-subgroupSupportedOperations)"] 879 pub subgroup_supported_operations: Option<SubgroupFeatures>, 880 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan11Properties.html#limits-subgroupSupportedStages)"] 881 pub subgroup_supported_stages: Option<ShaderStages>, 882 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html#limits-subsampledCoarseReconstructionEarlyAccess)"] 883 pub subsampled_coarse_reconstruction_early_access: Option<bool>, 884 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html#limits-subsampledLoads)"] 885 pub subsampled_loads: Option<bool>, 886 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-supportedDepthResolveModes)"] 887 pub supported_depth_resolve_modes: Option<ResolveModes>, 888 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-supportedHintGridSizes)"] 889 pub supported_hint_grid_sizes: Option<OpticalFlowGridSizes>, 890 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubgroupProperties.html#limits-supportedOperations)"] 891 pub supported_operations: Option<SubgroupFeatures>, 892 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html#limits-supportedOutputGridSizes)"] 893 pub supported_output_grid_sizes: Option<OpticalFlowGridSizes>, 894 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesNV.html#limits-supportedQueues)"] 895 pub supported_queues: Option<QueueFlags>, 896 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSubgroupProperties.html#limits-supportedStages)"] 897 pub supported_stages: Option<ShaderStages>, 898 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan12Properties.html#limits-supportedStencilResolveModes)"] 899 pub supported_stencil_resolve_modes: Option<ResolveModes>, 900 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-timestampComputeAndGraphics)"] 901 pub timestamp_compute_and_graphics: bool, 902 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-timestampPeriod)"] 903 pub timestamp_period: f32, 904 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-transformFeedbackDraw)"] 905 pub transform_feedback_draw: Option<bool>, 906 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html#limits-transformFeedbackPreservesTriangleFanProvokingVertex)"] 907 pub transform_feedback_preserves_triangle_fan_provoking_vertex: Option<bool>, 908 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-transformFeedbackQueries)"] 909 pub transform_feedback_queries: Option<bool>, 910 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-transformFeedbackRasterizationStreamSelect)"] 911 pub transform_feedback_rasterization_stream_select: Option<bool>, 912 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html#limits-transformFeedbackStreamsLinesTriangles)"] 913 pub transform_feedback_streams_lines_triangles: Option<bool>, 914 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.html#limits-triStripVertexOrderIndependentOfProvokingVertex)"] 915 pub tri_strip_vertex_order_independent_of_provoking_vertex: Option<bool>, 916 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-uniformBufferDescriptorSize)"] 917 pub uniform_buffer_descriptor_size: Option<usize>, 918 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html#limits-uniformTexelBufferDescriptorSize)"] 919 pub uniform_texel_buffer_descriptor_size: Option<usize>, 920 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-uniformTexelBufferOffsetAlignmentBytes)"] 921 pub uniform_texel_buffer_offset_alignment_bytes: Option<DeviceAlignment>, 922 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceVulkan13Properties.html#limits-uniformTexelBufferOffsetSingleTexelAlignment)"] 923 pub uniform_texel_buffer_offset_single_texel_alignment: Option<bool>, 924 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html#limits-variableSampleLocations)"] 925 pub variable_sample_locations: Option<bool>, 926 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html#limits-vendorID)"] 927 pub vendor_id: u32, 928 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-vgprAllocationGranularity)"] 929 pub vgpr_allocation_granularity: Option<u32>, 930 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-vgprsPerSimd)"] 931 pub vgprs_per_simd: Option<u32>, 932 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-viewportBoundsRange)"] 933 pub viewport_bounds_range: [f32; 2], 934 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html#limits-viewportSubPixelBits)"] 935 pub viewport_sub_pixel_bits: u32, 936 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-wavefrontSize)"] 937 pub wavefront_size: Option<u32>, 938 #[doc = "- [Vulkan documentation](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html#limits-wavefrontsPerSimd)"] 939 pub wavefronts_per_simd: Option<u32>, 940 pub _ne: crate::NonExhaustive, 941 } 942 impl Default for Properties { default() -> Self943 fn default() -> Self { 944 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 (()) , } 945 } 946 } 947 impl From<&PropertiesFfi> for Properties { from(properties_ffi: &PropertiesFfi) -> Self948 fn from(properties_ffi: &PropertiesFfi) -> Self { 949 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 (()) , } 950 } 951 } 952 #[derive(Default)] 953 pub(crate) struct PropertiesFfi { 954 properties_vulkan10: ash::vk::PhysicalDeviceProperties2KHR, 955 properties_vulkan11: Option<ash::vk::PhysicalDeviceVulkan11Properties>, 956 properties_vulkan12: Option<ash::vk::PhysicalDeviceVulkan12Properties>, 957 properties_vulkan13: Option<ash::vk::PhysicalDeviceVulkan13Properties>, 958 properties_id: Option<ash::vk::PhysicalDeviceIDProperties>, 959 properties_maintenance3: Option<ash::vk::PhysicalDeviceMaintenance3Properties>, 960 properties_multiview: Option<ash::vk::PhysicalDeviceMultiviewProperties>, 961 properties_point_clipping: Option<ash::vk::PhysicalDevicePointClippingProperties>, 962 properties_protected_memory: Option<ash::vk::PhysicalDeviceProtectedMemoryProperties>, 963 properties_subgroup: Option<ash::vk::PhysicalDeviceSubgroupProperties>, 964 properties_depth_stencil_resolve: Option<ash::vk::PhysicalDeviceDepthStencilResolveProperties>, 965 properties_descriptor_indexing: Option<ash::vk::PhysicalDeviceDescriptorIndexingProperties>, 966 properties_driver: Option<ash::vk::PhysicalDeviceDriverProperties>, 967 properties_float_controls: Option<ash::vk::PhysicalDeviceFloatControlsProperties>, 968 properties_sampler_filter_minmax: Option<ash::vk::PhysicalDeviceSamplerFilterMinmaxProperties>, 969 properties_timeline_semaphore: Option<ash::vk::PhysicalDeviceTimelineSemaphoreProperties>, 970 properties_inline_uniform_block: Option<ash::vk::PhysicalDeviceInlineUniformBlockProperties>, 971 properties_maintenance4: Option<ash::vk::PhysicalDeviceMaintenance4Properties>, 972 properties_shader_integer_dot_product: 973 Option<ash::vk::PhysicalDeviceShaderIntegerDotProductProperties>, 974 properties_subgroup_size_control: Option<ash::vk::PhysicalDeviceSubgroupSizeControlProperties>, 975 properties_texel_buffer_alignment: 976 Option<ash::vk::PhysicalDeviceTexelBufferAlignmentProperties>, 977 properties_acceleration_structure_khr: 978 Option<ash::vk::PhysicalDeviceAccelerationStructurePropertiesKHR>, 979 properties_fragment_shader_barycentric_khr: 980 Option<ash::vk::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR>, 981 properties_fragment_shading_rate_khr: 982 Option<ash::vk::PhysicalDeviceFragmentShadingRatePropertiesKHR>, 983 properties_performance_query_khr: Option<ash::vk::PhysicalDevicePerformanceQueryPropertiesKHR>, 984 properties_portability_subset_khr: 985 Option<ash::vk::PhysicalDevicePortabilitySubsetPropertiesKHR>, 986 properties_push_descriptor_khr: Option<ash::vk::PhysicalDevicePushDescriptorPropertiesKHR>, 987 properties_ray_tracing_pipeline_khr: 988 Option<ash::vk::PhysicalDeviceRayTracingPipelinePropertiesKHR>, 989 properties_blend_operation_advanced_ext: 990 Option<ash::vk::PhysicalDeviceBlendOperationAdvancedPropertiesEXT>, 991 properties_conservative_rasterization_ext: 992 Option<ash::vk::PhysicalDeviceConservativeRasterizationPropertiesEXT>, 993 properties_custom_border_color_ext: 994 Option<ash::vk::PhysicalDeviceCustomBorderColorPropertiesEXT>, 995 properties_descriptor_buffer_density_map_ext: 996 Option<ash::vk::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT>, 997 properties_descriptor_buffer_ext: Option<ash::vk::PhysicalDeviceDescriptorBufferPropertiesEXT>, 998 properties_discard_rectangle_ext: Option<ash::vk::PhysicalDeviceDiscardRectanglePropertiesEXT>, 999 properties_drm_ext: Option<ash::vk::PhysicalDeviceDrmPropertiesEXT>, 1000 properties_extended_dynamic_state3_ext: 1001 Option<ash::vk::PhysicalDeviceExtendedDynamicState3PropertiesEXT>, 1002 properties_external_memory_host_ext: 1003 Option<ash::vk::PhysicalDeviceExternalMemoryHostPropertiesEXT>, 1004 properties_fragment_density_map2_ext: 1005 Option<ash::vk::PhysicalDeviceFragmentDensityMap2PropertiesEXT>, 1006 properties_fragment_density_map_ext: 1007 Option<ash::vk::PhysicalDeviceFragmentDensityMapPropertiesEXT>, 1008 properties_graphics_pipeline_library_ext: 1009 Option<ash::vk::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT>, 1010 properties_line_rasterization_ext: 1011 Option<ash::vk::PhysicalDeviceLineRasterizationPropertiesEXT>, 1012 properties_mesh_shader_ext: Option<ash::vk::PhysicalDeviceMeshShaderPropertiesEXT>, 1013 properties_multi_draw_ext: Option<ash::vk::PhysicalDeviceMultiDrawPropertiesEXT>, 1014 properties_opacity_micromap_ext: Option<ash::vk::PhysicalDeviceOpacityMicromapPropertiesEXT>, 1015 properties_pci_bus_info_ext: Option<ash::vk::PhysicalDevicePCIBusInfoPropertiesEXT>, 1016 properties_pipeline_robustness_ext: 1017 Option<ash::vk::PhysicalDevicePipelineRobustnessPropertiesEXT>, 1018 properties_provoking_vertex_ext: Option<ash::vk::PhysicalDeviceProvokingVertexPropertiesEXT>, 1019 properties_robustness2_ext: Option<ash::vk::PhysicalDeviceRobustness2PropertiesEXT>, 1020 properties_sample_locations_ext: Option<ash::vk::PhysicalDeviceSampleLocationsPropertiesEXT>, 1021 properties_shader_module_identifier_ext: 1022 Option<ash::vk::PhysicalDeviceShaderModuleIdentifierPropertiesEXT>, 1023 properties_transform_feedback_ext: 1024 Option<ash::vk::PhysicalDeviceTransformFeedbackPropertiesEXT>, 1025 properties_vertex_attribute_divisor_ext: 1026 Option<ash::vk::PhysicalDeviceVertexAttributeDivisorPropertiesEXT>, 1027 properties_cooperative_matrix_nv: Option<ash::vk::PhysicalDeviceCooperativeMatrixPropertiesNV>, 1028 properties_copy_memory_indirect_nv: 1029 Option<ash::vk::PhysicalDeviceCopyMemoryIndirectPropertiesNV>, 1030 properties_device_generated_commands_nv: 1031 Option<ash::vk::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV>, 1032 properties_fragment_density_map_offset_qcom: 1033 Option<ash::vk::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>, 1034 properties_fragment_shading_rate_enums_nv: 1035 Option<ash::vk::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV>, 1036 properties_image_processing_qcom: Option<ash::vk::PhysicalDeviceImageProcessingPropertiesQCOM>, 1037 properties_memory_decompression_nv: 1038 Option<ash::vk::PhysicalDeviceMemoryDecompressionPropertiesNV>, 1039 properties_mesh_shader_nv: Option<ash::vk::PhysicalDeviceMeshShaderPropertiesNV>, 1040 properties_multiview_per_view_attributes_nvx: 1041 Option<ash::vk::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>, 1042 properties_optical_flow_nv: Option<ash::vk::PhysicalDeviceOpticalFlowPropertiesNV>, 1043 properties_ray_tracing_invocation_reorder_nv: 1044 Option<ash::vk::PhysicalDeviceRayTracingInvocationReorderPropertiesNV>, 1045 properties_ray_tracing_nv: Option<ash::vk::PhysicalDeviceRayTracingPropertiesNV>, 1046 properties_shader_core_builtins_arm: 1047 Option<ash::vk::PhysicalDeviceShaderCoreBuiltinsPropertiesARM>, 1048 properties_shader_core2_amd: Option<ash::vk::PhysicalDeviceShaderCoreProperties2AMD>, 1049 properties_shader_core_amd: Option<ash::vk::PhysicalDeviceShaderCorePropertiesAMD>, 1050 properties_shader_sm_builtins_nv: Option<ash::vk::PhysicalDeviceShaderSMBuiltinsPropertiesNV>, 1051 properties_shading_rate_image_nv: Option<ash::vk::PhysicalDeviceShadingRateImagePropertiesNV>, 1052 properties_subpass_shading_huawei: 1053 Option<ash::vk::PhysicalDeviceSubpassShadingPropertiesHUAWEI>, 1054 } 1055 impl PropertiesFfi { make_chain( &mut self, api_version: Version, device_extensions: &DeviceExtensions, instance_extensions: &InstanceExtensions, )1056 pub(crate) fn make_chain( 1057 &mut self, 1058 api_version: Version, 1059 device_extensions: &DeviceExtensions, 1060 instance_extensions: &InstanceExtensions, 1061 ) { 1062 self.properties_vulkan10 = Default::default(); 1063 let head = &mut self.properties_vulkan10; 1064 if [api_version >= Version::V1_2].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 1065 self.properties_vulkan11 = Some(Default::default()); 1066 let member = self.properties_vulkan11.as_mut().unwrap(); 1067 member.p_next = head.p_next; 1068 head.p_next = member as *mut _ as _; 1069 } 1070 if [api_version >= Version::V1_2].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 1071 self.properties_vulkan12 = Some(Default::default()); 1072 let member = self.properties_vulkan12.as_mut().unwrap(); 1073 member.p_next = head.p_next; 1074 head.p_next = member as *mut _ as _; 1075 } 1076 if [api_version >= Version::V1_3].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 1077 self.properties_vulkan13 = Some(Default::default()); 1078 let member = self.properties_vulkan13.as_mut().unwrap(); 1079 member.p_next = head.p_next; 1080 head.p_next = member as *mut _ as _; 1081 } 1082 if [ 1083 api_version >= Version::V1_1, 1084 instance_extensions.khr_external_fence_capabilities, 1085 instance_extensions.khr_external_memory_capabilities, 1086 instance_extensions.khr_external_semaphore_capabilities, 1087 ] 1088 .into_iter() 1089 .any(|x| x) 1090 && [self.properties_vulkan11.is_none()].into_iter().all(|x| x) 1091 { 1092 self.properties_id = Some(Default::default()); 1093 let member = self.properties_id.as_mut().unwrap(); 1094 member.p_next = head.p_next; 1095 head.p_next = member as *mut _ as _; 1096 } 1097 if [ 1098 api_version >= Version::V1_1, 1099 device_extensions.khr_maintenance3, 1100 ] 1101 .into_iter() 1102 .any(|x| x) 1103 && [self.properties_vulkan11.is_none()].into_iter().all(|x| x) 1104 { 1105 self.properties_maintenance3 = Some(Default::default()); 1106 let member = self.properties_maintenance3.as_mut().unwrap(); 1107 member.p_next = head.p_next; 1108 head.p_next = member as *mut _ as _; 1109 } 1110 if [ 1111 api_version >= Version::V1_1, 1112 device_extensions.khr_multiview, 1113 ] 1114 .into_iter() 1115 .any(|x| x) 1116 && [self.properties_vulkan11.is_none()].into_iter().all(|x| x) 1117 { 1118 self.properties_multiview = Some(Default::default()); 1119 let member = self.properties_multiview.as_mut().unwrap(); 1120 member.p_next = head.p_next; 1121 head.p_next = member as *mut _ as _; 1122 } 1123 if [ 1124 api_version >= Version::V1_1, 1125 device_extensions.khr_maintenance2, 1126 ] 1127 .into_iter() 1128 .any(|x| x) 1129 && [self.properties_vulkan11.is_none()].into_iter().all(|x| x) 1130 { 1131 self.properties_point_clipping = Some(Default::default()); 1132 let member = self.properties_point_clipping.as_mut().unwrap(); 1133 member.p_next = head.p_next; 1134 head.p_next = member as *mut _ as _; 1135 } 1136 if [api_version >= Version::V1_1].into_iter().any(|x| x) 1137 && [self.properties_vulkan11.is_none()].into_iter().all(|x| x) 1138 { 1139 self.properties_protected_memory = Some(Default::default()); 1140 let member = self.properties_protected_memory.as_mut().unwrap(); 1141 member.p_next = head.p_next; 1142 head.p_next = member as *mut _ as _; 1143 } 1144 if [api_version >= Version::V1_1].into_iter().any(|x| x) 1145 && [self.properties_vulkan11.is_none()].into_iter().all(|x| x) 1146 { 1147 self.properties_subgroup = Some(Default::default()); 1148 let member = self.properties_subgroup.as_mut().unwrap(); 1149 member.p_next = head.p_next; 1150 head.p_next = member as *mut _ as _; 1151 } 1152 if [ 1153 api_version >= Version::V1_2, 1154 device_extensions.khr_depth_stencil_resolve, 1155 ] 1156 .into_iter() 1157 .any(|x| x) 1158 && [self.properties_vulkan12.is_none()].into_iter().all(|x| x) 1159 { 1160 self.properties_depth_stencil_resolve = Some(Default::default()); 1161 let member = self.properties_depth_stencil_resolve.as_mut().unwrap(); 1162 member.p_next = head.p_next; 1163 head.p_next = member as *mut _ as _; 1164 } 1165 if [ 1166 api_version >= Version::V1_2, 1167 device_extensions.ext_descriptor_indexing, 1168 ] 1169 .into_iter() 1170 .any(|x| x) 1171 && [self.properties_vulkan12.is_none()].into_iter().all(|x| x) 1172 { 1173 self.properties_descriptor_indexing = Some(Default::default()); 1174 let member = self.properties_descriptor_indexing.as_mut().unwrap(); 1175 member.p_next = head.p_next; 1176 head.p_next = member as *mut _ as _; 1177 } 1178 if [ 1179 api_version >= Version::V1_2, 1180 device_extensions.khr_driver_properties, 1181 ] 1182 .into_iter() 1183 .any(|x| x) 1184 && [self.properties_vulkan12.is_none()].into_iter().all(|x| x) 1185 { 1186 self.properties_driver = Some(Default::default()); 1187 let member = self.properties_driver.as_mut().unwrap(); 1188 member.p_next = head.p_next; 1189 head.p_next = member as *mut _ as _; 1190 } 1191 if [ 1192 api_version >= Version::V1_2, 1193 device_extensions.khr_shader_float_controls, 1194 ] 1195 .into_iter() 1196 .any(|x| x) 1197 && [self.properties_vulkan12.is_none()].into_iter().all(|x| x) 1198 { 1199 self.properties_float_controls = Some(Default::default()); 1200 let member = self.properties_float_controls.as_mut().unwrap(); 1201 member.p_next = head.p_next; 1202 head.p_next = member as *mut _ as _; 1203 } 1204 if [ 1205 api_version >= Version::V1_2, 1206 device_extensions.ext_sampler_filter_minmax, 1207 ] 1208 .into_iter() 1209 .any(|x| x) 1210 && [self.properties_vulkan12.is_none()].into_iter().all(|x| x) 1211 { 1212 self.properties_sampler_filter_minmax = Some(Default::default()); 1213 let member = self.properties_sampler_filter_minmax.as_mut().unwrap(); 1214 member.p_next = head.p_next; 1215 head.p_next = member as *mut _ as _; 1216 } 1217 if [ 1218 api_version >= Version::V1_2, 1219 device_extensions.khr_timeline_semaphore, 1220 ] 1221 .into_iter() 1222 .any(|x| x) 1223 && [self.properties_vulkan12.is_none()].into_iter().all(|x| x) 1224 { 1225 self.properties_timeline_semaphore = Some(Default::default()); 1226 let member = self.properties_timeline_semaphore.as_mut().unwrap(); 1227 member.p_next = head.p_next; 1228 head.p_next = member as *mut _ as _; 1229 } 1230 if [ 1231 api_version >= Version::V1_3, 1232 device_extensions.ext_inline_uniform_block, 1233 ] 1234 .into_iter() 1235 .any(|x| x) 1236 && [self.properties_vulkan13.is_none()].into_iter().all(|x| x) 1237 { 1238 self.properties_inline_uniform_block = Some(Default::default()); 1239 let member = self.properties_inline_uniform_block.as_mut().unwrap(); 1240 member.p_next = head.p_next; 1241 head.p_next = member as *mut _ as _; 1242 } 1243 if [ 1244 api_version >= Version::V1_3, 1245 device_extensions.khr_maintenance4, 1246 ] 1247 .into_iter() 1248 .any(|x| x) 1249 && [self.properties_vulkan13.is_none()].into_iter().all(|x| x) 1250 { 1251 self.properties_maintenance4 = Some(Default::default()); 1252 let member = self.properties_maintenance4.as_mut().unwrap(); 1253 member.p_next = head.p_next; 1254 head.p_next = member as *mut _ as _; 1255 } 1256 if [ 1257 api_version >= Version::V1_3, 1258 device_extensions.khr_shader_integer_dot_product, 1259 ] 1260 .into_iter() 1261 .any(|x| x) 1262 && [self.properties_vulkan13.is_none()].into_iter().all(|x| x) 1263 { 1264 self.properties_shader_integer_dot_product = Some(Default::default()); 1265 let member = self.properties_shader_integer_dot_product.as_mut().unwrap(); 1266 member.p_next = head.p_next; 1267 head.p_next = member as *mut _ as _; 1268 } 1269 if [ 1270 api_version >= Version::V1_3, 1271 device_extensions.ext_subgroup_size_control, 1272 ] 1273 .into_iter() 1274 .any(|x| x) 1275 && [self.properties_vulkan13.is_none()].into_iter().all(|x| x) 1276 { 1277 self.properties_subgroup_size_control = Some(Default::default()); 1278 let member = self.properties_subgroup_size_control.as_mut().unwrap(); 1279 member.p_next = head.p_next; 1280 head.p_next = member as *mut _ as _; 1281 } 1282 if [ 1283 api_version >= Version::V1_3, 1284 device_extensions.ext_texel_buffer_alignment, 1285 ] 1286 .into_iter() 1287 .any(|x| x) 1288 && [self.properties_vulkan13.is_none()].into_iter().all(|x| x) 1289 { 1290 self.properties_texel_buffer_alignment = Some(Default::default()); 1291 let member = self.properties_texel_buffer_alignment.as_mut().unwrap(); 1292 member.p_next = head.p_next; 1293 head.p_next = member as *mut _ as _; 1294 } 1295 if [device_extensions.khr_acceleration_structure] 1296 .into_iter() 1297 .any(|x| x) 1298 && [].into_iter().all(|x| x) 1299 { 1300 self.properties_acceleration_structure_khr = Some(Default::default()); 1301 let member = self.properties_acceleration_structure_khr.as_mut().unwrap(); 1302 member.p_next = head.p_next; 1303 head.p_next = member as *mut _ as _; 1304 } 1305 if [device_extensions.khr_fragment_shader_barycentric] 1306 .into_iter() 1307 .any(|x| x) 1308 && [].into_iter().all(|x| x) 1309 { 1310 self.properties_fragment_shader_barycentric_khr = Some(Default::default()); 1311 let member = self 1312 .properties_fragment_shader_barycentric_khr 1313 .as_mut() 1314 .unwrap(); 1315 member.p_next = head.p_next; 1316 head.p_next = member as *mut _ as _; 1317 } 1318 if [device_extensions.khr_fragment_shading_rate] 1319 .into_iter() 1320 .any(|x| x) 1321 && [].into_iter().all(|x| x) 1322 { 1323 self.properties_fragment_shading_rate_khr = Some(Default::default()); 1324 let member = self.properties_fragment_shading_rate_khr.as_mut().unwrap(); 1325 member.p_next = head.p_next; 1326 head.p_next = member as *mut _ as _; 1327 } 1328 if [device_extensions.khr_performance_query] 1329 .into_iter() 1330 .any(|x| x) 1331 && [].into_iter().all(|x| x) 1332 { 1333 self.properties_performance_query_khr = Some(Default::default()); 1334 let member = self.properties_performance_query_khr.as_mut().unwrap(); 1335 member.p_next = head.p_next; 1336 head.p_next = member as *mut _ as _; 1337 } 1338 if [device_extensions.khr_portability_subset] 1339 .into_iter() 1340 .any(|x| x) 1341 && [].into_iter().all(|x| x) 1342 { 1343 self.properties_portability_subset_khr = Some(Default::default()); 1344 let member = self.properties_portability_subset_khr.as_mut().unwrap(); 1345 member.p_next = head.p_next; 1346 head.p_next = member as *mut _ as _; 1347 } 1348 if [device_extensions.khr_push_descriptor] 1349 .into_iter() 1350 .any(|x| x) 1351 && [].into_iter().all(|x| x) 1352 { 1353 self.properties_push_descriptor_khr = Some(Default::default()); 1354 let member = self.properties_push_descriptor_khr.as_mut().unwrap(); 1355 member.p_next = head.p_next; 1356 head.p_next = member as *mut _ as _; 1357 } 1358 if [device_extensions.khr_ray_tracing_pipeline] 1359 .into_iter() 1360 .any(|x| x) 1361 && [].into_iter().all(|x| x) 1362 { 1363 self.properties_ray_tracing_pipeline_khr = Some(Default::default()); 1364 let member = self.properties_ray_tracing_pipeline_khr.as_mut().unwrap(); 1365 member.p_next = head.p_next; 1366 head.p_next = member as *mut _ as _; 1367 } 1368 if [device_extensions.ext_blend_operation_advanced] 1369 .into_iter() 1370 .any(|x| x) 1371 && [].into_iter().all(|x| x) 1372 { 1373 self.properties_blend_operation_advanced_ext = Some(Default::default()); 1374 let member = self 1375 .properties_blend_operation_advanced_ext 1376 .as_mut() 1377 .unwrap(); 1378 member.p_next = head.p_next; 1379 head.p_next = member as *mut _ as _; 1380 } 1381 if [device_extensions.ext_conservative_rasterization] 1382 .into_iter() 1383 .any(|x| x) 1384 && [].into_iter().all(|x| x) 1385 { 1386 self.properties_conservative_rasterization_ext = Some(Default::default()); 1387 let member = self 1388 .properties_conservative_rasterization_ext 1389 .as_mut() 1390 .unwrap(); 1391 member.p_next = head.p_next; 1392 head.p_next = member as *mut _ as _; 1393 } 1394 if [device_extensions.ext_custom_border_color] 1395 .into_iter() 1396 .any(|x| x) 1397 && [].into_iter().all(|x| x) 1398 { 1399 self.properties_custom_border_color_ext = Some(Default::default()); 1400 let member = self.properties_custom_border_color_ext.as_mut().unwrap(); 1401 member.p_next = head.p_next; 1402 head.p_next = member as *mut _ as _; 1403 } 1404 if [device_extensions.ext_descriptor_buffer] 1405 .into_iter() 1406 .any(|x| x) 1407 && [].into_iter().all(|x| x) 1408 { 1409 self.properties_descriptor_buffer_density_map_ext = Some(Default::default()); 1410 let member = self 1411 .properties_descriptor_buffer_density_map_ext 1412 .as_mut() 1413 .unwrap(); 1414 member.p_next = head.p_next; 1415 head.p_next = member as *mut _ as _; 1416 } 1417 if [device_extensions.ext_descriptor_buffer] 1418 .into_iter() 1419 .any(|x| x) 1420 && [].into_iter().all(|x| x) 1421 { 1422 self.properties_descriptor_buffer_ext = Some(Default::default()); 1423 let member = self.properties_descriptor_buffer_ext.as_mut().unwrap(); 1424 member.p_next = head.p_next; 1425 head.p_next = member as *mut _ as _; 1426 } 1427 if [device_extensions.ext_discard_rectangles] 1428 .into_iter() 1429 .any(|x| x) 1430 && [].into_iter().all(|x| x) 1431 { 1432 self.properties_discard_rectangle_ext = Some(Default::default()); 1433 let member = self.properties_discard_rectangle_ext.as_mut().unwrap(); 1434 member.p_next = head.p_next; 1435 head.p_next = member as *mut _ as _; 1436 } 1437 if [device_extensions.ext_physical_device_drm] 1438 .into_iter() 1439 .any(|x| x) 1440 && [].into_iter().all(|x| x) 1441 { 1442 self.properties_drm_ext = Some(Default::default()); 1443 let member = self.properties_drm_ext.as_mut().unwrap(); 1444 member.p_next = head.p_next; 1445 head.p_next = member as *mut _ as _; 1446 } 1447 if [device_extensions.ext_extended_dynamic_state3] 1448 .into_iter() 1449 .any(|x| x) 1450 && [].into_iter().all(|x| x) 1451 { 1452 self.properties_extended_dynamic_state3_ext = Some(Default::default()); 1453 let member = self 1454 .properties_extended_dynamic_state3_ext 1455 .as_mut() 1456 .unwrap(); 1457 member.p_next = head.p_next; 1458 head.p_next = member as *mut _ as _; 1459 } 1460 if [device_extensions.ext_external_memory_host] 1461 .into_iter() 1462 .any(|x| x) 1463 && [].into_iter().all(|x| x) 1464 { 1465 self.properties_external_memory_host_ext = Some(Default::default()); 1466 let member = self.properties_external_memory_host_ext.as_mut().unwrap(); 1467 member.p_next = head.p_next; 1468 head.p_next = member as *mut _ as _; 1469 } 1470 if [device_extensions.ext_fragment_density_map2] 1471 .into_iter() 1472 .any(|x| x) 1473 && [].into_iter().all(|x| x) 1474 { 1475 self.properties_fragment_density_map2_ext = Some(Default::default()); 1476 let member = self.properties_fragment_density_map2_ext.as_mut().unwrap(); 1477 member.p_next = head.p_next; 1478 head.p_next = member as *mut _ as _; 1479 } 1480 if [device_extensions.ext_fragment_density_map] 1481 .into_iter() 1482 .any(|x| x) 1483 && [].into_iter().all(|x| x) 1484 { 1485 self.properties_fragment_density_map_ext = Some(Default::default()); 1486 let member = self.properties_fragment_density_map_ext.as_mut().unwrap(); 1487 member.p_next = head.p_next; 1488 head.p_next = member as *mut _ as _; 1489 } 1490 if [device_extensions.ext_graphics_pipeline_library] 1491 .into_iter() 1492 .any(|x| x) 1493 && [].into_iter().all(|x| x) 1494 { 1495 self.properties_graphics_pipeline_library_ext = Some(Default::default()); 1496 let member = self 1497 .properties_graphics_pipeline_library_ext 1498 .as_mut() 1499 .unwrap(); 1500 member.p_next = head.p_next; 1501 head.p_next = member as *mut _ as _; 1502 } 1503 if [device_extensions.ext_line_rasterization] 1504 .into_iter() 1505 .any(|x| x) 1506 && [].into_iter().all(|x| x) 1507 { 1508 self.properties_line_rasterization_ext = Some(Default::default()); 1509 let member = self.properties_line_rasterization_ext.as_mut().unwrap(); 1510 member.p_next = head.p_next; 1511 head.p_next = member as *mut _ as _; 1512 } 1513 if [device_extensions.ext_mesh_shader].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 1514 self.properties_mesh_shader_ext = Some(Default::default()); 1515 let member = self.properties_mesh_shader_ext.as_mut().unwrap(); 1516 member.p_next = head.p_next; 1517 head.p_next = member as *mut _ as _; 1518 } 1519 if [device_extensions.ext_multi_draw].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 1520 self.properties_multi_draw_ext = Some(Default::default()); 1521 let member = self.properties_multi_draw_ext.as_mut().unwrap(); 1522 member.p_next = head.p_next; 1523 head.p_next = member as *mut _ as _; 1524 } 1525 if [device_extensions.ext_opacity_micromap] 1526 .into_iter() 1527 .any(|x| x) 1528 && [].into_iter().all(|x| x) 1529 { 1530 self.properties_opacity_micromap_ext = Some(Default::default()); 1531 let member = self.properties_opacity_micromap_ext.as_mut().unwrap(); 1532 member.p_next = head.p_next; 1533 head.p_next = member as *mut _ as _; 1534 } 1535 if [device_extensions.ext_pci_bus_info].into_iter().any(|x| x) && [].into_iter().all(|x| x) 1536 { 1537 self.properties_pci_bus_info_ext = Some(Default::default()); 1538 let member = self.properties_pci_bus_info_ext.as_mut().unwrap(); 1539 member.p_next = head.p_next; 1540 head.p_next = member as *mut _ as _; 1541 } 1542 if [device_extensions.ext_pipeline_robustness] 1543 .into_iter() 1544 .any(|x| x) 1545 && [].into_iter().all(|x| x) 1546 { 1547 self.properties_pipeline_robustness_ext = Some(Default::default()); 1548 let member = self.properties_pipeline_robustness_ext.as_mut().unwrap(); 1549 member.p_next = head.p_next; 1550 head.p_next = member as *mut _ as _; 1551 } 1552 if [device_extensions.ext_provoking_vertex] 1553 .into_iter() 1554 .any(|x| x) 1555 && [].into_iter().all(|x| x) 1556 { 1557 self.properties_provoking_vertex_ext = Some(Default::default()); 1558 let member = self.properties_provoking_vertex_ext.as_mut().unwrap(); 1559 member.p_next = head.p_next; 1560 head.p_next = member as *mut _ as _; 1561 } 1562 if [device_extensions.ext_robustness2].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 1563 self.properties_robustness2_ext = Some(Default::default()); 1564 let member = self.properties_robustness2_ext.as_mut().unwrap(); 1565 member.p_next = head.p_next; 1566 head.p_next = member as *mut _ as _; 1567 } 1568 if [device_extensions.ext_sample_locations] 1569 .into_iter() 1570 .any(|x| x) 1571 && [].into_iter().all(|x| x) 1572 { 1573 self.properties_sample_locations_ext = Some(Default::default()); 1574 let member = self.properties_sample_locations_ext.as_mut().unwrap(); 1575 member.p_next = head.p_next; 1576 head.p_next = member as *mut _ as _; 1577 } 1578 if [device_extensions.ext_shader_module_identifier] 1579 .into_iter() 1580 .any(|x| x) 1581 && [].into_iter().all(|x| x) 1582 { 1583 self.properties_shader_module_identifier_ext = Some(Default::default()); 1584 let member = self 1585 .properties_shader_module_identifier_ext 1586 .as_mut() 1587 .unwrap(); 1588 member.p_next = head.p_next; 1589 head.p_next = member as *mut _ as _; 1590 } 1591 if [device_extensions.ext_transform_feedback] 1592 .into_iter() 1593 .any(|x| x) 1594 && [].into_iter().all(|x| x) 1595 { 1596 self.properties_transform_feedback_ext = Some(Default::default()); 1597 let member = self.properties_transform_feedback_ext.as_mut().unwrap(); 1598 member.p_next = head.p_next; 1599 head.p_next = member as *mut _ as _; 1600 } 1601 if [device_extensions.ext_vertex_attribute_divisor] 1602 .into_iter() 1603 .any(|x| x) 1604 && [].into_iter().all(|x| x) 1605 { 1606 self.properties_vertex_attribute_divisor_ext = Some(Default::default()); 1607 let member = self 1608 .properties_vertex_attribute_divisor_ext 1609 .as_mut() 1610 .unwrap(); 1611 member.p_next = head.p_next; 1612 head.p_next = member as *mut _ as _; 1613 } 1614 if [device_extensions.nv_cooperative_matrix] 1615 .into_iter() 1616 .any(|x| x) 1617 && [].into_iter().all(|x| x) 1618 { 1619 self.properties_cooperative_matrix_nv = Some(Default::default()); 1620 let member = self.properties_cooperative_matrix_nv.as_mut().unwrap(); 1621 member.p_next = head.p_next; 1622 head.p_next = member as *mut _ as _; 1623 } 1624 if [device_extensions.nv_copy_memory_indirect] 1625 .into_iter() 1626 .any(|x| x) 1627 && [].into_iter().all(|x| x) 1628 { 1629 self.properties_copy_memory_indirect_nv = Some(Default::default()); 1630 let member = self.properties_copy_memory_indirect_nv.as_mut().unwrap(); 1631 member.p_next = head.p_next; 1632 head.p_next = member as *mut _ as _; 1633 } 1634 if [device_extensions.nv_device_generated_commands] 1635 .into_iter() 1636 .any(|x| x) 1637 && [].into_iter().all(|x| x) 1638 { 1639 self.properties_device_generated_commands_nv = Some(Default::default()); 1640 let member = self 1641 .properties_device_generated_commands_nv 1642 .as_mut() 1643 .unwrap(); 1644 member.p_next = head.p_next; 1645 head.p_next = member as *mut _ as _; 1646 } 1647 if [device_extensions.qcom_fragment_density_map_offset] 1648 .into_iter() 1649 .any(|x| x) 1650 && [].into_iter().all(|x| x) 1651 { 1652 self.properties_fragment_density_map_offset_qcom = Some(Default::default()); 1653 let member = self 1654 .properties_fragment_density_map_offset_qcom 1655 .as_mut() 1656 .unwrap(); 1657 member.p_next = head.p_next; 1658 head.p_next = member as *mut _ as _; 1659 } 1660 if [device_extensions.nv_fragment_shading_rate_enums] 1661 .into_iter() 1662 .any(|x| x) 1663 && [].into_iter().all(|x| x) 1664 { 1665 self.properties_fragment_shading_rate_enums_nv = Some(Default::default()); 1666 let member = self 1667 .properties_fragment_shading_rate_enums_nv 1668 .as_mut() 1669 .unwrap(); 1670 member.p_next = head.p_next; 1671 head.p_next = member as *mut _ as _; 1672 } 1673 if [device_extensions.qcom_image_processing] 1674 .into_iter() 1675 .any(|x| x) 1676 && [].into_iter().all(|x| x) 1677 { 1678 self.properties_image_processing_qcom = Some(Default::default()); 1679 let member = self.properties_image_processing_qcom.as_mut().unwrap(); 1680 member.p_next = head.p_next; 1681 head.p_next = member as *mut _ as _; 1682 } 1683 if [device_extensions.nv_memory_decompression] 1684 .into_iter() 1685 .any(|x| x) 1686 && [].into_iter().all(|x| x) 1687 { 1688 self.properties_memory_decompression_nv = Some(Default::default()); 1689 let member = self.properties_memory_decompression_nv.as_mut().unwrap(); 1690 member.p_next = head.p_next; 1691 head.p_next = member as *mut _ as _; 1692 } 1693 if [device_extensions.nv_mesh_shader].into_iter().any(|x| x) 1694 && [self.properties_mesh_shader_ext.is_none()] 1695 .into_iter() 1696 .all(|x| x) 1697 { 1698 self.properties_mesh_shader_nv = Some(Default::default()); 1699 let member = self.properties_mesh_shader_nv.as_mut().unwrap(); 1700 member.p_next = head.p_next; 1701 head.p_next = member as *mut _ as _; 1702 } 1703 if [device_extensions.nvx_multiview_per_view_attributes] 1704 .into_iter() 1705 .any(|x| x) 1706 && [].into_iter().all(|x| x) 1707 { 1708 self.properties_multiview_per_view_attributes_nvx = Some(Default::default()); 1709 let member = self 1710 .properties_multiview_per_view_attributes_nvx 1711 .as_mut() 1712 .unwrap(); 1713 member.p_next = head.p_next; 1714 head.p_next = member as *mut _ as _; 1715 } 1716 if [device_extensions.nv_optical_flow].into_iter().any(|x| x) && [].into_iter().all(|x| x) { 1717 self.properties_optical_flow_nv = Some(Default::default()); 1718 let member = self.properties_optical_flow_nv.as_mut().unwrap(); 1719 member.p_next = head.p_next; 1720 head.p_next = member as *mut _ as _; 1721 } 1722 if [device_extensions.nv_ray_tracing_invocation_reorder] 1723 .into_iter() 1724 .any(|x| x) 1725 && [].into_iter().all(|x| x) 1726 { 1727 self.properties_ray_tracing_invocation_reorder_nv = Some(Default::default()); 1728 let member = self 1729 .properties_ray_tracing_invocation_reorder_nv 1730 .as_mut() 1731 .unwrap(); 1732 member.p_next = head.p_next; 1733 head.p_next = member as *mut _ as _; 1734 } 1735 if [device_extensions.nv_ray_tracing].into_iter().any(|x| x) 1736 && [ 1737 self.properties_ray_tracing_pipeline_khr.is_none(), 1738 self.properties_acceleration_structure_khr.is_none(), 1739 ] 1740 .into_iter() 1741 .all(|x| x) 1742 { 1743 self.properties_ray_tracing_nv = Some(Default::default()); 1744 let member = self.properties_ray_tracing_nv.as_mut().unwrap(); 1745 member.p_next = head.p_next; 1746 head.p_next = member as *mut _ as _; 1747 } 1748 if [device_extensions.arm_shader_core_builtins] 1749 .into_iter() 1750 .any(|x| x) 1751 && [].into_iter().all(|x| x) 1752 { 1753 self.properties_shader_core_builtins_arm = Some(Default::default()); 1754 let member = self.properties_shader_core_builtins_arm.as_mut().unwrap(); 1755 member.p_next = head.p_next; 1756 head.p_next = member as *mut _ as _; 1757 } 1758 if [device_extensions.amd_shader_core_properties2] 1759 .into_iter() 1760 .any(|x| x) 1761 && [].into_iter().all(|x| x) 1762 { 1763 self.properties_shader_core2_amd = Some(Default::default()); 1764 let member = self.properties_shader_core2_amd.as_mut().unwrap(); 1765 member.p_next = head.p_next; 1766 head.p_next = member as *mut _ as _; 1767 } 1768 if [device_extensions.amd_shader_core_properties] 1769 .into_iter() 1770 .any(|x| x) 1771 && [].into_iter().all(|x| x) 1772 { 1773 self.properties_shader_core_amd = Some(Default::default()); 1774 let member = self.properties_shader_core_amd.as_mut().unwrap(); 1775 member.p_next = head.p_next; 1776 head.p_next = member as *mut _ as _; 1777 } 1778 if [device_extensions.nv_shader_sm_builtins] 1779 .into_iter() 1780 .any(|x| x) 1781 && [].into_iter().all(|x| x) 1782 { 1783 self.properties_shader_sm_builtins_nv = Some(Default::default()); 1784 let member = self.properties_shader_sm_builtins_nv.as_mut().unwrap(); 1785 member.p_next = head.p_next; 1786 head.p_next = member as *mut _ as _; 1787 } 1788 if [device_extensions.nv_shading_rate_image] 1789 .into_iter() 1790 .any(|x| x) 1791 && [].into_iter().all(|x| x) 1792 { 1793 self.properties_shading_rate_image_nv = Some(Default::default()); 1794 let member = self.properties_shading_rate_image_nv.as_mut().unwrap(); 1795 member.p_next = head.p_next; 1796 head.p_next = member as *mut _ as _; 1797 } 1798 if [device_extensions.huawei_subpass_shading] 1799 .into_iter() 1800 .any(|x| x) 1801 && [].into_iter().all(|x| x) 1802 { 1803 self.properties_subpass_shading_huawei = Some(Default::default()); 1804 let member = self.properties_subpass_shading_huawei.as_mut().unwrap(); 1805 member.p_next = head.p_next; 1806 head.p_next = member as *mut _ as _; 1807 } 1808 } head_as_mut(&mut self) -> &mut ash::vk::PhysicalDeviceProperties2KHR1809 pub(crate) fn head_as_mut(&mut self) -> &mut ash::vk::PhysicalDeviceProperties2KHR { 1810 &mut self.properties_vulkan10 1811 } 1812 } 1813