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